User-Agent-Parser
DevZerlegt einen User-Agent-String in Browser, Engine, Betriebssystem und Gerätetyp. Heuristisch, rein clientseitig.
- Browser
- Engine
- Betriebssystem
- Gerätetyp
- Bot / Crawler
Auf dieser Seite
Was ist ein User-Agent-Parser?#
Die User-Agent-(UA)-Zeichenkette ist die Textzeile, die jeder Browser und jeder HTTP-Client an seine Anfragen anhängt, um sich selbst zu beschreiben. Sie ist auch berüchtigt für ihre unstrukturierte Unordnung: Hersteller stapeln historische Kompatibilitäts-Token übereinander, sodass eine einzelne moderne Chrome-Zeichenkette auch die Wörter Mozilla, AppleWebKit, KHTML, Gecko und Safari enthält — keiner davon bedeutet, dass der Browser tatsächlich irgendetwas davon ist. Einen rohen UA mit dem Auge zu lesen, ist langsam und fehleranfällig, weshalb fast jedes Analytics-Dashboard, jedes Access-Log-Werkzeug und jede Bot-Erkennungsschicht ihn zuerst durch einen Parser jagt.
Diese Seite nimmt eine beliebige UA-Zeichenkette auseinander in die fünf Fakten, die Sie tatsächlich wollen: Browser (Name und Version), Engine (der Rendering-Kern), Betriebssystem (OS und Version), Gerätetyp (Desktop, Mobil oder Tablet) und Bot (ob die Zeichenkette wie ein Crawler aussieht). Sie läuft vollständig in Ihrem Browser — fügen Sie eine Zeichenkette aus einer Log-Zeile ein und lesen Sie die Aufschlüsselung, ohne Server-Round-Trip.
Der Grund, warum Browser-Erkennung schwieriger ist, als sie aussieht, ist die Reihenfolge. Spezialisierte Browser müssen vor Chrome geprüft werden, weil ihre UA-Zeichenketten alle das Literal-Token Chrome aus Kompatibilität enthalten. Microsoft Edge, Opera, Samsung Internet, Vivaldi und CocCoc würden von einer naiven if (ua.includes("chrome"))-Prüfung alle fälschlich als Chrome gemeldet. Dasselbe gilt für Engines: Die Zeichenkette AppleWebKit erscheint sowohl in Blink-Browsern (Chrome, Edge, Opera) als auch in reinen WebKit-Browsern (Safari), daher wird die Engine aus der Browser-Familie erschlossen, nicht direkt gematcht.
So wird es verwendet#
- Klicken Sie oben auf Meinen Browser verwenden, um den eigenen
navigator.userAgentdieses Browsers ins Eingabefeld zu laden — der schnellste Weg, zu sehen, wie Ihr eigener Traffic aussieht. - Oder fügen Sie eine beliebige UA-Zeichenkette in die Eingabe-Spalte ein — aus einem nginx-Access-Log, einem
req.headers["user-agent"]in Ihrem Backend, einer curl-Anfrage, irgendetwas. - Lesen Sie die fünf Zeilen in der Ausgabe-Spalte:
- Browser — Familienname und Hauptversion (z. B.
Chrome 120). - Engine — die Rendering-Engine (Blink, WebKit, Gecko, Trident).
- Betriebssystem — Betriebssystem und Version, wo wiederherstellbar (z. B.
Windows 10/11,iOS 17,Android 14). - Gerät —
desktop,mobileodertablet, erschlossen aus Token wieiPad,AndroidohneMobile,iPhone. - Bot —
ja/nein, markiert durch Abgleich gegen Crawler-Bezeichner (bot,crawl,spider,slurp,pingdom,headless,phantomjs,curl,wget,python-requests,axios…).
- Browser — Familienname und Hauptversion (z. B.
- Klicken Sie auf Leeren, um beide Spalten zu leeren.
- Die Statuszeile fasst das Ergebnis zusammen oder meldet, dass die Eingabe leer war.
Die wichtigsten Funktionen#
- Spezialitäten-erste Browser-Erkennung. Edge, Opera, Samsung Internet, Vivaldi, CocCoc und Firefox werden alle vor Chrome und Safari gematcht, sodass sie nicht lautlos vom
Chrome-Kompatibilitäts-Token verschluckt werden. - Engine aus der Familie erschlossen. Blink versus WebKit wird durch den erkannten Browser entschieden, nicht durch einen fragilen direkten Match auf
AppleWebKit— weshalb eine Safari-Zeichenkette nicht als Chrome gemeldet wird. - Gerätetyp-Klassifikation. Tablets werden von Handys über das
iPad-Token und die UnterscheidungAndroid ... Mobilegetrennt — dieselben Heuristiken, auf die sich Analytics-Tools verlassen. - Crawler-Markierung. Die
Bot-Zeile markiert die Zeichenketten, die Sie normalerweise aus menschenzugewandten Metriken ausschließen wollen — Such-Crawler, Uptime-Monitore, Headless-Browser und HTTP-Bibliotheken. - 100 % clientseitig. Es wird nie ein UA irgendwohin gesendet. Das heißt auch, dass Sie Token aus Produktions-Logs einfügen können, ohne sie an eine Dritt-Parser-API zu leaken.
Anwendungsbeispiel#
Fügen Sie diese typische Chrome-auf-Windows-Zeichenkette aus einem Access-Log ein:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
und die fünf Zeilen füllen sich als:
Browser Chrome 120
Engine Blink
OS Windows 10/11
Gerät desktop
Bot nein
Kontrastieren Sie nun mit einer Edge-Zeichenkette — beachten Sie das abschließende Edg/120:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
Ein naiver Parser, der zuerst Chrome prüft, meldet hier Chrome 120 — falsch. Diese Seite prüft Edg/ vor Chrome/, sodass dieselbe Zeichenkette korrekt Browser: Microsoft Edge 120 liefert, mit der Engine weiterhin Blink (Edge basiert auf Chromium).
Ein dritter Fall zeigt den Bot-Pfad. Ein Health-Check-Skript, das curl/7.81.0 sendet, wird als Bot: ja markiert, obwohl es keinen Mozilla-Mantel trägt, weil curl eines der Bibliotheks-Token ist, nach denen der Bot-Matcher sucht. Das ist die Zeile, die es Ihnen erlaubt, echten Nutzer-Traffic von automatisiertem Rauschen zu trennen, wenn Sie ein Log überfliegen.
FAQ#
Warum meldet mein Edge-Browser „Microsoft Edge“ und nicht „Chrome“, obwohl der UA das Wort Chrome enthält?#
Weil Edges UA bewusst Chrome/120.0.0.0 enthält, damit Websites, die gebaut wurden, um Chrome auszuliefern, auch Edge ausliefern. Dieser Parser testet das Edg/-Token zuerst, dann Chrome/, sodass die spezialisierte Familie gewinnt. Jeder Parser, der seine Prüfungen nicht in dieser Reihenfolge vornimmt, wird jede Chromium-Ableitung als Chrome melden.
Kann ich der BS-Version aus einer UA-Zeichenkette trauen?#
Bis zu einem gewissen Grad. Windows kollabiert 10 und 11 zu Windows NT 10.0, daher werden sie hier als 10/11 gemeldet. iOS- und macOS-Versionen sind aus dem OS X_x_x-Token wiederherstellbar, werden aber historisch zum Release-Zeitpunkt eingefroren. Behandeln Sie die Version als starken Hinweis, nicht als Garantie, und treffen Sie keine Sicherheitsentscheidungen abhängig davon.
Ist die Bot-Markierung zuverlässig genug, um Traffic zu blockieren?#
Nein — UA-basierte Bot-Erkennung ist eine Erleichterung für Log-Analyse und Dashboard-Filter, keine Sicherheitsgrenze. Bösartliche Clients fälschen beliebige UAs, inklusive perfekt menschlich aussehender. Nutzen Sie diese Zeile, um die offensichtlichen Crawler und Bibliotheken zu entdecken; nutzen Sie Rate-Limiting, Authentifizierung und Verhaltensprüfungen für alles, was wirklich vertrauenswürdig sein muss.
Der Parser zeigt für alles „Unbekannt“. Was habe ich eingefügt?#
Entweder eine leere/Whitespace-Zeichenkette oder einen UA von einem Client, den dieser Parser nicht erkennt (manche Desktop-Apps und SDKs senden eigenwillige Bezeichner). Die Statuszeile sagt im ersten Fall, dass die Eingabe leer war; im zweiten fallen Browser und OS schlicht auf Unbekannt durch, während der Gerätetyp auf desktop defaultet. Die rohe Zeichenkette bleibt in der Eingabe-Spalte erhalten, sodass Sie sie inspizieren können.