Обзор библиотеки Header Bidding от «Яндекса»

Обзор библиотеки Header Bidding от «Яндекса»

Header Bidding (HB) — технология, позволяющая издателям максимизировать доход через проведение конкурентных аукционов между SSP и DSP в реальном времени. «Яндекс» создал собственную закрытую реализацию Header Bidding (header-bidding.js) с внутренними механизмами, которые не раскрываются публично. Система глубоко интегрирована с AdFox и другими сервисами «Яндекса», при этом поддерживает работу с внешними SSP.

Данный анализ основан на публично доступном коде библиотеки Header Bidding от «Яндекса», который загружается в браузеры пользователей и доступен для изучения через инструменты разработчика. Вся информация получена исключительно из открытых источников и не содержит конфиденциальных или внутренних данных компании «Яндекс».

Я не являюсь профессиональным разработчиком, поэтому данный материал не следует рассматривать как руководство к действию или техническую документацию. Описание механизмов работы библиотеки основано на наблюдениях и анализе доступного кода — возможны неточности. Автор не несёт ответственности за возможные ошибки и действия, предпринятые на основе данной информации.

Материал получился объёмным, но я планирую раскрыть эту тему ещё подробнее в будущих публикациях.

Архитектура

«Яндекс» реализовал библиотеку HB как модульную систему со следующими компонентами:

  • Конфигуратор аукциона YaHeaderBiddingSettings — отвечает за хранение настроек рекламных блоков, SSP и таймаутов.
  • Механизм конкурентных ставок callBids — управляет запросами к SSP и обработкой их ответов.
  • Адаптеры для SSP — специализированные модули для взаимодействия с различными рекламными платформами (SSP).
  • Механизм обработки ставок resolveBids — аккумулирует ставки, определяет победителя и передаёт данные в рекламный блок.
  • Подсистема логирования и отладки — обеспечивает отслеживание ошибок и диагностику проблем.
  • Cookie Matching — обеспечивает синхронизацию идентификаторов пользователей между платформами.
Судный день рекламы

Конфигурация

Скрипт Header Bidding инициализируется через глобальный объект YaHeaderBiddingSettings, который содержит следующие основные настройки:

  • Ad Units — описание рекламных блоков и связанных с ними SSP.
  • Bidders Map — таблица соответствия адаптеров и их конфигураций.
  • Таймауты — ограничения по времени выполнения запросов.
  • Callbacks — механизмы обработки результатов.

Сбор ставок

Функция callBids() — ключевой компонент механики аукциона. Она управляет запросами к SSP и обработкой ставок, выполняя следующие действия:

  1. Отправляет HTTP-запросы ко всем SSP.
  2. Через fetchBids() получает ответы (CPM, креатив, идентификатор и метаданные от каждой SSP).
  3. Собирает все ставки в массив с помощью getBidsReceived() и getLastBidsReceived().

Выбор победителя

Затем собранные данные передаются на серверную часть AdFox (этим управляет объект managerForAdfox, из-за чего ставки «Яндекса» остаются скрытыми. По сути, managerForAdfox работает как «черный ящик» — AdFox получает через него всю информацию и может влиять на выбор победителя по своим внутренним критериям. После обработки AdFox отправляет обратно на клиент информацию о победителе аукциона.

Рендеринг объявлений

  1. Если выигрывает AdFox → ставка отправляется обратно в AdFox, где реклама загружается через его скрипты.
  2. Если выигрывает сторонний SSP → реклама вставляется в контейнер через iframe или JavaScript.
Черный рынок идентификаторов

Cookie Matching

Механизм Cookie Matching в Header Bidding «Яндекса» идентифицирует пользователей для точного таргетинга рекламы. Cookie Matching выполняется до начала аукциона: при загрузке страницы браузер отправляет запрос к https://matchid.adfox.yandex.ru/getcookie, где AdFox проверяет наличие уникального идентификатора (например, yandexuid, cryptouid). Эти идентификаторы передаются в SSP для повышения CPM и персонализации рекламы.

Интеграция с другими сервисами «Яндекса»

Библиотека Header Bidding интегрируется с сервисами «Яндекса» в единую рекламную экосистему:

  • AdFox — центральный компонент системы, управляющий аукционами, агрегирующий ставки и распределяющий трафик между SSP.
  • Яндекс.Метрика — собирает пользовательские данные и оценивает эффективность рекламных показов через параметры запросов и Cookie Matching.
  • Яндекс.Директ — кажется, что в коде есть взаимодействие с сервисом, но для чего это делается не совсем понятно.
  • Яндекс.Крипта — анализирует аудиторные данные для оптимизации таргетинга и персонализации рекламы. Здесь также подробности интеграции не очевидны, но присутствуют в явном виде cryptouid
  • Яндекс ID и Cookie Matching — синхронизирует идентификаторы пользователей между рекламными системами «Яндекса» для улучшения кросс-платформенного таргетинга.

SSP-платформы, упоминаемые в коде библиотеки (на февраль 2025 года в алфавитном порядке):

А посмотреть долю этих адаптеров на российском рынке можно в HBTracker Battleboard

Бессмертный алгоритм

Выводы

На клиентской стороне библиотека Header Bidding от «Яндекса» обеспечивает прозрачный аукцион, где победитель определяется исключительно по максимальному CPM без манипуляций со ставками и преференций отдельным SSP. Клиентский код не содержит механизмов искусственного занижения ставок или подмены победителя. Однако финальная обработка ставок происходит на серверной стороне через интеграцию с AdFox, где возможны дополнительные корректировки, не отраженные в клиентском коде.