Segmentação por user agent

O User-Agent foi incluído historicamente em solicitações de lance para fornecer dados de segmentação, como o navegador e a plataforma do dispositivo inicial. No entanto, os navegadores costumam encobrir muito o user agent devido à dificuldade de uso e para proteger melhor a privacidade do usuário. Em resposta a isso, o Google apoia Dicas de cliente HTTP do user agent, que são incluídas nas solicitações de lance quando disponíveis para complementar o cabeçalho User-Agent. Essas dicas de cliente podem ser extraídas de cabeçalhos Sec-Ch-UA* ou da API JavaScript Client Hints.

Dependendo do protocolo usado, o cabeçalho User-Agent é exposto com um dos seguintes campos de string:

  • OpenRTB: BidRequest.device.ua
  • RTB do Google (descontinuado): BidRequest.user_agent

Uma mensagem UserAgent será preenchida com dicas de cliente quando elas forem disponíveis, mas serão preenchidos com base em valores analisados no Cabeçalho do user agent. Dependendo do protocolo usado, ela será exposta como um dos seguintes campos:

  • OpenRTB: BidRequest.device.sua
  • RTB do Google (descontinuado): BidRequest.user_agent_data

É altamente recomendável que os bidders usem a mensagem UserAgent em vez do string do user agent.

Como o UserAgent é preenchido

Ao contrário do cabeçalho User-Agent, a mensagem UserAgent representa o user agent informações divididas em vários campos para informações específicas.

Dependendo da disponibilidade das dicas do cliente na solicitação de anúncio, o A mensagem UserAgent pode ser preenchida das seguintes maneiras:

  • Se a solicitação tiver pelo menos baixa entropia Dicas do cliente, o UserAgent é preenchido com base no conteúdo.
  • Se a solicitação contiver apenas o cabeçalho User-Agent, UserAgent será preenchidos com base no que pode ser analisado no cabeçalho.
.

Exemplo: preencher UserAgent com base no cabeçalho User-Agent

Suponha que há uma solicitação de anúncio em que o navegador envia os seguintes cabeçalhos:

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

Um UserAgent preenchido exclusivamente com base no cabeçalho do user agent pode ser semelhante a o seguinte:

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

Exemplo: preencher UserAgent com base em dicas de cliente

Suponha que há uma solicitação de anúncio em que o navegador envia os seguintes cabeçalhos:

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

Nos casos em que são incluídas pelo menos dicas de cliente com baixa entropia, o UserAgent será preenchida com base no conteúdo desses cabeçalhos, mesmo se o user agent estão presentes. Ela será semelhante a esta:

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

Preencher com base no cabeçalho do user agent em comparação com as dicas de cliente

Alguns campos são preenchidos de forma diferente dependendo se são baseados no cabeçalho user agent ou nas dicas de cliente. Confira a seguir um resumo diferenças:

  • Para navegadores e plataformas idênticos, UserAgent.browsers.brand e O UserAgent.platform.brand geralmente será diferente entre uma UserAgent com base na no cabeçalho user agent ou nas dicas de cliente. Por exemplo: UserAgent.platform.brand aparecerá como “Windows NT” se for baseado em o cabeçalho User-Agent, ou “Windows” se for baseado em dicas de cliente.
  • Algumas entradas UserAgent.browsers são exclusivas do cabeçalho do user agent ou a dicas de cliente. Por exemplo, "AppleWebKit" apareceria se UserAgent foram baseadas no cabeçalho User-Agent, enquanto o "Chromium" só apareceria se ela tivesse como base as dicas do cliente.
  • Apenas um UserAgent baseado no cabeçalho do user agent pode conter valores congelados. Por exemplo, se a plataforma fosse Windows 11 22H2, UserAgent.platform.brand seria definido como “Windows NT” e UserAgent.platform.version seria definido como [“10”, “0”] porque esse é o valor congelado de qualquer versão do Windows igual ou superior a 10.

Dados em UserAgent baseados em dicas de cliente normalmente não serão uma substituto imprecisa de informações congeladas ou editadas. Se houver inconsistência entre o cabeçalho do user agent e uma UserAgent com base nas informações Dicas: as informações do UserAgent devem ter preferência.

Campos do objeto UserAgent

Esta seção resume cada campo, com foco nos detalhes específicos de RTB do Google e práticas recomendadas de uso.

Navegadores

Contém uma lista de BrandVersion entradas que geralmente são ordenadas por especificidade, por exemplo, listar o conteúdo de browsers, o brand de cada entrada pode aparecer na seguinte ordem:

Brand Significado
Mozilla Compatível com Mozilla
AppleWebKit Baseado em AppleWebKit, um subconjunto do Mozilla.
Chrome Navegador Chrome, um subconjunto de navegadores compatíveis com o AppleWebKit
Safari É uma variante para computador, e não para dispositivos móveis.

O UserAgent nem sempre lista os navegadores em uma ordem específica, especialmente se ela for baseada em dicas de cliente. Confira a seguir outras diferenças que você pode esperar ver com base no valor de source:

  • USER_AGENT: o campo version pode ser reduzido para uma versão principal ou congelado (depende da política específica do agente). Não haverá é uma indicação de que o valor está congelado.
  • CLIENT_HINTS_LOW_ENTROPY e CLIENT_HINTS_HIGH_ENTROPY: as entradas são não ordenados por nenhum critério; por exemplo, o mesmo navegador pode enviar essas entradas em ordens diferentes em cada solicitação. Eles também podem conter um GREASE, que deve ser ignorada.
  • CLIENT_HINTS_HIGH_ENTROPY: todos os campos version encontrados nos navegadores podem ser definida como versões completas.

Plataforma

uma BrandVersion entrada descrevendo a plataforma. Talvez ele não seja compatível com o user agent cabeçalho e dicas de cliente. Assim, a segmentação de algumas plataformas pode exigir testes dois nomes. Por exemplo, o sistema operacional Macintosh da Apple é identificado como “Macintosh” no cabeçalho “User-Agent”, mas “macOS” em “Dicas de cliente”. Veja a seguir outras diferenças que podem ser esperadas com base nas o valor de source:

  • USER_AGENT: o campo version pode ser reduzido para uma versão principal ou congelados. Não haverá indicação de que o valor está congelado.
  • CLIENT_HINTS_LOW_ENTROPY: o campo version não será preenchido.
  • CLIENT_HINTS_HIGH_ENTROPY: o campo version pode ser definido como o para a versão anterior.

Dispositivo móvel

Indica se conteúdo, como anúncios, precisa ser otimizado para telas pequenas e/ou entrada por toque. Esse não é necessariamente um indicador do tipo de dispositivo, pois navegadores de dispositivos móveis podem ser configurados para solicitar um "site para computador".

Arquitetura

Identifica a arquitetura da plataforma, como “x86” ou “arm”.

No caso de uma UserAgent com base em dicas de cliente, ela só será preenchida. quando source for definido como CLIENT_HINTS_HIGH_ENTROPY.

Número de bits

Identifica a quantidade de bits da plataforma, por exemplo, se ela tem 32 ou 64 bits CPU. O campo é uma string inteira que fornece informações adicionais sobre a arquitetura por exemplo, uma arquitetura “x86” pode ter um bitness definido como "32" ou "64".

No caso de uma UserAgent com base em dicas de cliente, ela só será preenchida. quando source for definido como CLIENT_HINTS_HIGH_ENTROPY.

Modelo

Identifica o modelo do dispositivo. Para dispositivos móveis, ou seja, não são laptops ou computadores. Ele será preenchido com um nome de modelo, como “Pixel 6 Pro”.

Veja a seguir as diferenças que você pode esperar ver com base nas de source:

  • USER_AGENT
    • Dispositivos não móveis: o campo model geralmente conterá uma string arquitetura e valor de bits como “x64” para Windows. Esse valor é e não multiplataforma. por exemplo, o Linux pode usar “x86_64” para os mesmos ao hardware.
    • Dispositivos móveis: este campo não incluirá a arquitetura e a quantidade de bits. Se você tiver interesse nesses valores, consulte UserAgent.architecture e UserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: o campo model não será preenchido.
  • CLIENT_HINTS_HIGH_ENTROPY: o campo model será preenchido apenas para o modelo de dispositivos móveis. Nenhum valor é definido para plataformas de computador.

Origem

Identifica quais cabeçalhos foram usados para criar o UserAgent. Para dicas de cliente, isso também distingue entre os dois casos a seguir:

  • CLIENT_HINTS_LOW_ENTROPY: apenas dicas de cliente básicas estão disponíveis.
  • CLIENT_HINTS_HIGH_ENTROPY: dicas de cliente estão disponíveis, incluindo pelo menos um campo classificado como de alta entropia.