Resumen de la Biblioteca de Header Bidding de Yandex

Resumen de la Biblioteca de Header Bidding de Yandex

Header Bidding (HB) es una tecnología que permite a los editores maximizar sus ingresos mediante la realización de subastas competitivas entre SSP y DSP en tiempo real. "Yandex" ha creado su propia implementación cerrada de Header Bidding (header-bidding.js) con mecanismos internos que no se revelan públicamente. El sistema está profundamente integrado con AdFox y otros servicios de "Yandex", y al mismo tiempo admite la interacción con SSP externas.

Este análisis se basa en el código público de la biblioteca de Header Bidding de "Yandex", que se carga en los navegadores de los usuarios y está disponible para su estudio a través de herramientas para desarrolladores. Toda la información se obtuvo exclusivamente de fuentes abiertas y no contiene datos confidenciales o internos de "Yandex".

No soy un desarrollador profesional, por lo que este material no debe considerarse como una guía de implementación o documentación técnica. La descripción de los mecanismos de la biblioteca se basa en observaciones y análisis del código disponible, por lo que pueden existir imprecisiones. El autor no se hace responsable de posibles errores o acciones derivadas del uso de esta información.

El material resultó ser extenso, pero planeo profundizar aún más en este tema en futuras publicaciones.

Arquitectura

"Yandex" ha implementado la biblioteca de HB como un sistema modular con los siguientes componentes:

  • Configurador de subastas YaHeaderBiddingSettings: almacena la configuración de los bloques de anuncios, SSP y tiempos de espera.
  • Mecanismo de ofertas competitivas callBids: gestiona las solicitudes a las SSP y el procesamiento de sus respuestas.
  • Adaptadores para SSP: módulos especializados para la interacción con diversas plataformas publicitarias (SSP).
  • Mecanismo de procesamiento de ofertas resolveBids: recopila las ofertas, determina el ganador y transmite los datos al bloque publicitario.
  • Subsistema de registro y depuración: permite rastrear errores y diagnosticar problemas.
  • Coincidencia de cookies (Cookie Matching): sincroniza los identificadores de usuario entre plataformas.
El juicio final de la publicidad

Configuración

El script Header Bidding se inicializa a través del objeto global YaHeaderBiddingSettings, que contiene las siguientes configuraciones clave:

  • Unidades de anuncios (Ad Units) — descripción de los bloques de anuncios y sus SSP asociadas.
  • Mapa de postores (Bidders Map) — tabla de correspondencia entre adaptadores y sus configuraciones.
  • Tiempo de espera (Timeouts) — limitaciones de tiempo para la ejecución de solicitudes.
  • Callbacks — mecanismos de procesamiento de resultados.

Recopilación de ofertas

La función callBids() es un componente clave de la mecánica de la subasta. Gestiona las solicitudes a las SSP y el procesamiento de las ofertas, realizando las siguientes acciones:

  1. Envía solicitudes HTTP a todas las SSP.
  2. Obtiene respuestas a través de fetchBids() (CPM, creatividad, identificador y metadatos de cada SSP).
  3. Recopila todas las ofertas en un array utilizando getBidsReceived() y getLastBidsReceived().

Selección del ganador

Los datos recopilados se envían al backend de AdFox (gestionado por el objeto managerForAdfox), lo que mantiene las ofertas de "Yandex" ocultas. En esencia, managerForAdfox actúa como una "caja negra" — AdFox recibe toda la información a través de él y puede influir en la elección del ganador según sus propios criterios internos. Después del procesamiento, AdFox devuelve la información del ganador al cliente.

Renderizado de anuncios

  1. Si gana AdFox → la oferta se envía de vuelta a AdFox, donde el anuncio se carga a través de sus scripts.
  2. Si gana una SSP externa → el anuncio se inserta en el contenedor mediante un iframe o JavaScript.
Mercado negro de identificadores

Coincidencia de Cookies

El mecanismo de Coincidencia de Cookies en Header Bidding de "Yandex" identifica a los usuarios para una segmentación publicitaria más precisa. La coincidencia de cookies ocurre antes de que comience la subasta: cuando se carga la página, el navegador envía una solicitud a https://matchid.adfox.yandex.ru/getcookie, donde AdFox verifica la presencia de un identificador único (por ejemplo, yandexuid, cryptouid). Estos identificadores se transmiten a las SSP para mejorar el CPM y la personalización de anuncios.

Integración con otros servicios de "Yandex"

La biblioteca Header Bidding se integra con los servicios de "Yandex" en un ecosistema publicitario unificado:

  • AdFox — componente central del sistema, que gestiona subastas, agrega ofertas y distribuye tráfico entre SSP.
  • Yandex.Metrika — recopila datos de los usuarios y evalúa la efectividad de los anuncios a través de parámetros de consulta y Coincidencia de Cookies.
  • Yandex.Direct — parece haber una interacción con este servicio en el código, aunque no está claro para qué.
  • Yandex.Crypta — analiza datos de audiencia para optimizar la segmentación y personalización de anuncios. Aquí también la integración no es completamente clara, pero cryptouid aparece explícitamente.
  • Yandex ID y Coincidencia de Cookies — sincroniza los identificadores de usuario entre los sistemas publicitarios de "Yandex" para mejorar la segmentación multiplataforma.

Plataformas SSP mencionadas en el código de la biblioteca (a febrero de 2025 en orden alfabético):

Puedes ver la participación de estos adaptadores en el mercado ruso en HBTracker Battleboard

El algoritmo inmortal

Conclusiones

En el lado del cliente, la biblioteca Header Bidding de "Yandex" proporciona una subasta transparente en la que el ganador se determina exclusivamente en función del CPM máximo, sin manipulaciones de ofertas ni preferencias por SSP específicas. El código del cliente no contiene mecanismos para reducir artificialmente las ofertas o cambiar al ganador. Sin embargo, el procesamiento final de las ofertas se realiza en el lado del servidor a través de la integración con AdFox, donde pueden realizarse ajustes adicionales que no están reflejados en el código del cliente.