PowerScan
DE

User-Agent-Strings und Client Hints: Was sie verraten und was eingefroren wurde

Browser-Fingerprints · 6 Min. Lesezeit · von PowerScan

Foto: Unsplash

Der User-Agent-String ist das älteste Identifikationssignal im Web und das, das sich in den letzten Jahren am stärksten verändert hat. Ihn gut zu lesen heißt zu wissen, was noch darin steckt, was bewusst eingefroren wurde und wohin die entfernten Details gewandert sind.

Was der String sagt

Ein aktueller Chromium-String unter Windows sieht so aus: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Die historischen Token (Mozilla/5.0, AppleWebKit, like Gecko, Safari) stehen dort aus Kompatibilität mit Jahrzehnte alten Skripten und enthalten keine Information. Nützlich sind die Plattform (Windows NT 10.0, selbst unter Windows 11), die Architektur und die Hauptversion des Browsers.

Was früher dort stand, wurde absichtlich entfernt. Die Neben- und Patch-Version lautet jetzt 0.0.0. Die Windows-Version ist auf 10.0 festgelegt. Android-Strings enthalten das Gerätemodell nicht mehr. Das ist die „User-Agent-Reduktion“, die Chromium zwischen 2022 und 2023 ausgeliefert hat, genau weil der String zu einer Fingerprinting-Oberfläche geworden war.

Client Hints: dieselben Daten, auf Anfrage

Die entfernten Details sind nicht verschwunden; sie sind zu den User-Agent Client Hints umgezogen. Ein Server kann mit einem Accept-CH-Header bestimmte Felder anfordern, und der Browser sendet dann bei späteren Anfragen Header wie Sec-CH-UA-Platform-Version oder Sec-CH-UA-Model. Die Low-Entropy-Hints (Marke und Hauptversion, Plattform, Mobile-Flag) werden standardmäßig gesendet. Die High-Entropy-Hints (vollständige Version, Architektur, Bitness, Modell, Plattformversion) werden nur an Websites gesendet, die danach fragen, und ein Skript kann denselben Satz über navigator.userAgentData.getHighEntropyValues() anfordern.

Das Designziel ist, dass die Website erklären muss, was sie will, wodurch die Erhebung sichtbar und prüfbar wird. In der Praxis kann eine Website, die Fingerprinting betreiben will, weiterhin alles anfordern; der Unterschied ist, dass die Anfrage etwas ist, das der Browser sehen, protokollieren oder ablehnen kann.

Das Konsistenzproblem

Weil dieselben Fakten jetzt aus zwei Quellen verfügbar sind, lassen sie sich vergleichen. Ein Browser, der seinen User-Agent-String auf macOS ändert, aber navigator.userAgentData.platform weiterhin Windows melden lässt, hat einen Widerspruch erzeugt, der trivial zu erkennen ist. Dasselbe gilt für die Eigenschaft navigator.platform, die für die Seite sichtbaren betriebssystemspezifischen Schriften und den WebGL-Renderer-String, der einen Grafiktreiber nennt, den es nur auf einem Betriebssystem gibt. Nur den String zu fälschen ist seit Jahren eine verlorene Strategie.

Den eigenen lesen

Eine Diagnose zeigt den rohen String, den daraus geparsten Browser samt Version und die Engine (Blink, Gecko oder WebKit). Beachten Sie, dass jeder Browser unter iOS WebKit meldet, was auch immer die Marke sagt, weil Apple es vorschreibt. Wenn der geparste Browsername überrascht, wird der String von einer Erweiterung oder einer Profileinstellung verändert; ob das ein Problem ist, hängt davon ab, ob der Rest des Browsers die Änderung mitträgt.

Alle Artikel · Scan starten