Der Header User-Agent wurde in der Vergangenheit in Gebotsanfragen enthalten, um nützliche Targeting-Daten wie den Browser und die Plattform des initiierenden Geräts bereitzustellen. Browser entfernen jedoch häufig den User-Agent stark, da die Verwendung schwierig ist und die Privatsphäre der Nutzer besser geschützt wird. Google unterstützt daher User-Agent-Client-Hints, die als Ergänzung zum User-Agent-Header in Gebotsanfragen enthalten sind, sofern verfügbar. Diese Client Hints (kurz) können aus Sec-Ch-UA*-Headern oder aus der JavaScript Client Hints API stammen.
Abhängig vom verwendeten Protokoll wird der User-Agent-Header mit einem der folgenden Stringfelder angezeigt:
- Google:
BidRequest.user_agent
- OpenRTB:
BidRequest.device.ua
Eine UserAgent
-Nachricht wird mit Clienthinweisen gefüllt, wenn sie verfügbar sind. Andernfalls wird sie auf der Grundlage von Werten gefüllt, die aus dem User-Agent-Header geparst wurden. Je nach verwendetem Protokoll wird dies als eines der folgenden Felder bereitgestellt:
- Google:
BidRequest.user_agent_data
- OpenRTB:
BidRequest.device.sua
Bietern wird dringend empfohlen, die Nachricht UserAgent
anstelle des User-Agent-Strings zu verwenden.
So wird UserAgent
ausgefüllt
Im Gegensatz zum User-Agent-Header stellt die UserAgent
-Nachricht die User-Agent-Informationen dar, die für bestimmte Informationen in mehrere Felder unterteilt sind.
Je nachdem, ob Kundenhinweise in der Anzeigenanfrage verfügbar sind, kann die Meldung UserAgent
auf folgende Arten eingefügt werden:
- Wenn die Anfrage mindestens Clienthinweise mit niedriger Entropie enthält, wird
UserAgent
anhand ihres Inhalts ausgefüllt. - Wenn die Anfrage nur den User-Agent-Header enthält, wird
UserAgent
auf Grundlage dessen ausgefüllt, was aus dem Header geparst werden kann.
Beispiel: UserAgent
basierend auf dem User-Agent-Header ausfüllen
Angenommen, es gibt eine Anzeigenanfrage, bei der der Browser die folgenden Header sendet:
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
Eine UserAgent
, die ausschließlich auf Grundlage des User-Agent-Headers ausgefüllt wird, könnte so aussehen:
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
Beispiel: UserAgent
auf Grundlage von Clienthinweisen ausfüllen
Angenommen, es gibt eine Anzeigenanfrage, bei der der Browser die folgenden Header sendet:
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
Wenn Clienthinweise mit mindestens einer niedrigen Entropie enthalten sind, wird UserAgent
anhand des Inhalts dieser Header ausgefüllt, auch wenn User-Agent-Header vorhanden sind. Sie würde so aussehen:
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
Wird anhand des User-Agent-Headers im Vergleich zu Clienthinweisen ausgefüllt
Einige Felder werden unterschiedlich ausgefüllt, je nachdem, ob sie auf dem User-Agent-Header oder auf Clienthinweisen basieren. Im Folgenden finden Sie eine Zusammenfassung dieser Unterschiede:
- Bei identischen Browsern und Plattformen unterscheiden sich
UserAgent.browsers.brand
undUserAgent.platform.brand
häufig zwischen einerUserAgent
basierend auf dem User-Agent-Header oder den Clienthinweisen. Beispiel:UserAgent.platform.brand
wird möglicherweise als „Windows NT“ angezeigt, wenn es auf dem User-Agent-Header basiert, oder als „Windows“, wenn es auf Clienthinweisen basiert. - Einige
UserAgent.browsers
-Einträge gelten nur für den User-Agent-Header oder für Clienthinweise. Beispiel: „AppleWebKit“ wird angezeigt, wennUserAgent
auf dem User-Agent-Header basiert, während „Chromium“ nur auf Clienthinweisen basiert. - Nur ein
UserAgent
, der auf dem User-Agent-Header basiert, darf fixierte Werte enthalten. Wenn die Plattform beispielsweise Windows 11 22H2 ist, wirdUserAgent.platform.brand
auf „Windows NT“ undUserAgent.platform.version
auf[“10”, “0”]
festgelegt, da dies der eingefrorene Wert für jede Windows-Version ab 10 ist.
Daten in UserAgent
, die auf Clienthinweisen basieren, sind normalerweise kein ungenauer Ersatz für eingefrorene oder entfernte Informationen. Wenn es aufgrund von Client-Hinweisen Abweichungen zwischen dem User-Agent-Header und einem UserAgent
gibt, sollten die Informationen aus dem UserAgent
bevorzugt werden.
UserAgent-Objektfelder
In diesem Abschnitt werden die einzelnen Felder zusammengefasst. Der Schwerpunkt liegt dabei auf dem RTB-spezifischen Verhalten von Google und den Best Practices für die Verwendung.
Browser
Enthält eine Liste von BrandVersion-Einträgen, die im Allgemeinen nach Spezifität geordnet sind. Wenn Sie beispielsweise den Inhalt von browsers
auflisten, kann brand
für jeden Eintrag in der folgenden Reihenfolge angezeigt werden:
Marke | Meaning |
Mozilla | Mozilla-kompatibel |
AppleWebKit | AppleWebKit-basiert, eine Untergruppe von Mozilla. |
Chrome | Chrome-Browser, eine Untergruppe der mit AppleWebKit kompatiblen Browser |
Safari | eine Computervariante im Gegensatz zu einer mobilen Variante. |
UserAgent
listet Browser nicht immer in einer bestimmten Reihenfolge auf, insbesondere wenn sie auf Clienthinweisen basiert. Im Folgenden werden weitere Unterschiede beschrieben, die basierend auf dem Wert von source
zu erwarten sind:
USER_AGENT
: Das Feldversion
kann auf eine Hauptversion reduziert oder eingefroren sein (abhängig von agent-spezifischer Richtlinie). Es gibt keinen Hinweis darauf, dass der Wert eingefroren ist.CLIENT_HINTS_LOW_ENTROPY
undCLIENT_HINTS_HIGH_ENTROPY
: Die Einträge sind nicht nach Kriterien sortiert. Beispielsweise kann es sein, dass derselbe Browser die Einträge in den einzelnen Anfragen in unterschiedlicher Reihenfolge sendet. Sie können auch einen GREASE-Eintrag enthalten, der ignoriert werden sollte.CLIENT_HINTS_HIGH_ENTROPY
: Alleversion
-Felder in Browsern können auf Vollversionen gesetzt sein.
Plattform
Ein BrandVersion-Eintrag, der die Plattform beschreibt. Dies ist möglicherweise nicht mit dem User-Agent-Header und den Clienthinweisen kompatibel, sodass für das Targeting auf einigen Plattformen möglicherweise zwei Namen getestet werden müssen. Beispielsweise trägt das Macintosh-Betriebssystem von Apple im User-Agent-Header die Bezeichnung „Macintosh“ und in Clienthinweisen die Bezeichnung „macOS“.
Im Folgenden werden weitere Unterschiede beschrieben, die basierend auf dem Wert von source
zu erwarten sind:
USER_AGENT
: Das Feldversion
kann auf eine Hauptversion reduziert oder eingefroren sein. Es wird nicht darauf hingewiesen, dass der Wert eingefroren ist.CLIENT_HINTS_LOW_ENTROPY
: Das Feldversion
wird nicht ausgefüllt.CLIENT_HINTS_HIGH_ENTROPY
: Für das Feldversion
kann die Vollversion angegeben werden.
Mobilgeräte
Gibt an, ob Inhalte wie Anzeigen für kleine Bildschirme und/oder die Eingabe per Berührung optimiert werden sollten. Dies ist nicht unbedingt ein Indikator für den Gerätetyp, da mobile Browser so konfiguriert werden können, dass eine Desktopwebsite angefordert wird.
Architektur
Gibt die Architektur der Plattform an, z. B. „x86“ oder „arm“.
Beachten Sie, dass dieses Feld für UserAgent
, das auf Clienthinweisen basiert, nur ausgefüllt wird, wenn source
auf CLIENT_HINTS_HIGH_ENTROPY
gesetzt ist.
Bit-Version
Gibt die Bit-Version der Plattform an, z. B. ob sie eine 32-Bit- oder 64-Bit-CPU hat. Das Feld ist ein Ganzzahlstring, der zusätzliche Informationen zu seiner Architektur liefert. Eine „x86“-Architektur kann beispielsweise eine Bitität auf „32“ oder „64“ haben.
Beachten Sie, dass dieses Feld für UserAgent
, das auf Clienthinweisen basiert, nur ausgefüllt wird, wenn source
auf CLIENT_HINTS_HIGH_ENTROPY
gesetzt ist.
Modell
Identifiziert das Gerätemodell. Für Mobilgeräte (nicht Laptops oder Computer) wird ein Modellname wie „Pixel 6 Pro“ eingetragen.
Im Folgenden werden die Unterschiede beschrieben, die basierend auf dem Wert von source
zu erwarten sind:
USER_AGENT
- Nicht-Mobilgeräte: Das Feld
model
enthält häufig einen kombinierten Architektur- und Bititätswert, z. B. „x64“ für Windows. Dieser Wert gilt nicht plattformübergreifend. Linux könnte zum Beispiel „x86_64“ für dieselbe Hardware verwenden. - Mobilgeräte: Dieses Feld enthält keine Informationen zu Architektur und Bitform.
Wenn Sie an diesen Werten interessiert sind, sehen Sie sich
UserAgent.architecture
undUserAgent.bitness
an.
- Nicht-Mobilgeräte: Das Feld
CLIENT_HINTS_LOW_ENTROPY
: Das Feldmodel
wird nicht ausgefüllt.CLIENT_HINTS_HIGH_ENTROPY
: Das Feldmodel
wird nur für das Gerätemodell von Mobilgeräten ausgefüllt. Für Desktop-Plattformen ist kein Wert festgelegt.
Quelle
Gibt an, welche Header zum Erstellen des UserAgent
verwendet wurden. Bei Clienthinweisen wird außerdem zwischen den folgenden beiden Fällen unterschieden:
CLIENT_HINTS_LOW_ENTROPY
: Nur grundlegende Clienthinweise sind verfügbar.CLIENT_HINTS_HIGH_ENTROPY
: Clienthinweise sind verfügbar, einschließlich mindestens eines Felds, das als hohe Entropie klassifiziert ist.