User-Agent-Parser
Zerlege einen User-Agent-String in Informationen zu Browser, Engine, Betriebssystem und Gerät.
User-Agent-Parser wird geladen… Wenn nichts passiert, aktiviere JavaScript.
Der User-Agent-Header ist eine Textzeichenkette im freien Format, die Webbrowser und HTTP-Clients mit jeder Anfrage senden und mit der sie die Software identifizieren, die die Verbindung aufbaut. Obwohl es sich nur um eine einzige Textzeile handelt, kodiert ein gut geformter User-Agent eine erstaunliche Menge an Informationen: die Browserfamilie und -version, die zugrunde liegende Rendering-Engine, das Betriebssystem und dessen Version sowie oft den Gerätetyp oder das Gerätemodell. Diese Informationen waren ursprünglich dafür gedacht, dass Webserver browsergerechte Inhalte ausliefern konnten, zu einer Zeit, als Internet Explorer und Netscape Seiten sehr unterschiedlich darstellten. Heute werden User-Agent-Strings für Analysen, Bot-Erkennung, Funktionserkennung und das Debuggen von Kompatibilitätsproblemen in Webanwendungen genutzt.
Häufig gestellte Fragen
Welche Daten sendet dieses Tool an eure Server?
Warum enthalten User-Agent-Strings 'Mozilla/5.0' sogar bei Chrome und Safari?
Warum stimmt das geparste Ergebnis nicht immer mit meinen Erwartungen überein?
Was ist der Unterschied zwischen der Browser-Engine und dem Browser selbst?
Gibt es bei diesem Tool Nutzungsbeschränkungen?
Wie verhält sich das im Vergleich zur Verwendung von navigator.userAgent in JavaScript?
Was sind Client Hints und wie ersetzen sie den User-Agent?
Protokolliert dieses Tool User-Agent-Strings für Analysen oder Werbung?
Wie identifizieren sich Bots und Crawler im User-Agent?
Kann ich den Betriebssystem- und Geräteinformationen in einem User-Agent vertrauen?
Über User-Agent-Parser
Webentwickler fügen User-Agent-Strings in Parser ein, wenn ein Fehlerbericht von einem Nutzer auf einer unbekannten Plattform eintrifft und sie genau verstehen müssen, welche Kombination aus Browser und Betriebssystem im Spiel ist. QA-Ingenieure nutzen die geparsten UA-Daten, um zu überprüfen, ob sich ihre automatisierten Testsuiten korrekt identifizieren. Sicherheitsteams analysieren User-Agents in den Serverprotokollen, um Web-Scraper, Schwachstellenscanner und Bots zu erkennen. API-Entwickler prüfen den UA eingehender Anfragen, um zu verstehen, welche Client-Bibliotheken und SDK-Versionen ihre Nutzer einsetzen. DevOps-Ingenieure setzen UA-Daten mit Fehlerraten in Beziehung, um browserspezifische Kompatibilitätsregressionen aufzuspüren.
Dieses Tool parst User-Agent-Strings vollständig in deinem Browser mithilfe einer clientseitigen JavaScript-Bibliothek, es werden keine Daten an unsere Server gesendet. Der aktuelle User-Agent-String deines Browsers wird beim Laden der Seite automatisch erkannt, sodass du dein eigenes geparstes Ergebnis sofort sehen kannst. Du kannst auch jeden beliebigen UA-String einfügen, den du aus einem Serverprotokoll oder einem Fehlerbericht kopiert hast, um ihn bei Bedarf zu parsen. Der Parser ermittelt die Browserfamilie, die Browserversion, die Rendering-Engine (Blink, Gecko, WebKit, Trident), das Betriebssystem, die Betriebssystemversion und die Gerätekategorie (Desktop, Mobilgerät, Tablet, Bot). Die Ergebnisse werden in einem strukturierten Format dargestellt, wobei jedes Feld klar beschriftet ist.
Denke beim Lesen der geparsten Ergebnisse daran, dass die Richtigkeit von User-Agent-Strings nicht garantiert ist, jeder Client kann einen beliebigen UA-String setzen, und das Fälschen ist kinderleicht. Chrome unter Android etwa enthält aus historischen Kompatibilitätsgründen die Tokens 'Mozilla/5.0' und 'Safari' in seinem UA, weshalb rohe UA-Strings selbst bei bekannten Browsern bizarr wirken. Das Projekt des 'eingefrorenen' Chrome-UA (gestartet um 2021) zielt darauf ab, den Informationsabfluss zu verringern, indem die Versionsnummern im UA-String gedeckelt und die detaillierte Browseridentifikation in die strukturierten Client-Hints-Header (Sec-CH-UA-*) verlagert werden. Wenn du eine Browsererkennung für den Produktiveinsatz entwickelst, bevorzuge nach Möglichkeit die Client-Hints-API gegenüber dem Parsen des User-Agent.
Der String, der sich selbst zerbrach: eine kurze Geschichte des User-Agent-Chaos
Der User-Agent-Header wurde 1992 in der ersten veröffentlichten HTTP-Spezifikation eingeführt, ursprünglich als einfache einzeilige Kennung der Software gedacht, die eine Anfrage stellt, etwa 'NCSA_Mosaic/2.0'. Das Chaos begann fast sofort. Als Netscape Navigator 1994 erschien und den Browsermarkt rasch beherrschte, begannen Webentwickler, 'verbesserte' Seiten nur an Netscape auszuliefern, das sich als 'Mozilla' identifizierte. Microsofts Internet Explorer, 1995 veröffentlicht, musste dieselben verbesserten Seiten erhalten und fügte daher 'Mozilla/2.0 (compatible; MSIE 3.0)' zu seinem UA-String hinzu, gab sich also als Mozilla aus und identifizierte sich zugleich als MSIE.
Jeder größere Browser, der folgte, wiederholte dasselbe Muster. Opera fügte Mozilla-Kompatibilitäts-Tokens hinzu. Safari, aufgebaut auf der zu WebKit abgespaltenen KHTML-Engine, fügte 'Mozilla/5.0 (... like Gecko)' zu seinem String hinzu. Chrome, aufgebaut auf WebKit, fügte die Tokens 'AppleWebKit' und 'Safari' hinzu, um sicherzustellen, dass auf Safari ausgerichteter Code auch in Chrome läuft. Das Ergebnis ist, dass ein aktueller Chrome-UA-String unter Windows Tokens für Mozilla, AppleWebKit, KHTML, Gecko und Safari enthält, fünf verschiedene Verweise auf konkurrierende Browser, von denen keiner Chromes eigene Identität ist, die nur als 'Chrome/version' gegen Ende erscheint.
Google kündigte das User-Agent-Reduction-Projekt 2020 an, mit dem Ziel, den UA-String bis 2022 auf einen festen Wert geringer Entropie einzufrieren und die detaillierte Browseridentifikation auf den strukturierten, opt-in-basierten Client-Hints-Mechanismus zu verlagern. Die tatsächliche Einführung verlief langsamer als geplant, und zwar aufgrund von Bedenken zur Webkompatibilität, da Millionen von Webanwendungen für eine Logik, die sich nicht leicht migrieren lässt, auf das Parsen des UA-Strings angewiesen sind. Damit wird der User-Agent-Header zu einem lebendigen Beispiel dafür, wie schwierig es ist, einen fehlerhaften, aber tief verankerten Internetstandard abzuschaffen: Selbst nach drei Jahrzehnten und nahezu allgemeiner Anerkennung, dass das Format kaputt ist, misst sich der Aufwand für seine Ablösung in Jahren.