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 que inicia la solicitud. Sin embargo, los navegadores suelen redactar en gran medida el encabezado 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 ofertas cuando están disponibles para complementar el encabezado User-Agent. Estas sugerencias del cliente (para abreviar) 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 completará con Client Hints cuando estén disponibles, pero, de lo contrario, se completará según los valores analizados del encabezado User-Agent. Esto se expone en el campo BidRequest.device.sua.
Se recomienda a los postores que usen el mensaje UserAgent en lugar de la cadena User-Agent.
Cómo se completa el campo 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.
Según si las sugerencias del cliente están disponibles en la solicitud de anuncio, el mensaje UserAgent se puede completar de las siguientes maneras:
- Si la solicitud contiene al menos sugerencias del cliente de baja entropía, el objeto
UserAgentse completa según su contenido. - Si la solicitud solo contiene el encabezado User-Agent,
UserAgentse completa en función de lo que se puede analizar del encabezado.
Ejemplo: Cómo completar UserAgent según el encabezado User-Agent
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 objeto UserAgent propagado únicamente 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 completar UserAgent en función de las Client Hints
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 los que se incluyen al menos Client Hints de entropía baja, el objeto UserAgent se completará según el contenido de esos encabezados, incluso si hay encabezados User-Agent. 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 se completa la información según el encabezado de User-Agent en comparación con las sugerencias del cliente
Algunos campos se completan de manera 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.brandyUserAgent.platform.brandsuelen diferir entre unUserAgentsegún el encabezado User-Agent o las sugerencias del cliente. Por ejemplo,UserAgent.platform.brandpodría aparecer como “Windows NT” si se basara en el encabezado User-Agent, o “Windows” si se basara en las Client Hints. - Algunas entradas de
UserAgent.browsersson exclusivas del encabezado User-Agent o de las sugerencias del cliente. Por ejemplo, aparecería “AppleWebKit” siUserAgentse basara en el encabezado User-Agent, mientras que “Chromium” solo aparecería si se basara en las sugerencias del cliente. - Solo un objeto
UserAgentbasado en el encabezado User-Agent puede contener valores inmutables. Por ejemplo, si la plataforma fuera Windows 11 22H2,UserAgent.platform.brandse establecería en “Windows NT” yUserAgent.platform.versionse establecería en[“10”, “0”]porque ese es el valor inalterable para cualquier versión de Windows 10 o posterior.
Los datos de UserAgent que se basan en las sugerencias del cliente no suelen ser un reemplazo inexacto de la información congelada o censurada. Si hay alguna incoherencia entre el encabezado User-Agent y un UserAgent basado en Client Hints, se debe preferir la información del UserAgent.
Campos del objeto UserAgent
En esta sección, se resume cada campo y se hace hincapié 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 | Variante para computadoras, a diferencia de la variante para dispositivos móviles. |
El UserAgent no siempre mostrará los navegadores en un orden específico, especialmente si se basa en las sugerencias del cliente. A continuación, se describen otras diferencias que puedes esperar ver según el valor de source:
USER_AGENT: El campoversionse puede reducir a una versión principal o congelar (depende de la política específica del agente). Ten en cuenta que no habrá ninguna indicación de que el valor está inmovilizado.CLIENT_HINTS_LOW_ENTROPYyCLIENT_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 de GREASE, que se debe ignorar.CLIENT_HINTS_HIGH_ENTROPY: Todos los camposversionque se encuentran en los navegadores se pueden establecer en versiones completas.
Plataforma
Es una entrada de BrandVersion que describe la plataforma. Es posible que no sea compatible con el encabezado User-Agent y las sugerencias de clientes, por lo que la segmentación para algunas plataformas puede requerir la prueba de dos nombres. Por ejemplo, el sistema operativo Macintosh de Apple se identifica como “Macintosh” en el encabezado User-Agent, pero como “macOS” en las sugerencias del cliente.
A continuación, se describen otras diferencias que puedes esperar ver según el valor de source:
USER_AGENT: El campoversionse puede reducir a una versión principal o inmovilizar. Ten en cuenta que no habrá ninguna indicación de que el valor está inmovilizado.CLIENT_HINTS_LOW_ENTROPY: No se completará el campoversion.CLIENT_HINTS_HIGH_ENTROPY: Es posible que el campoversionesté configurado en la versión completa.
Dispositivos móviles
Indica si el contenido, como los anuncios, debe optimizarse 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 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 completará cuando source se establezca en CLIENT_HINTS_HIGH_ENTROPY.
Bitness
Identifica la cantidad de bits de la plataforma, por ejemplo, si tiene una CPU de 32 o 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 una cantidad de bits establecida en “32” o “64”.
En el caso de un UserAgent basado en Client Hints, ten en cuenta que solo se completará cuando source se establezca en 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 completará con 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 móviles: El campo
modela menudo contendrá un valor combinado de arquitectura y 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.architectureyUserAgent.bitness.
- Dispositivos que no son móviles: El campo
CLIENT_HINTS_LOW_ENTROPY: No se completará el campomodel.CLIENT_HINTS_HIGH_ENTROPY: El campomodelsolo se completará para el modelo de dispositivo de dispositivos móviles. No se establece ningún valor para las plataformas de escritorio.
Fuente
Identifica qué encabezados se usaron para crear el objeto UserAgent. En el caso de las sugerencias del cliente, esto también distingue entre los siguientes dos casos:
CLIENT_HINTS_LOW_ENTROPY: Solo están disponibles las sugerencias del 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.