Werkzeuge
Leitfäden

User-Agent-Parser

Dev

Zerlegt einen User-Agent-String in Browser, Engine, Betriebssystem und Gerätetyp. Heuristisch, rein clientseitig.

100 % clientseitig Ohne Backend
User-Agent-String
Ausgabe
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#

  1. Klicken Sie oben auf Meinen Browser verwenden, um den eigenen navigator.userAgent dieses Browsers ins Eingabefeld zu laden — der schnellste Weg, zu sehen, wie Ihr eigener Traffic aussieht.
  2. 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.
  3. 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ätdesktop, mobile oder tablet, erschlossen aus Token wie iPad, Android ohne Mobile, iPhone.
    • Botja / nein, markiert durch Abgleich gegen Crawler-Bezeichner (bot, crawl, spider, slurp, pingdom, headless, phantomjs, curl, wget, python-requests, axios …).
  4. Klicken Sie auf Leeren, um beide Spalten zu leeren.
  5. 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 Unterscheidung Android ... Mobile getrennt — 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.