User-Agent-Reduktion
User-Agent-Reduktion ist eine weitgehend akzeptierte Browser-Initiative zur Reduzierung der Menge an datenschutzrelevanten Informationen, die in User-Agent-Strings (UA-Strings) bereitgestellt werden.
Dieser Artikel zeigt die Unterschiede in UA-Strings als Ergebnis der User-Agent-Reduktion und erklärt, wie Sie bei Bedarf sowohl gekürzte als auch zusätzliche UA-Informationen abrufen können.
Hintergrund
Der User-Agent-String (UA-String) — verfügbar im User-Agent HTTP-Header und in verwandten API-Funktionen wie Navigator.userAgent, Navigator.appVersion und Navigator.platform — ermöglicht es Servern und Netzwerkpartnern, die Anwendung, das Betriebssystem, den Anbieter und/oder die Version des anfordernden User Agents zu identifizieren.
Browser-Erkennung
Theoretisch ist der UA-String nützlich, um den Browser zu erkennen und Code bereitzustellen, um browser-spezifische Fehler zu umgehen oder fehlende Feature-Unterstützung zu kompensieren. Dies ist jedoch unzuverlässig und wird nicht empfohlen:
- Zukünftige Browser werden Fehler beheben und Unterstützung für neue Funktionen hinzufügen, sodass Ihr Browser-Erkennungscode regelmäßig aktualisiert werden muss, um zu vermeiden, dass Browser ausgeschlossen werden, die die Funktionen, für die Sie testen, tatsächlich unterstützen. Feature-Erkennung ist eine weitaus zuverlässigere Strategie.
- Es gibt wirklich keine Garantie dafür, dass der durch diese Eigenschaft beworbene User-Agent wirklich derjenige ist, in dem Ihre Seite geladen ist. Browser-Anbieter können im Grunde machen, was sie mit dem UA-String wollen, und würden historisch gesehen falsche Werte von solchen Eigenschaften zurückgeben, um nicht von einigen Websites ausgeschlossen zu werden.
- Einige Browser ermöglichen es Benutzern, den Wert dieses Feldes zu ändern, wenn sie möchten (UA-Spoofing).
Die folgenden Strategien sind weitaus zuverlässiger, um Fehler und unterschiedliche Browserunterstützung zu umgehen:
- Feature-Erkennung: Die Unterstützung eines Features erkennen, anstatt die Browserversion.
- Progressive Verbesserung: Bereitstellung einer Basis wesentlicher Inhalte und Funktionen für möglichst viele Benutzer, während das bestmögliche Erlebnis für Browser bereitgestellt wird, die den gesamten erforderlichen Code ausführen können.
Siehe auch Browser-Erkennung mit dem User-Agent für weitere Informationen, warum das Bereitstellen unterschiedlicher Inhalte für verschiedene Browser in der Regel eine schlechte Idee ist.
Datenschutzbedenken
Zusätzlich hat die in UA-Strings offengelegte Information historisch gesehen Datenschutz-Bedenken aufgeworfen — sie kann verwendet werden, um einen bestimmten User-Agent zu identifizieren, und kann daher für Fingerprinting genutzt werden.
Um solche Bedenken zu mildern, implementieren unterstützende Browser eine User-Agent-Reduktion, die den User-agent-Header und verwandte API-Funktionen aktualisiert, um eine reduzierte Menge an Informationen bereitzustellen.
UA-String-Änderungen nach der Reduktion
In unterstützenden Browsern entfernt die User-Agent-Reduktion drei Informationen aus dem UA-String — die genaue Plattform/OS-Version, das Gerätemodell und die Nebenversionsnummer des Browsers.
Lassen Sie uns ein Beispiel ansehen, damit Sie sehen können, wie das aussieht. Während vorher der UA-String für Chrome auf Android so aussehen könnte:
Mozilla/5.0 (Linux; Android 16; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.12.45 Mobile Safari/537.36
Sieht er nach dem User-Agent-Reduktions-Update jetzt so aus:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36
Die untenstehenden Abschnitte bieten mehr Details zu den jeweiligen Änderungen der UA-Strings.
Plattform-/OS-Version und Gerätemodell
Die Plattform-Version und das Gerätemodell werden immer durch feste Werte dargestellt:
Android 10; Kauf Android.Macintosh; Intel Mac OS X 10_15_7auf macOS.Windows NT 10.0; Win64; x64auf Windows.X11; CrOS x86_64 14541.0.0auf ChromeOS.X11; Linux x86_64auf Linux.
Nebenversionsnummer des Browsers
Die Hauptversionsnummer des Browsers wird korrekt angezeigt, aber die Nebenversionsnummern werden immer als Nullen angezeigt — 0.0.0.
Anfordern von UA-Informationen über Client-Hints
Möglicherweise haben Sie noch Code, der auf detaillierten UA-String-Daten basiert und nicht in der Lage ist, auf Feature-Erkennung oder progressive Verbesserung umgestellt zu werden. Beispiele sind feingranulares Logging, Betrugspräventionsmaßnahmen oder eine Software-Hilfeseite, die aufgrund des Gerätetyps des Benutzers unterschiedliche Inhalte bereitstellt.
In diesem Fall können Sie immer noch auf detaillierte UA-String-Daten über Sec-CH-UA-* Header (auch bekannt als User-Agent-Client-Hints) zugreifen. Diese Header bieten eine sicherere und datenschutzfreundlichere Möglichkeit, solche Informationen zu senden, da Server sich für die gewünschten Informationen entscheiden müssen, anstatt dass sie ständig über den User-Agent-String gesendet werden. Außerdem bietet es Zugang zu einer breiteren Auswahl an Informationen.
Weitere Informationen finden Sie unter User-Agent-Client-Hints.
Zugriff auf Client Hints über JavaScript
Die User-Agent Client Hints API ermöglicht den Zugriff auf Client-Hint-Informationen über JavaScript. Die Navigator.userAgentData-Eigenschaft bietet Zugriff auf das NavigatorUAData-Objekt, das Eigenschaften mit den niederschwelligen Client-Hints enthält.
Um auf hochschwellige Hints wie Sec-CH-UA-Model und Sec-CH-UA-Form-Factors zuzugreifen, müssen Sie die Methode NavigatorUAData.getHighEntropyValues() verwenden.
Weitere Informationen finden Sie in der User-Agent Client Hints API.