Ciblage user-agent

L'en-tête User-Agent a toujours été inclus dans les demandes d'enchères pour fournir des données de ciblage utiles, telles que le navigateur et la plate-forme de l'appareil à l'origine de la demande. Toutefois, les navigateurs masquent souvent fortement l'User-Agent en raison de sa difficulté d'utilisation et pour mieux protéger la confidentialité des utilisateurs. Google prend en charge les hints client user-agent, qui sont inclus dans les requêtes d'enchères lorsqu'ils sont disponibles pour compléter l'en-tête user-agent. Ces indices client (pour faire court) peuvent provenir des en-têtes Sec-Ch-UA* ou de l'API Client Hints JavaScript.

L'en-tête User-Agent est exposé sous forme de chaîne dans le champ BidRequest.device.ua.

Un message UserAgent sera renseigné avec des hints client lorsqu'ils sont disponibles, mais sera renseigné en fonction des valeurs extraites de l'en-tête User-Agent dans le cas contraire. Cela est exposé dans le champ BidRequest.device.sua.

Nous recommandons vivement aux enchérisseurs d'utiliser le message UserAgent plutôt que la chaîne User-Agent.

Comment UserAgent est-il renseigné ?

Contrairement à l'en-tête User-Agent, le message UserAgent représente les informations de l'user-agent réparties sur plusieurs champs pour des informations spécifiques.

Selon que les indices client sont disponibles dans la requête d'annonce, le message UserAgent peut être renseigné de différentes manières:

  • Si la requête contient au moins un indice client à faible entropie, UserAgent est renseigné en fonction de leur contenu.
  • Si la requête ne contient que l'en-tête User-Agent, UserAgent est renseigné en fonction de ce qui peut être analysé à partir de l'en-tête.

Exemple: renseigner UserAgent en fonction de l'en-tête "User-Agent"

Imaginons qu'une demande d'annonce soit envoyée par le navigateur avec les en-têtes suivants:

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 renseigné uniquement en fonction de l'en-tête User-Agent peut se présenter comme suit:

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

Exemple: renseigner UserAgent en fonction des hints client

Imaginons qu'une demande d'annonce soit envoyée par le navigateur avec les en-têtes suivants:

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

Si au moins des hints client à faible entropie sont inclus, UserAgent est renseigné en fonction du contenu de ces en-têtes, même si des en-têtes User-Agent sont présents. Il se présente comme suit:

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

Remplissage basé sur l'en-tête User-Agent par rapport aux hints client

Certains champs sont renseignés différemment selon qu'ils sont basés sur l'en-tête User-Agent ou sur les indices client. Vous trouverez ci-dessous un récapitulatif de ces différences:

  • Pour les navigateurs et plates-formes identiques, UserAgent.browsers.brand et UserAgent.platform.brand diffèrent souvent entre un UserAgent basé sur l'en-tête User-Agent ou les indices client. Par exemple, UserAgent.platform.brand peut apparaître sous la forme "Windows NT" s'il est basé sur l'en-tête User-Agent ou "Windows" s'il est basé sur les hints client.
  • Certaines entrées UserAgent.browsers sont propres à l'en-tête User-Agent ou aux indicateurs client. Par exemple, "AppleWebKit" s'afficherait si UserAgent était basé sur l'en-tête User-Agent, tandis que "Chromium" ne s'afficherait que s'il était basé sur les indices client.
  • Seul un UserAgent basé sur l'en-tête User-Agent peut contenir des valeurs figées. Par exemple, si la plate-forme était Windows 11 22H2, UserAgent.platform.brand serait défini sur "Windows NT" et UserAgent.platform.version sur [“10”, “0”], car il s'agit de la valeur figée pour toute version de Windows égale ou supérieure à 10.

Les données de UserAgent basées sur les indices client ne remplacent généralement pas de manière inexacte les informations figées ou masquées. En cas d'incohérence entre l'en-tête User-Agent et un UserAgent basé sur des hints client, les informations du UserAgent doivent être privilégiées.

Champs de l'objet UserAgent

Cette section résume chaque champ, en mettant l'accent sur le comportement spécifique à la RTB de Google et les bonnes pratiques d'utilisation.

Navigateurs

Contient une liste d'entrées BrandVersion généralement triées par spécificité. Par exemple, si vous listez le contenu de browsers, les brand de chaque entrée peuvent apparaître dans l'ordre suivant:

Marque Signification
Mozilla Compatible avec Mozilla
AppleWebKit Basé sur AppleWebKit, un sous-ensemble de Mozilla.
Chrome Navigateur Chrome, sous-ensemble des navigateurs compatibles avec AppleWebKit
Safari Variante pour ordinateur de bureau, par opposition à la version mobile.

UserAgent ne répertorie pas toujours les navigateurs dans un ordre spécifique, en particulier s'il est basé sur des indices client. Vous trouverez ci-dessous d'autres différences que vous pouvez attendre en fonction de la valeur de source:

  • USER_AGENT: le champ version peut être réduit à une version majeure ou gelé (selon la stratégie spécifique à l'agent). Notez qu'aucune indication ne sera fournie pour indiquer que la valeur est figée.
  • CLIENT_HINTS_LOW_ENTROPY et CLIENT_HINTS_HIGH_ENTROPY: les entrées ne sont pas triées selon des critères. Par exemple, le même navigateur peut envoyer ces entrées dans des ordres différents dans chaque requête. Ils peuvent également contenir une entrée GREASE, qui doit être ignorée.
  • CLIENT_HINTS_HIGH_ENTROPY: tous les champs version trouvés dans les navigateurs peuvent être définis sur des versions complètes.

Plate-forme

Une entrée BrandVersion décrivant la plate-forme. Cela peut ne pas être compatible avec l'en-tête User-Agent et les indicateurs client. Le ciblage de certaines plates-formes peut donc nécessiter de tester deux noms. Par exemple, le système d'exploitation Macintosh d'Apple est associé à la marque "Macintosh" dans l'en-tête User-Agent, mais à "macOS" dans les indices client. Vous trouverez ci-dessous d'autres différences que vous pouvez observer en fonction de la valeur de source:

  • USER_AGENT: le champ version peut être réduit à une version majeure ou figé. Notez qu'aucune indication ne sera fournie pour indiquer que la valeur est figée.
  • CLIENT_HINTS_LOW_ENTROPY: le champ version ne sera pas renseigné.
  • CLIENT_HINTS_HIGH_ENTROPY: le champ version peut être défini sur la version complète.

Mobile

Indique si les contenus tels que les annonces doivent être optimisés pour les petits écrans et/ou la saisie tactile. Notez que ce n'est pas nécessairement un indicateur du type d'appareil, car les navigateurs mobiles peuvent être configurés pour demander un "site pour ordinateur".

Architecture

Identifie l'architecture de la plate-forme, par exemple "x86" ou "arm".

Pour un UserAgent basé sur des indices client, notez que celui-ci ne sera renseigné que lorsque source est défini sur CLIENT_HINTS_HIGH_ENTROPY.

Bitness

Identifie la taille de la plate-forme, par exemple si elle dispose d'un processeur 32 bits ou 64 bits. Ce champ est une chaîne d'entiers qui fournit des informations supplémentaires sur son architecture. Par exemple, une architecture "x86" peut avoir une taille de 32 ou 64 bits.

Pour un UserAgent basé sur des indices client, notez que celui-ci ne sera renseigné que lorsque source est défini sur CLIENT_HINTS_HIGH_ENTROPY.

Modèle

Identifie le modèle de l'appareil. Pour les appareils mobiles (à l'exception des ordinateurs portables et des ordinateurs de bureau), un nom de modèle tel que "Pixel 6 Pro" est renseigné.

Vous trouverez ci-dessous les différences que vous pouvez attendre en fonction de la valeur de source:

  • USER_AGENT
    • Appareils non mobiles: le champ model contient souvent une valeur combinée d'architecture et de nombre d'octets, comme "x64" pour Windows. Cette valeur n'est pas multiplate-forme. Par exemple, Linux peut utiliser "x86_64" pour le même matériel.
    • Appareils mobiles: ce champ n'inclut pas l'architecture ni la taille d'octet. Si ces valeurs vous intéressent, consultez UserAgent.architecture et UserAgent.bitness.
  • CLIENT_HINTS_LOW_ENTROPY: le champ model ne sera pas renseigné.
  • CLIENT_HINTS_HIGH_ENTROPY: le champ model n'est renseigné que pour le modèle d'appareil des appareils mobiles. Aucune valeur n'est définie pour les plates-formes de bureau.

Source

Identifie les en-têtes utilisés pour créer UserAgent. Pour les indices client, cela permet également de distinguer les deux cas suivants:

  • CLIENT_HINTS_LOW_ENTROPY: seuls les indicateurs client de base sont disponibles.
  • CLIENT_HINTS_HIGH_ENTROPY: Les indicateurs client sont disponibles, y compris au moins un champ classé comme ayant une entropie élevée.