Управление согласием в Prebid.js: руководство по настройке header bidding для паблишеров
Header bidding повышает CPM паблишера, позволяя партнёрам по спросу конкурировать параллельно — но каждому из этих партнёров нужен действительный сигнал согласия, прежде чем он сможет установить cookie, снять отпечаток или запустить пиксель. Prebid.js, де-факто открытая обёртка для header bidding, используемая десятками тысяч сайтов, поставляется с модулем управления согласием (Consent Management), который встраивает вашу CMP в каждый аукцион. Настройте его неправильно — и вы либо утечёте данные без согласия (регуляторный риск), либо лишите участников торгов нужного им сигнала (риск дохода). Это руководство проводит паблишеров через настройку производственного уровня.
Зачем Prebid.js нужен модуль управления согласием
Когда запускается аукцион Prebid.js, обёртка делает параллельные запросы к каждому настроенному адаптеру участника торгов. Каждый адаптер должен включать строку согласия пользователя в свой запрос ставки — tcfeu (TCF v2.2 для ЕС/Великобритании), usp (CCPA/CPRA) и всё чаще gpp (строка IAB Global Privacy Platform, охватывающая несколько штатов США). Без этих сигналов нижестоящие SSP и DSP вынуждены либо рассматривать пользователя как отказавшегося, либо полностью отбрасывать ставку, либо — в худшем случае — обрабатывать данные незаконно.
Модуль управления согласием Prebid находится между вашей CMP и конвейером запросов ставок. Он вызывает стандартный API CMP (__tcfapi, __uspapi, __gppapi), ждёт строку согласия, а затем автоматически вставляет её в полезную нагрузку запроса ставки каждого адаптера. Он также принуждает к гейтингу на основе целей, когда вы включаете принуждение GDPR, блокируя доступ к хранилищу и выполнение участника торгов для пользователей, не предоставивших соответствующие цели TCF.
Установка и настройка основного модуля
Prebid.js собирается для каждого паблишера на docs.prebid.org/download.html. Когда вы генерируете свою пользовательскую сборку, важны три модуля в разделе «Consent Management»:
- consentManagementTcf — обрабатывает строки TCF v2.2 для трафика ЕС, Великобритании и Швейцарии.
- consentManagementUsp — обрабатывает более старую US Privacy String CCPA/CPRA (всё ещё требуется многими DSP).
- consentManagementGpp — обрабатывает строку IAB GPP, перспективный стандарт, теперь обязательный для Google, TTD и крупных SSP.
Включите все три, если обслуживаете глобальный трафик. Как только сборка попадёт на ваш CDN, настройте модули в вашем скрипте настройки Prebid:
Настройка TCF v2.2
Блок TCF сообщает Prebid, какой API CMP вызывать, как долго ждать строку и что делать при тайм-ауте. Типичная производственная конфигурация устанавливает cmpApi: 'iab', timeout: 8000 (8 секунд — достаточно долго для загрузки баннера медленной CMP) и defaultGdprScope: true, чтобы пользователи в неизвестных юрисдикциях рассматривались как входящие в сферу действия, пока не доказано обратное. Отдельная установка actionTimeout контролирует, как долго Prebid ждёт, когда пользователь ещё не взаимодействовал с баннером — сохранение его умеренным позволяет избежать пустого рекламного слота, если посетитель игнорирует баннер.
US Privacy и GPP
USP прост: включите модуль, и Prebid читает четырёхсимвольную строку из __uspapi. GPP более тонок, потому что строка GPP может нести несколько идентификаторов разделов (TCF EU, US National, US California, US Colorado, US Virginia и т. д.). Prebid автоматически пересылает полную строку, но участники торгов проверяют конкретные разделы. Убедитесь, что ваша CMP выдаёт правильные разделы GPP для юрисдикции каждого пользователя — неправильно настроенная CMP, которая выдаёт только раздел US National калифорнийскому пользователю, заставит соответствующие CPRA DSP отбросить ставку.
Включение принуждения GDPR (гейтинг на основе целей)
По умолчанию модуль согласия пропускает строку TCF, но ничего не блокирует. Чтобы Prebid действительно принуждал к целям TCF, включите набор правил gdprEnforcement. Именно здесь происходит большинство ошибок настройки — и именно здесь живёт разница между соответствующим и несоответствующим стеком header bidding.
Стандартный набор правил блокирует четыре активности, когда соответствующая цель не имеет согласия:
- storage — привязано к Цели 1 (хранение и доступ). При отказе Prebid не позволяет участникам торгов читать или записывать cookie и localStorage.
- basicAds — привязано к Цели 2 (базовая реклама). При отказе участник торгов полностью исключается из аукциона.
- measurement — привязано к Цели 7. Влияет на адаптеры аналитики.
- transmitPreciseGeo — привязано к Специальной функции 1. При отказе Prebid удаляет точную геолокацию из запросов ставок.
Для каждого правила вы устанавливаете enforcePurpose: true, enforceVendor: true и список vendorExceptions. Список исключений вендоров критически важен: любому участнику торгов, который вы там перечислите, разрешено участвовать даже без явного согласия вендора TCF на том основании, что у вас есть отдельное правовое основание (например, законный интерес в сочетании с договорным потоком). Используйте это экономно — чрезмерно широкие исключения — это именно тот паттерн, за который регуляторы начали штрафовать паблишеров.
Распространённые ловушки, которые стоят паблишерам дохода или соответствия
Слишком низкий тайм-аут
Если timeout короче времени отрисовки баннера вашей CMP, Prebid продолжает без строки согласия. Участники торгов рассматривают это как отсутствие согласия и отбрасывают ставку. Измерьте задержку первого вызова tcfapi('addEventListener') вашей CMP на 95-м перцентиле и установите тайм-аут Prebid выше неё. 8000 мс — безопасное значение по умолчанию; 3000 мс рискованно, если вы обслуживаете рынки, где баннерам требуется время на локализацию.
Отсутствие интеграции GPP на трафике США
Крупные SSP и DSP (Google AdX, TTD, Magnite, PubMatic) теперь требуют строку GPP для принуждения отказа в США. Если вы выдаёте только устаревшую строку USP, эти DSP будут всё чаще понижать или пропускать ваш инвентарь. Проверьте свои ответы на ставки: резкое падение CPM на трафике США в 2026 году часто является сигналом отсутствия GPP.
Устаревшие строки согласия при навигации SPA
Одностраничные приложения, которые повторно запускают аукционы Prebid при изменении маршрута, должны вызывать pbjs.refreshUserIds() и обеспечивать получение последней строки TCF. Кешированная 30-минутная строка может нести предпочтения предыдущего пользователя, если ваш сайт использует общие сессии.
Отсутствие vendorExceptions для аналитики
Паблишеры часто забывают, что адаптеры Prebid Analytics (Google Analytics, серверная отчётность) также подлежат гейтингу measurement по Цели 7 TCF. Если вы полагаетесь на них для отчётности о доходах, явно перечислите их в исключениях вендоров правила measurement или примите пробел в данных на трафике без согласия.
Тестирование вашей настройки перед запуском в продакшен
Prebid.js предоставляет pbjs.getConfig('consentManagement') в консоли браузера. Убедитесь, что активная конфигурация соответствует вашему замыслу. Затем используйте расширение Chrome Prebid.js Professor или pbjs.getEvents(), чтобы проверить строку согласия, прикреплённую к каждому запросу ставки. Проверьте три сценария: полностью согласившийся пользователь, пользователь, который нажал «Отклонить все», и пользователь, который закрыл баннер без взаимодействия. Каждый должен производить разное наблюдаемое поведение в полезной нагрузке запроса ставки.
Проведите те же проверки в разных географиях, используя VPN или флаг переопределения геолокации вашей CMP. Трафик ЕС должен производить строку TCF и запускать gdprEnforcement; калифорнийский трафик должен производить строку USP и GPP; юрисдикционно-неизвестный трафик должен учитывать вашу настройку defaultGdprScope.
Собираем всё вместе
Правильно настроенный стек управления согласием Prebid делает три вещи одновременно: он держит ваших участников торгов снабжёнными действительными сигналами согласия (сохраняя CPM), он принуждает к правилам TCF и отказа США на уровне обёртки (снижая регуляторную подверженность) и он даёт вам единую точку аудита, когда регулятор спрашивает, как ваша настройка header bidding учитывает выбор пользователя. Найдите время, чтобы установить тайм-ауты осознанно, включите GPP наряду с USP для трафика США и пересматривайте свой список vendorExceptions ежеквартально — цена ошибки здесь измеряется как в штрафах, так и в потерянном программатик-доходе.