Ciblage user-agent

L'en-tête User-Agent a toujours été inclus dans les demandes d'enchères afin de fournir des données de ciblage utiles, telles que le navigateur et la plate-forme de l'appareil à l'origine du lancement. Toutefois, les navigateurs masquent souvent le user-agent de manière excessive en raison de sa difficulté d'utilisation et pour mieux protéger la confidentialité des utilisateurs. En réponse à cela, Google accepte les indications client User-Agent, qui sont incluses dans les demandes d'enchères lorsqu'elles sont disponibles et qui complètent l'en-tête User-Agent. Ces requêtes client (en abrégé) peuvent provenir des en-têtes Sec-Ch-UA* ou de l'API Client Hints JavaScript.

Selon le protocole utilisé, l'en-tête user-agent est exposé avec l'un des champs de chaîne suivants:

  • Google: BidRequest.user_agent
  • OpenRTB: BidRequest.device.ua

Un message UserAgent est renseigné avec des indications client lorsqu'elles sont disponibles, mais il l'est sinon en fonction des valeurs analysées à partir de l'en-tête User-Agent. Selon le protocole utilisé, ce champ est affiché dans l'un des champs suivants:

  • Google: BidRequest.user_agent_data
  • OpenRTB: BidRequest.device.sua

Nous encourageons vivement les enchérisseurs à utiliser le message UserAgent plutôt que la chaîne user-agent.

Comment le champ UserAgent est-il renseigné ?

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

Selon que des conseils client sont disponibles ou non dans la demande d'annonce, le message UserAgent peut être renseigné de différentes manières:

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

Exemple: Insertion de UserAgent en fonction de l'en-tête user-agent

Supposons que le navigateur envoie les en-têtes suivants dans une demande d'annonce:

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 élément UserAgent renseigné uniquement sur la base 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: Remplir UserAgent en fonction des indications client

Supposons que le navigateur envoie les en-têtes suivants dans une demande d'annonce:

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 indicateurs client à faible entropie sont inclus, le 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 en fonction de l'en-tête User-Agent et des indications client

Certains champs sont renseignés différemment selon qu'ils sont basés sur l'en-tête user-agent ou les indications client. Voici un résumé de ces différences:

  • Pour des plates-formes et des navigateurs identiques, UserAgent.browsers.brand et UserAgent.platform.brand diffèrent souvent d'un UserAgent en fonction de l'en-tête user-agent ou des conseils client. Par exemple, UserAgent.platform.brand peut apparaître sous la forme "Windows NT" s'il était basé sur l'en-tête User-Agent, ou "Windows" s'il était basé sur des indicateurs client.
  • Certaines entrées UserAgent.browsers sont propres à l'en-tête User-Agent ou aux indications client. Par exemple, "AppleWebKit" apparaît si UserAgent était basé sur l'en-tête User-Agent, tandis que "Chromium" ne s'afficherait que s'il était basé sur des conseils client.
  • Seul un élément 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 serait défini sur [“10”, “0”], car il s'agit de la valeur figée pour toute version de Windows supérieure ou égale à 10.

Les données dans UserAgent basées sur des insights client ne remplaceront généralement pas inexactement les informations figées ou masquées. En cas d'incohérence entre l'en-tête user-agent et un UserAgent basé sur les indications client, il est préférable d'utiliser les informations du UserAgent.

Champs d'objet UserAgent

Cette section résume chaque champ, en mettant l'accent sur le comportement spécifique au système d'enchères en temps réel de Google et les bonnes pratiques d'utilisation.

Navigateurs

Contient une liste d'entrées BrandVersion, généralement classées par spécificité. Par exemple, si vous souhaitez lister le contenu de browsers, le brand de chaque entrée peut s'afficher dans l'ordre suivant:

Marque Meaning
Mozilla Compatible avec Mozilla
AppleWebKit Basé sur AppleWebKit, un sous-ensemble de Mozilla.
Chrome Navigateur Chrome, un sous-ensemble des navigateurs compatibles avec AppleWebKit
Safari Il s'agit d'une variante pour ordinateur, et non pour mobile.

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

  • USER_AGENT: le champ version peut être réduit à une version majeure ou peut être figé (en fonction de la stratégie spécifique à l'agent). Notez que rien n'indiquera que la valeur est figée.
  • CLIENT_HINTS_LOW_ENTROPY et CLIENT_HINTS_HIGH_ENTROPY: les entrées ne sont classées selon aucun critère. Par exemple, le même navigateur peut les envoyer dans des ordres différents dans chaque requête. Ils peuvent également contenir une entrée GREASE, que vous devez ignorer.
  • CLIENT_HINTS_HIGH_ENTROPY: tous les champs version des navigateurs peuvent être définis sur des versions complètes.

Plate-forme

Une entrée BrandVersion décrivant la plate-forme. Il est possible que cet élément ne soit pas compatible avec l'en-tête user-agent et les indications client. Par conséquent, le ciblage de certaines plates-formes peut nécessiter de tester deux noms. Par exemple, le système d'exploitation Macintosh d'Apple est marqué comme "Macintosh" dans l'en-tête User-Agent, et par "macOS" dans les conseils client. Vous trouverez ci-dessous les autres différences que vous pouvez constater en fonction de la valeur de source:

  • USER_AGENT: le champ version peut être réduit à une version majeure ou peut être figé. Notez que rien ne vous indiquera 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 le contenu tel que les annonces doit être optimisé pour les petits écrans et/ou la saisie tactile. Notez qu'il ne s'agit pas nécessairement d'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 une UserAgent basée sur des conseils client, notez qu'il n'est renseigné que lorsque source est défini sur CLIENT_HINTS_HIGH_ENTROPY.

Nombre de bits

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

Pour une UserAgent basée sur des conseils client, notez qu'il n'est 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 (et non les ordinateurs portables ou de bureau), le nom du modèle sera renseigné avec un nom de modèle tel que "Pixel 6 Pro".

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

  • USER_AGENT
    • Appareils non mobiles: le champ model contient souvent une valeur combinée pour l'architecture et le nombre de bits, telle que "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 le nombre de bits. 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 mobile. Aucune valeur n'est définie pour les plates-formes de bureau.

Source

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

  • CLIENT_HINTS_LOW_ENTROPY: seules les indications client de base sont disponibles.
  • CLIENT_HINTS_HIGH_ENTROPY: des indications client sont disponibles, y compris au moins un champ classé comme à entropie élevée.