User-Agent-Targeting

Der User-Agent-Header wurde bisher in Gebotsanfragen aufgenommen, um nützliche Targeting-Daten wie den Browser und die Plattform des ausführenden Geräts bereitzustellen. In Browsern wird der User-Agent jedoch häufig stark entfernt, da er nur schwer zu verwenden ist und der Datenschutz der Nutzer besser geschützt werden soll. Google unterstützt daher User-Agent-Client-Hints, die bei Verfügbarkeit in Gebotsanfragen enthalten sind, um den User-Agent-Header zu ergänzen. Diese Client-Hinweise können aus Sec-Ch-UA*-Headern oder aus der JavaScript Client Hints API stammen.

Der User-Agent-Header wird im Feld BidRequest.device.ua als String angezeigt.

Eine UserAgent-Nachricht wird mit Client-Hints ausgefüllt, wenn diese verfügbar sind. Andernfalls werden Werte aus der User-Agent-Header-Zeile verwendet. Dieser Wert wird im Feld BidRequest.device.sua angezeigt.

Bietern wird dringend empfohlen, die UserAgent-Nachricht anstelle des User-Agent-Strings zu verwenden.

Wie UserAgent ausgefüllt wird

Im Gegensatz zum User-Agent-Header enthält die UserAgent-Nachricht die User-Agent-Informationen in mehreren Feldern für bestimmte Informationen.

Je nachdem, ob in der Anzeigenanfrage Client-Hinweise verfügbar sind, kann die UserAgent-Nachricht auf folgende Arten ausgefüllt werden:

  • Wenn die Anfrage mindestens Client-Hinweise mit niedriger Entropie enthält, wird UserAgent anhand ihres Inhalts ausgefüllt.
  • Wenn die Anfrage nur den User-Agent-Header enthält, wird UserAgent anhand der Informationen aus dem Header ausgefüllt.

Beispiel: UserAgent anhand des User-Agent-Headers 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

Ein UserAgent, das 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 basierend auf Client-Hints 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 mindestens Client-Hints mit niedriger Entropie enthalten sind, wird UserAgent anhand des Inhalts dieser Header ausgefüllt, auch wenn User-Agent-Header vorhanden sind. Das 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

Daten basierend auf dem User-Agent-Header oder Client-Hints einfügen

Einige Felder werden unterschiedlich ausgefüllt, je nachdem, ob sie auf der 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, die auf dem User-Agent-Header oder Client-Hinweisen basiert. UserAgent.platform.brand könnte beispielsweise als „Windows NT“ angezeigt werden, wenn es auf dem User-Agent-Header basiert, oder als „Windows“, wenn es auf Client-Hints basiert.
  • Einige UserAgent.browsers-Einträge sind nur für den User-Agent-Header oder für Client-Hints spezifisch. Beispielsweise würde „AppleWebKit“ angezeigt, wenn UserAgent auf dem User-Agent-Header basiert, während „Chromium“ nur angezeigt würde, wenn es auf Clienthinweisen basiert.
  • Nur eine UserAgent, die auf dem User-Agent-Header basiert, kann eingefrorene 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 alle Windows-Versionen ab 10 ist.

Daten in UserAgent, die auf Clienthinweisen basieren, sind normalerweise kein ungenauer Ersatz für eingefrorene oder entfernte Informationen. Bei Abweichungen zwischen dem User-Agent-Header und einer UserAgent, die auf Client-Hints basiert, sollten die Informationen aus der UserAgent bevorzugt verwendet werden.

Felder des User-Agent-Objekts

In diesem Abschnitt werden die einzelnen Felder zusammengefasst. Dabei liegt der Schwerpunkt auf dem spezifischen Verhalten von Google RTB und Best Practices für die Verwendung.

Browser

Enthält eine Liste von BrandVersion-Einträgen, die in der Regel nach Spezifität sortiert sind. Wenn Sie beispielsweise den Inhalt von browsers auflisten, werden die brand für jeden Eintrag möglicherweise in der folgenden Reihenfolge angezeigt:

Marke Bedeutung
Mozilla Mozilla-kompatibel
AppleWebKit AppleWebKit-basiert, ein Teil von Mozilla.
Chrome Chrome-Browser, eine Teilmenge der AppleWebKit-kompatiblen Browser
Safari Desktopversion im Vergleich zur mobilen Version.

Die UserAgent listet Browser nicht immer in einer bestimmten Reihenfolge auf, insbesondere wenn sie auf Clienthinweisen basiert. Im Folgenden werden weitere Unterschiede beschrieben, die sich je nach Wert von source ergeben können:

  • USER_AGENT: Das Feld version kann auf eine Hauptversion reduziert oder eingefroren werden (je nach agentenspezifischer Richtlinie). Es gibt keine Angabe dazu, dass der Wert eingefroren ist.
  • CLIENT_HINTS_LOW_ENTROPY und CLIENT_HINTS_HIGH_ENTROPY: Die Einträge werden nicht nach bestimmten Kriterien sortiert. Beispielsweise kann derselbe Browser diese Einträge in jeder Anfrage in einer anderen Reihenfolge senden. Sie können auch einen GREASE-Eintrag enthalten, der ignoriert werden sollte.
  • CLIENT_HINTS_HIGH_ENTROPY: Alle version-Felder in Browsern können auf die Vollversionen gesetzt werden.

Plattform

Ein BrandVersion-Eintrag, der die Plattform beschreibt. Das ist möglicherweise nicht mit dem User-Agent-Header und Client-Hinweisen kompatibel. Daher müssen für das Targeting auf einigen Plattformen möglicherweise zwei Namen getestet werden. Das Macintosh-Betriebssystem von Apple wird beispielsweise in der User-Agent-Header-Datei als „Macintosh“ und in Clienthinweisen als „macOS“ bezeichnet. Im Folgenden werden weitere Unterschiede beschrieben, die sich je nach Wert von source ergeben können:

  • USER_AGENT: Das Feld version kann auf eine Hauptversion reduziert oder eingefroren werden. Es gibt keinen Hinweis darauf, dass der Wert eingefroren ist.
  • CLIENT_HINTS_LOW_ENTROPY: Das Feld version wird nicht ausgefüllt.
  • CLIENT_HINTS_HIGH_ENTROPY: Das Feld version kann auf die Vollversion gesetzt sein.

Mobilgerät

Gibt an, ob Inhalte wie Anzeigen für kleine Bildschirme und/oder Eingaben per Berührung optimiert werden sollen. Dies ist nicht unbedingt ein Indikator für den Gerätetyp, da mobile Browser so konfiguriert werden können, dass eine „Desktop-Website“ angefordert wird.

Architektur

Gibt die Architektur der Plattform an, z. B. „x86“ oder „arm“.

Bei einer UserAgent, die auf Client-Hints basiert, wird dieser Wert nur dann ausgefüllt, wenn source auf CLIENT_HINTS_HIGH_ENTROPY festgelegt ist.

Bitness

Gibt die Bitanzahl der Plattform an, z. B. ob es sich um eine 32-Bit- oder 64-Bit-CPU handelt. Das Feld ist ein Ganzzahlstring, der zusätzliche Informationen zur Architektur enthält. Beispielsweise kann die Bitanzahl einer „x86“-Architektur auf „32“ oder „64“ festgelegt sein.

Bei einer UserAgent, die auf Client-Hints basiert, wird dieser Wert nur dann ausgefüllt, wenn source auf CLIENT_HINTS_HIGH_ENTROPY festgelegt ist.

Modell

Gibt das Gerätemodell an. Bei Mobilgeräten (nicht Laptops oder Desktop-Computern) wird hier ein Modellname wie „Pixel 6 Pro“ angezeigt.

Im Folgenden werden die Unterschiede beschrieben, die sich je nach Wert von source ergeben können:

  • USER_AGENT
    • Nicht mobile Geräte: Das Feld model enthält häufig einen kombinierten Wert für Architektur und Bitanzahl, z. B. „x64“ für Windows. Dieser Wert ist nicht plattformübergreifend. Unter Linux wird beispielsweise für dieselbe Hardware möglicherweise „x86_64“ verwendet.
    • Mobilgeräte: Dieses Feld enthält keine Informationen zur Architektur und Bitanzahl. Weitere Informationen zu diesen Werten finden Sie unter UserAgent.architecture und UserAgent.bitness.
  • 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 Computerplattformen ist kein Wert festgelegt.

Quelle

Gibt an, welche Überschriften zum Erstellen der UserAgent verwendet wurden. Bei Clienthinweisen wird außerdem zwischen den folgenden beiden Fällen unterschieden:

  • CLIENT_HINTS_LOW_ENTROPY: Es sind nur grundlegende Client-Hints verfügbar.
  • CLIENT_HINTS_HIGH_ENTROPY: Clienthinweise sind verfügbar, einschließlich mindestens eines Felds, das als „hohe Entropie“ klassifiziert ist.