User-Agent-Targeting

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 und UserAgent.platform.brand häufig zwischen einer UserAgent 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, wenn UserAgent 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, wird UserAgent.platform.brand auf „Windows NT“ und UserAgent.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 Feld version 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 und CLIENT_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: Alle version-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 Feld version kann auf eine Hauptversion reduziert oder eingefroren sein. Es wird nicht darauf hingewiesen, dass der Wert eingefroren ist.
  • CLIENT_HINTS_LOW_ENTROPY: Das Feld version wird nicht ausgefüllt.
  • CLIENT_HINTS_HIGH_ENTROPY: Für das Feld version 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 und UserAgent.bitness an.
  • CLIENT_HINTS_LOW_ENTROPY: Das Feld model wird nicht ausgefüllt.
  • CLIENT_HINTS_HIGH_ENTROPY: Das Feld model 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.