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 le user-agent en raison de sa difficulté d'utilisation et pour mieux protéger la confidentialité des utilisateurs. En réponse, Google prend en charge les hints client user-agent, qui sont inclus dans les demandes d'enchères lorsqu'ils sont disponibles pour compléter l'en-tête User-Agent. Ces indications client (pour faire court) peuvent provenir des en-têtes Sec-Ch-UA* ou de l'API JavaScript Client Hints.
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 les hints client lorsqu'ils seront disponibles, mais sera sinon renseigné en fonction des valeurs analysées à partir de l'en-tête User-Agent. Cela est exposé dans le champ BidRequest.device.sua.
Nous encourageons vivement les enchérisseurs à utiliser le message UserAgent plutôt que la chaîne User-Agent.
Comment le UserAgent est-il renseigné ?
Contrairement à l'en-tête User-Agent, le message UserAgent représente les informations de l'agent utilisateur ventilées dans plusieurs champs pour obtenir des informations spécifiques.
Selon que les indications 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 indications client à faible entropie, le champ
UserAgentest renseigné en fonction de leur contenu. - Si la requête ne contient que l'en-tête User-Agent,
UserAgentest renseigné en fonction de ce qui peut être analysé à partir de l'en-tête.
Exemple : Remplir UserAgent en fonction de l'en-tête User-Agent
Imaginons une demande d'annonce dans laquelle le navigateur envoie 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 ressembler à ce qui 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 hints client
Imaginons une demande d'annonce dans laquelle le navigateur envoie 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 des hints client à faible entropie sont inclus, le UserAgent sera renseigné en fonction du contenu de ces en-têtes, même si des en-têtes User-Agent sont présents. Elle se présente alors sous la forme suivante :
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 les Client Hints. Voici un récapitulatif de ces différences :
- Pour des navigateurs et des plates-formes identiques,
UserAgent.browsers.brandetUserAgent.platform.branddiffèrent souvent entre unUserAgenten fonction de l'en-tête User-Agent ou des Client Hints. Par exemple,UserAgent.platform.brandpeut s'afficher 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.browserssont propres à l'en-tête User-Agent ou aux indicateurs client. Par exemple, "AppleWebKit" s'afficherait siUserAgentétait basé sur l'en-tête User-Agent, tandis que "Chromium" ne s'afficherait que s'il était basé sur les indications du client. - Seul un
UserAgentbasé sur l'en-tête User-Agent peut contenir des valeurs figées. Par exemple, si la plate-forme est Windows 11 22H2,UserAgent.platform.brandest défini sur "Windows NT" etUserAgent.platform.versionest défini 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 indications du client ne remplaceront normalement 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 les 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 à Google RTB et sur 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 deviez lister le contenu de browsers, les brand de chaque entrée pourraient apparaître dans l'ordre suivant :
| Marque | Signification |
| Mozilla | Compatible avec Mozilla |
| AppleWebKit | Basé sur AppleWebKit, un sous-ensemble de Mozilla. |
| Chrome | Navigateur Chrome, un sous-ensemble de navigateurs compatibles avec AppleWebKit |
| Safari | Variante pour ordinateur (par opposition à la variante pour mobile). |
La liste UserAgent n'affiche pas toujours les navigateurs dans un ordre spécifique, en particulier si elle est basée sur les indications du 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 champversionpeut être réduit à une version majeure ou figé (selon la règle spécifique à l'agent). Notez qu'aucune indication ne précise que la valeur est figée.CLIENT_HINTS_LOW_ENTROPYetCLIENT_HINTS_HIGH_ENTROPY: les entrées ne sont pas classées selon un critère particulier. Par exemple, le même navigateur peut envoyer ces entrées dans un ordre différent à chaque requête. Elles peuvent également contenir une entrée GREASE, qui doit être ignorée.CLIENT_HINTS_HIGH_ENTROPY: tous les champsversiontrouvés dans les navigateurs peuvent être définis sur les versions complètes.
Plate-forme
Entrée BrandVersion décrivant la plate-forme. Il est possible que cela ne soit pas compatible avec l'en-tête User-Agent et les indicateurs 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 identifié comme "Macintosh" dans l'en-tête User-Agent, mais comme "macOS" dans les Client Hints.
Vous trouverez ci-dessous d'autres différences auxquelles vous pouvez vous attendre en fonction de la valeur de source :
USER_AGENT: le champversionpeut ê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 champversionne sera pas renseigné.CLIENT_HINTS_HIGH_ENTROPY: le champversionpeut être défini sur la version complète.
Mobile
Indique si le contenu, comme les annonces, doit être optimisé pour les petits écrans et/ou les commandes tactiles. Notez que cela n'indique pas nécessairement le 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, telle que "x86" ou "arm".
Pour un UserAgent basé sur les indications du client, notez qu'il ne sera renseigné que lorsque source sera 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 bitness définie sur "32" ou "64".
Pour un UserAgent basé sur les indications du client, notez qu'il ne sera renseigné que lorsque source sera défini sur CLIENT_HINTS_HIGH_ENTROPY.
Modèle
Identifie le modèle de l'appareil. Pour les appareils mobiles (c'est-à-dire les ordinateurs portables ou de bureau), ce champ sera renseigné avec un nom de modèle tel que "Pixel 6 Pro".
Vous trouverez ci-dessous les différences auxquelles vous pouvez vous attendre en fonction de la valeur de source :
USER_AGENT- Appareils non mobiles : le champ
modelcontient souvent une valeur combinée d'architecture et de bitness, 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 en bits.
Si ces valeurs vous intéressent, consultez
UserAgent.architectureetUserAgent.bitness.
- Appareils non mobiles : le champ
CLIENT_HINTS_LOW_ENTROPY: le champmodelne sera pas renseigné.CLIENT_HINTS_HIGH_ENTROPY: le champmodelne sera renseigné que pour le modèle d'appareil mobile. Aucune valeur n'est définie pour les plates-formes pour ordinateur.
Source
Identifie les en-têtes utilisés pour créer le UserAgent. Pour les indications client, cela permet également de faire la distinction entre les deux cas suivants :
CLIENT_HINTS_LOW_ENTROPY: seuls les indicateurs client de base sont disponibles.CLIENT_HINTS_HIGH_ENTROPY: les indications client sont disponibles, y compris au moins un champ classé comme ayant une entropie élevée.