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
etUserAgent.platform.brand
diffèrent souvent entre unUserAgent
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 siUserAgent
é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" etUserAgent.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 champversion
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
etCLIENT_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 champsversion
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 champversion
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 champversion
ne sera pas renseigné.CLIENT_HINTS_HIGH_ENTROPY
: le champversion
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
etUserAgent.bitness
.
- Appareils non mobiles: le champ
CLIENT_HINTS_LOW_ENTROPY
: le champmodel
ne sera pas renseigné.CLIENT_HINTS_HIGH_ENTROPY
: le champmodel
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.