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 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 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 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 si UserAgent 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” y UserAgent.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 campo version 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 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 GREASE, que se debe ignorar.
  • CLIENT_HINTS_HIGH_ENTROPY: Todos los campos version 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 campo version 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 campo version.
  • CLIENT_HINTS_HIGH_ENTROPY: El campo version 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 y UserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: No se propagará el campo model.
  • CLIENT_HINTS_HIGH_ENTROPY: El campo model 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.