El encabezado Usuario-agente siempre se incluyó en las solicitudes de ofertas para proporcionar datos de segmentación útiles, como el navegador y la plataforma del dispositivo iniciador. Sin embargo, los navegadores a menudo ocultan en gran medida el usuario-agente debido a su dificultad de uso y para proteger mejor la privacidad del usuario. En respuesta a esto, Google admite Sugerencias de clientes de usuario-agente, que se incluyen en las solicitudes de ofertas cuando están disponibles para complementar el encabezado de usuario-agente. Estas Client Hints (para abreviar) pueden obtenerse de los encabezados Sec-Ch-UA* o la API de JavaScript Client Hints.
Según el protocolo que se use, el encabezado de usuario-agente se expone con uno de los siguientes campos de string:
- Google:
BidRequest.user_agent
- OpenRTB:
BidRequest.device.ua
Un mensaje UserAgent
se propagará con Client Hints cuando estén
disponibles, pero, de lo contrario, se propagará según los valores analizados en el
encabezado de usuario-agente. Según el protocolo que se use, esto se expondrá como uno de los siguientes campos:
- Google:
BidRequest.user_agent_data
- OpenRTB:
BidRequest.device.sua
Se recomienda que los ofertantes usen el mensaje UserAgent
en lugar de la
cadena de usuario-agente.
Cómo se propaga UserAgent
A diferencia del encabezado usuario-agente, el mensaje UserAgent
representa la información del usuario-agente desglosada en varios campos para información específica.
En función de si las Sugerencias de clientes están disponibles en la solicitud de anuncio, el mensaje UserAgent
se puede propagar de las siguientes maneras:
- Si la solicitud contiene al menos entropía baja, Client Hints,
UserAgent
se propaga en función de su contenido. - Si la solicitud contiene solo el encabezado de usuario-agente,
UserAgent
se propaga en función de lo que se puede analizar desde el encabezado.
Ejemplo: Propagación de UserAgent
según el encabezado del usuario-agente
Supongamos que hay una solicitud de anuncio en la que el navegador envía los siguientes encabezados:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Un UserAgent
propagado solo en función del encabezado de usuario-agente podría tener el siguiente aspecto:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
Ejemplo: Propagación de UserAgent
según las sugerencias del cliente
Supongamos que hay una solicitud de anuncio en la que el navegador envía los siguientes encabezados:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
En los casos en que se incluyan al menos las sugerencias de clientes de entropía baja, UserAgent
se propagará en función del contenido de esos encabezados, incluso si los encabezados de usuario-agente están presentes. Se vería de la siguiente manera:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
Propagación según el encabezado de usuario-agente y Client Hints
Algunos campos se propagan de manera diferente en función de si se basan en el encabezado de usuario-agente o en Client Hints. A continuación, se muestra un resumen de estas diferencias:
- En el caso de navegadores y plataformas idénticos,
UserAgent.browsers.brand
yUserAgent.platform.brand
a menudo diferirán entre unUserAgent
según el encabezado de usuario-agente o las Sugerencias de cliente. Por ejemplo,UserAgent.platform.brand
podría aparecer como "Windows NT" si se basara en el encabezado de usuario-agente, o como "Windows" si se basara en Client Hints. - Algunas entradas
UserAgent.browsers
son exclusivas del encabezado de usuario-agente o de Client Hints. Por ejemplo, "AppleWebKit" aparecería siUserAgent
se basara en el encabezado de usuario-agente, mientras que "Chromium" solo aparecería si se basara en Client Hints. - Solo un
UserAgent
basado en el encabezado de usuario-agente puede contener valores inmovilizados. Por ejemplo, si la plataforma fuera Windows 11 22H2,UserAgent.platform.brand
se establecería como "Windows NT" yUserAgent.platform.version
se establecería como[“10”, “0”]
, ya que ese es el valor congelado para cualquier versión de Windows a partir de la versión 10.
Por lo general, los datos en UserAgent
que se basan en Client Hints no serán un reemplazo impreciso de la información oculta o congelada. Si hay alguna incoherencia entre el encabezado de usuario-agente y un UserAgent
basado en Client Hints, se recomienda usar la información de UserAgent
.
Campos del objeto UserAgent
En esta sección, se resume cada campo, con un enfoque en el comportamiento específico de las RTB de Google y las prácticas recomendadas para su uso.
Navegadores
Contiene una lista de entradas BrandVersion que, por lo general, están ordenadas por especificidad, por ejemplo, si enumeraras el contenido de browsers
, el brand
de cada entrada podría aparecer en el siguiente orden:
Marca | Significado |
Mozilla | Compatible con Mozilla |
AppleWebKit | Basada en AppleWebKit, un subconjunto de Mozilla |
Chrome | Navegador Chrome, un subconjunto de navegadores compatibles con AppleWebKit |
Safari | Variante para computadoras de escritorio, a diferencia de para dispositivos móviles. |
El UserAgent
no siempre mostrará los navegadores en cualquier orden específico, en especial si se basa en Client Hints. A continuación, se describen otras diferencias que puedes esperar según el valor de source
:
USER_AGENT
: El campoversion
puede reducirse a una versión principal o congelarse (depende de la política específica del agente). Ten en cuenta que no habrá ninguna indicación de que el valor se haya bloqueado.CLIENT_HINTS_LOW_ENTROPY
yCLIENT_HINTS_HIGH_ENTROPY
: Las entradas no se ordenan según ningún criterio; por ejemplo, el mismo navegador puede enviar estas entradas en diferentes órdenes en cada solicitud. También pueden contener una entrada GREASE, que debe ignorarse.CLIENT_HINTS_HIGH_ENTROPY
: Es posible que todos los camposversion
que se encuentran en los navegadores tengan versiones completas.
Plataforma
Una entrada BrandVersion que describe la plataforma Es posible que esto no sea compatible con el encabezado de usuario-agente
y las Sugerencias de cliente, por lo que es posible que la segmentación de algunas plataformas requiera probar
dos nombres. Por ejemplo, el sistema operativo Macintosh de Apple tiene la marca
“Macintosh” en el encabezado de usuario-agente, pero el sistema operativo “macOS” en Client Hints.
A continuación, se describen otras diferencias que puedes esperar según el valor de source
:
USER_AGENT
: El campoversion
puede reducirse a una versión principal o bloquearse. Ten en cuenta que no habrá indicación de que el valor esté bloqueado.CLIENT_HINTS_LOW_ENTROPY
: No se propagará el campoversion
.CLIENT_HINTS_HIGH_ENTROPY
: El campoversion
se puede establecer en la versión completa.
Dispositivos móviles
Indica si se debe optimizar el contenido como los anuncios para pantallas pequeñas o entrada táctil. Ten en cuenta que esto no es necesariamente un indicador del tipo de dispositivo, ya que los navegadores para dispositivos móviles se pueden configurar para solicitar un "sitio de escritorio".
Arquitectura
Identifica la arquitectura de la plataforma, como “x86” o “arm”.
Para UserAgent
basado en Client Hints, ten en cuenta que esto solo se propagará cuando source
se establezca en CLIENT_HINTS_HIGH_ENTROPY
.
Nivel de bits
Identifica el valor de bits de la plataforma, por ejemplo, si tiene una CPU de 32 o 64 bits. El campo es una string de números enteros que proporciona información adicional sobre su arquitectura; por ejemplo, una arquitectura "x86" puede tener un valor de bits establecido en "32" o "64".
Para UserAgent
basado en Client Hints, ten en cuenta que esto solo se propagará cuando source
se establezca en CLIENT_HINTS_HIGH_ENTROPY
.
Modelo
Identifica el modelo del dispositivo. En el caso de dispositivos móviles, es decir, no en laptops ni computadoras de escritorio, se propagará con un nombre de modelo, como "Pixel 6 Pro".
A continuación, se describen las diferencias que puedes esperar según el valor de source
:
USER_AGENT
- Dispositivos que no son móviles: El campo
model
a menudo contendrá una arquitectura y un valor de bits combinados, como "x64" para Windows. Este valor no es multiplataforma; por ejemplo, Linux puede usar "x86_64" para el mismo hardware. - Dispositivos móviles: este campo no incluirá la arquitectura ni los valores de bits.
Si te interesan estos valores, consulta
UserAgent.architecture
yUserAgent.bitness
.
- Dispositivos que no son móviles: El campo
CLIENT_HINTS_LOW_ENTROPY
: No se propagará el campomodel
.CLIENT_HINTS_HIGH_ENTROPY
: El campomodel
solo se propagará para el modelo de dispositivo móvil. No se estableció ningún valor para las plataformas de escritorio.
Origen
Identifica qué encabezados se usaron para crear el UserAgent
. En el caso de Client Hints, esto también distingue entre los siguientes dos casos:
CLIENT_HINTS_LOW_ENTROPY
: Solo están disponibles las sugerencias básicas de Client Hints.CLIENT_HINTS_HIGH_ENTROPY
: Están disponibles las sugerencias de clientes, incluido al menos un campo clasificado como de alta entropía.