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
etUserAgent.platform.brand
diffèrent souvent d'unUserAgent
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 siUserAgent
é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" etUserAgent.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 champversion
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
etCLIENT_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 champsversion
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 champversion
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 champversion
ne sera pas renseigné.CLIENT_HINTS_HIGH_ENTROPY
: le champversion
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
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 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.