Históricamente, el encabezado User-Agent se ha incluido en las solicitudes de ofertas para proporcionar datos de segmentación útiles, como el navegador y la plataforma del dispositivo de inicio. Sin embargo, los navegadores suelen ocultar el User-Agent debido a su dificultad de uso y para proteger mejor la privacidad del usuario. En respuesta a esto, Google admite las Client Hints de usuario-agente, que se incluyen en las solicitudes de oferta cuando están disponibles para complementar el encabezado User-Agent. Estas sugerencias del cliente (en resumen) pueden provenir de los encabezados Sec-Ch-UA* o de la API de Client Hints de JavaScript.
El encabezado User-Agent se expone como una cadena en el campo BidRequest.device.ua
.
Un mensaje UserAgent
se propagará con Client Hints cuando estén disponibles, pero, de lo contrario, se propagará en función de los valores analizados del encabezado User-Agent. Esto se expone en el campo BidRequest.device.sua
.
Se recomienda a los ofertantes que usen el mensaje UserAgent
en lugar de la cadena User-Agent.
Cómo se completa UserAgent
A diferencia del encabezado User-Agent, el mensaje UserAgent
representa la información del usuario-agente desglosada en varios campos para obtener información específica.
Dependiendo de si las sugerencias para 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 sugerencias para el cliente de entropía baja,
UserAgent
se propaga en función de su contenido. - Si la solicitud solo contiene el encabezado User-Agent,
UserAgent
se propaga en función de lo que se puede analizar del encabezado.
Ejemplo: Cómo propagar UserAgent
según el encabezado de 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 User-Agent 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: Cómo propagar UserAgent
en función de 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 Client Hints de baja entropía, UserAgent
se propagará según el contenido de esos encabezados, incluso si hay encabezados de usuario-agente 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
Cómo propagar los datos según el encabezado User-Agent en comparación con las sugerencias de cliente
Algunos campos se propagan de forma diferente según si se basan en el encabezado User-Agent o en las sugerencias del cliente. A continuación, se incluye un resumen de estas diferencias:
- En el caso de navegadores y plataformas idénticos,
UserAgent.browsers.brand
yUserAgent.platform.brand
suelen diferir entre unUserAgent
según el encabezado User-Agent o las sugerencias del cliente. Por ejemplo,UserAgent.platform.brand
podría aparecer como "Windows NT" si se basara en el encabezado User-Agent o "Windows" si se basara en Client Hints. - Algunas entradas de
UserAgent.browsers
son únicas para el encabezado User-Agent o para las sugerencias de cliente. Por ejemplo, "AppleWebKit" aparecería siUserAgent
se basara en el encabezado User-Agent, mientras que "Chromium" solo aparecería si se basara en las sugerencias para clientes. - Solo un
UserAgent
basado en el encabezado User-Agent puede contener valores congelados. Por ejemplo, si la plataforma fuera Windows 11 22H2,UserAgent.platform.brand
se establecería en “Windows NT” yUserAgent.platform.version
se establecería en[“10”, “0”]
porque ese es el valor inmovilizado para cualquier versión de Windows a partir de la 10.
Por lo general, los datos de UserAgent
que se basan en las sugerencias del cliente no serán un reemplazo inexacto de la información inmovilizada o oculta. Si hay alguna incoherencia entre el encabezado User-Agent y un UserAgent
basado en Client Hints, se debe preferir 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 la RTB de Google y las prácticas recomendadas para su uso.
Navegadores
Contiene una lista de entradas de BrandVersion que, por lo general, se ordenan 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 | Basado en AppleWebKit, un subconjunto de Mozilla. |
Chrome | Navegador Chrome, un subconjunto de navegadores compatibles con AppleWebKit |
Safari | Es la variante para computadoras de escritorio, en contraposición a la versión para dispositivos móviles. |
UserAgent
no siempre mostrará los navegadores en un orden específico, en especial si se basa en sugerencias del cliente. A continuación, se describen otras diferencias que puedes ver en función del valor de source
:
USER_AGENT
: El campoversion
se puede reducir a una versión principal o inmovilizarse (depende de la política específica del agente). Ten en cuenta que no se indicará que el valor está inmovilizado.CLIENT_HINTS_LOW_ENTROPY
yCLIENT_HINTS_HIGH_ENTROPY
: Las entradas no se ordenan según ningún criterio. Por ejemplo, el mismo navegador podría enviar estas entradas en diferentes órdenes en cada solicitud. También pueden contener una entrada GREASE, que se debe ignorar.CLIENT_HINTS_HIGH_ENTROPY
: Todos los camposversion
que se encuentran en los navegadores se pueden configurar en versiones completas.
Plataforma
Una entrada BrandVersion que describe la plataforma Es posible que esto no sea compatible con el encabezado User-Agent ni con las sugerencias de cliente, por lo que la segmentación de algunas plataformas puede requerir probar dos nombres. Por ejemplo, el sistema operativo Macintosh de Apple se marca como "Macintosh" en el encabezado User-Agent, pero como "macOS" en las sugerencias para clientes.
A continuación, se describen otras diferencias que puedes ver según el valor de source
:
USER_AGENT
: El campoversion
se puede reducir a una versión principal o inmovilizarse. Ten en cuenta que no habrá ninguna indicación de que el valor está inmovilizado.CLIENT_HINTS_LOW_ENTROPY
: No se propagará el campoversion
.CLIENT_HINTS_HIGH_ENTROPY
: El campoversion
se puede configurar en la versión completa.
Dispositivos móviles
Indica si el contenido, como los anuncios, debe optimizarse para pantallas pequeñas o entradas táctiles. 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 para computadoras".
Arquitectura
Identifica la arquitectura de la plataforma, como “x86” o “arm”.
En el caso de un UserAgent
basado en Client Hints, ten en cuenta que solo se propagará cuando source
esté configurado como CLIENT_HINTS_HIGH_ENTROPY
.
Bitness
Identifica la cantidad de bits de la plataforma, por ejemplo, si tiene una CPU de 32 bits o de 64 bits. El campo es una cadena de números enteros que proporciona información adicional sobre su arquitectura. Por ejemplo, una arquitectura “x86” puede tener un tamaño de bits establecido en “32” o “64”.
En el caso de un UserAgent
basado en Client Hints, ten en cuenta que solo se propagará cuando source
esté configurado como CLIENT_HINTS_HIGH_ENTROPY
.
Modelo
Identifica el modelo del dispositivo. En el caso de los dispositivos móviles, es decir, no laptops ni computadoras de escritorio, se propagará un nombre de modelo, como "Pixel 6 Pro".
A continuación, se describen las diferencias que puedes esperar ver según el valor de source
:
USER_AGENT
- Dispositivos que no son para dispositivos móviles: El campo
model
suele contener un valor combinado de arquitectura y tamaño de bits, como "x64" para Windows. Este valor no es multiplataforma. Por ejemplo, Linux podría usar “x86_64” para el mismo hardware. - Dispositivos móviles: Este campo no incluirá la arquitectura ni la cantidad de bits.
Si te interesan estos valores, consulta
UserAgent.architecture
yUserAgent.bitness
.
- Dispositivos que no son para dispositivos 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 de los dispositivos móviles. No se estableció ningún valor para las plataformas de computadoras de escritorio.
Fuente
Identifica qué encabezados se usaron para crear el UserAgent
. En el caso de las sugerencias para clientes, esto también distingue entre los siguientes dos casos:
CLIENT_HINTS_LOW_ENTROPY
: Solo están disponibles las sugerencias de cliente básicas.CLIENT_HINTS_HIGH_ENTROPY
: Las sugerencias del cliente están disponibles, incluido al menos un campo clasificado como de alta entropía.