Segmentación de usuario-agente

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 UserAgent se completa según su contenido.
  • Si la solicitud solo contiene el encabezado User-Agent, UserAgent se 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.brand y UserAgent.platform.brand suelen diferir entre un UserAgent 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 las Client Hints.
  • Algunas entradas de UserAgent.browsers son exclusivas del encabezado User-Agent o de las sugerencias del cliente. Por ejemplo, aparecería “AppleWebKit” si UserAgent se basara en el encabezado User-Agent, mientras que “Chromium” solo aparecería si se basara en las sugerencias del cliente.
  • Solo un objeto UserAgent basado en el encabezado User-Agent puede contener valores inmutables. Por ejemplo, si la plataforma fuera Windows 11 22H2, UserAgent.platform.brand se establecería en “Windows NT” y UserAgent.platform.version se 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 campo version se 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_ENTROPY y CLIENT_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 campos version que 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 campo version se 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 campo version.
  • CLIENT_HINTS_HIGH_ENTROPY: Es posible que el campo version esté 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 model a 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.architecture y UserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: No se completará el campo model.
  • CLIENT_HINTS_HIGH_ENTROPY: El campo model solo 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.