Ciblage user-agent

User-Agent a toujours été inclus dans les demandes d'enchères afin de fournir des données de ciblage telles que le navigateur et la plate-forme de l'appareil de lancement. Toutefois, les navigateurs masquent souvent considérablement l'user-agent en raison de sa difficulté d'utilisation et pour mieux protéger la confidentialité des utilisateurs. C'est pourquoi Google accepte User-Agent Client Hints, qui sont incluses dans les demandes d'enchères, le cas échéant, afin de compléter l'en-tête user-agent. Ces indicateurs client (en abrégé) peuvent provenir des en-têtes Sec-Ch-UA* ou à partir de l'API JavaScript Client Hints.

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

  • OpenRTB: BidRequest.device.ua
  • RTB Google (obsolète): BidRequest.user_agent

Un message UserAgent est renseigné avec des hints client lorsqu'ils sont disponibles, mais elles seront renseignées en fonction des valeurs analysées à partir du En-tête user-agent. Selon le protocole utilisé, il est exposé des champs suivants:

  • OpenRTB: BidRequest.device.sua
  • RTB Google (obsolète): BidRequest.user_agent_data

Nous recommandons vivement aux enchérisseurs d'utiliser le message UserAgent plutôt que le Chaîne user-agent.

Comment le champ UserAgent est-il renseigné ?

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

Selon que les hints client sont ou non disponibles dans la demande d'annonce, le Le message UserAgent peut être renseigné comme suit:

  • Si la requête contient au moins faible entropie Hints client : le UserAgent est renseigné en fonction de leur contenu.
  • Si la requête ne contient que l'en-tête user-agent, UserAgent est remplis 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

Supposons qu'il existe une demande d'annonce pour 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 rempli uniquement en fonction de l'en-tête user-agent peut se présenter comme suit : les éléments suivants:

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 indications client

Supposons qu'il existe une demande d'annonce pour 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 indicateurs client d'entropie faibles sont inclus, le UserAgent sera renseigné en fonction du contenu de ces en-têtes, même si le user-agent si des en-têtes sont présents. Il doit se présenter 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

Insertion 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 ou non sur l'en-tête user-agent ou les hints client. Voici un résumé de ces différences:

  • Pour les navigateurs et les plates-formes identiques, UserAgent.browsers.brand et UserAgent.platform.brand est souvent différent d'un UserAgent en raison de l'en-tête user-agent ou les hints 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 uniques à l'en-tête user-agent ou aux hints client. Par exemple, "AppleWebKit" apparaîtra si UserAgent étaient basées sur l'en-tête user-agent, alors que "Chromium" n'apparaissait si elles étaient basées sur les hints client.
  • Seul un UserAgent basé sur l'en-tête user-agent peut contenir des valeurs figées. Par exemple, si la plateforme était Windows 11 22H2, UserAgent.platform.brand serait défini sur "Windows NT". UserAgent.platform.version serait défini sur [“10”, “0”], car il s'agit la valeur figée pour toute version de Windows supérieure ou égale à 10.

Normalement, les données dans UserAgent basées sur les hints client ne sont pas des le remplacement inexact des informations gelées ou masquées. S'il y a des incohérence entre l'en-tête user-agent et une UserAgent basée sur le client Remarques : il est préférable d'utiliser les informations provenant de UserAgent.

Champs de l'objet User-Agent

Cette section résume chaque champ, en mettant l'accent sur les spécificités des enchères en temps réel Google et les bonnes pratiques d'utilisation.

Navigateurs

Contient une liste de BrandVersion entrées 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 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 Version classique, par opposition à la version mobile.

UserAgent ne liste pas toujours les navigateurs dans un ordre spécifique, surtout si elles sont basées sur les hints client. Vous trouverez ci-dessous les 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 est figée (dépend de la règle spécifique à l'agent). Notez qu'il n'y aura aucun indique que la valeur est figée.
  • CLIENT_HINTS_LOW_ENTROPY et CLIENT_HINTS_HIGH_ENTROPY: les entrées sont ne sont classées selon aucun critère ; Ainsi, le même navigateur peut envoyer ces les entrées dans des ordres différents dans chaque requête. Ils peuvent également contenir L'entrée GREASE, qui : doit être ignoré.
  • CLIENT_HINTS_HIGH_ENTROPY: tous les champs version trouvés dans les navigateurs peuvent être définies sur "Versions complètes".

Plate-forme

Une BrandVersion qui décrit la plate-forme. Il est possible qu'elle ne soit pas compatible avec l'user-agent l'en-tête et les hints client. Par conséquent, le ciblage de certaines plates-formes peut nécessiter des tests 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 Client Hints. Vous trouverez ci-dessous d'autres différences que vous pouvez constater en fonction du la valeur de source:

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

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, 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 les hints client, notez que cette information ne sera renseignée 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 la version du réseau est 32 bits ou 64 bits). CPU 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 valeur de bitness définie sur "32" ou "64".

Pour une UserAgent basée sur les hints client, notez que cette information ne sera renseignée lorsque source est défini sur CLIENT_HINTS_HIGH_ENTROPY.

Modèle

Identifie le modèle de l'appareil. Pour les appareils mobiles, c'est-à-dire pas pour les ordinateurs portables ou ordinateurs, il sera renseigné avec un nom de modèle comme "Pixel 6 Pro".

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

  • USER_AGENT
    • Appareils non mobiles: le champ model contient souvent une combinaison et la valeur de bit, comme "x64" pour Windows. Cette valeur est et non multiplate-forme. par exemple, Linux peut utiliser "x86_64" pour 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 n'est pas renseigné.
  • CLIENT_HINTS_HIGH_ENTROPY: le champ model n'est renseigné que pour le modèle 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 l'UserAgent. Pour les hints client, cela fait également la distinction entre les deux cas suivants:

  • CLIENT_HINTS_LOW_ENTROPY: seuls les indicateurs client de base sont disponibles.
  • CLIENT_HINTS_HIGH_ENTROPY: des indicateurs client sont disponibles. Ils incluent au moins un champ classé comme étant à entropie élevée.