User-Agent analysieren: Browser, System und Gerät
Ein User-Agent-Header ist kompakt, aber schwer lesbar, da Anbieter Produktkennungen, Kompatibilitätsmerkmale, Hinweise auf das Betriebssystem und Geräteangaben in einer Zeile verbinden.
Im Browser ausführen – kostenlos
Dieser Parser erzeugt daraus ein vorhersehbares Ergebnis mit Name und Version des Browsers, Betriebssystem und Version sowie einer praktischen Gerätekategorie. Er nutzt transparente, deterministische Regeln. Daher liefert dieselbe Eingabe stets dieselbe Ausgabe, ohne Netzwerkabfrage, Zufall, Fingerprinting oder verborgene Anreicherung.
Geben Sie möglichst den vollständigen Header an
Fügen Sie den Wert des HTTP-Headers User-Agent einschließlich aller Produktkennungen und des Plattformabschnitts in Klammern in das Feld user_agent ein. Vollständige Strings liefern genügend Hinweise, um Browser zu unterscheiden, die dieselbe Rendering-Familie verwenden. Aktuelle Strings von Edge, Opera, Samsung Internet und Chrome können beispielsweise alle die Kennung Chrome enthalten. Deshalb prüft der Parser zuerst die spezifischeren Merkmale und übernimmt erst danach den allgemeinen Chrome-Treffer. Die Reihenfolge ist ebenso bei Firefox und Chrome unter iOS wichtig, weil Vorgaben der Apple-Plattform dort andere Strings als auf Desktop-Systemen bewirken. Leerzeichen am Anfang und Ende werden ignoriert. Ein leerer oder ausschließlich aus Leerzeichen bestehender Wert wird jedoch als ungültige Eingabe abgelehnt, da keine sinnvolle Einstufung möglich ist. Der Parser kontaktiert weder das Gerät noch fragt er eine IP-Adresse ab; auch Client Hints und andere Identifikatoren werden nicht verknüpft. Wenn Sie Versionsangaben benötigen, senden Sie den ursprünglichen Header statt einer verkürzten Bezeichnung. Ein gekürzter oder unbekannter String kann verarbeitet werden, doch Felder ohne erkennbare Hinweise erscheinen als Unbekannt mit einer leeren Version, anstatt Werte zu erraten.
So funktionieren die Regeln für Browser und Betriebssystem
Die Erkennung folgt einer festen Rangfolge gebräuchlicher User-Agent-Kennungen. Spezifische Merkmale wie Edg, OPR, SamsungBrowser, CriOS und FxiOS werden vor allgemeinen Mustern für Chrome, Firefox und Safari ausgewertet. Dadurch wird ein Chromium-basierter Browser nicht allein deshalb als Chrome bezeichnet, weil sein Header diesen Namen aus Kompatibilitätsgründen enthält. Bei Safari dient die Kennung Version zur Ermittlung, da die separate Safari-Kennung die Produktfamilie und nicht die veröffentlichte Browserversion beschreibt. Betriebssysteme werden ähnlich vorsichtig ausgewertet: Windows Phone kommt vor Desktop-Windows, Android vor dem allgemeinen Linux und iOS vor macOS-Kompatibilitätsfragmenten. Unterstriche in Apple-Versionen werden in Punkte umgewandelt. Windows-NT-Werte werden bekannten Versionen zugeordnet, sofern eine verlässliche übliche Zuordnung besteht. Windows NT 10.0 wird bewusst als „10 oder 11“ ausgegeben, weil der klassische Header diese Versionen nicht zuverlässig trennt. Dies sind bekannte Musterregeln und keine Wahrscheinlichkeitsaussagen. Neue Produkte, aus Datenschutzgründen reduzierte Strings, eingebettete Webansichten und herstellerspezifische Varianten können daher Unbekannt oder nur eine allgemeine Familie ergeben. Dieses zurückhaltende Verhalten ist für Auswertungen sicherer als erfundene Genauigkeit.
Behandeln Sie den Gerätetyp als Kategorie, nicht als Identität
Das Ergebnis device_type ist eine grobe betriebliche Kategorie: Desktop, Mobilgerät, Tablet, Bot oder unbekannt. Tablet-Merkmale werden vor allgemeinen Mobilmerkmalen geprüft, weil viele Android-Tablets Android enthalten, Mobile aber absichtlich auslassen. Erkannte Telefone, iPhone, iPod, Windows Phone und weitere mobile Kennungen ergeben Mobilgerät. Übliche Begriffe für Crawler ergeben Bot. Das ist für Protokollübersichten nützlich, ersetzt jedoch weder mehrstufige Schutzmaßnahmen gegen Missbrauch noch die Authentifizierung verifizierter Crawler. Ein erkennbarer Desktop-Browser oder ein entsprechendes Betriebssystem wird standardmäßig als Desktop eingestuft. Ein String ohne bekannte Browser- oder Systemhinweise ergibt unbekannt. Diese Kategorien beschreiben lediglich die Selbstauskunft des Absenders und kein verifiziertes physisches Gerät. User-Agent-Werte lassen sich ändern, automatisierte Clients können Browser nachahmen und moderne Datenschutzfunktionen reduzieren bewusst Einzelheiten. Nutzen Sie das Ergebnis für Berichte, Protokollanreicherung, Kompatibilitätshinweise oder eine sinnvolle anfängliche Darstellung. Verwenden Sie es nicht als Sicherheitsgrenze, eindeutigen Fingerabdruck oder Eigentumsnachweis. Bei Entscheidungen über Zugriff, Zahlungen oder Betrug sind serverseitige Autorisierung und spezialisierte Risikosignale erforderlich.
Anwendungsfälle
Anfrageprotokolle anreichern
Wandeln Sie rohe Header in einheitliche Spalten für Browser, System und Gerät um, damit Betriebsberichte leichter auswertbar sind.
Datenverkehr zusammenfassen
Gruppieren Sie Besuche nach groben Browser- und Gerätekategorien, ohne den Header an einen externen Dienst zu senden.
Kompatible Vorgaben wählen
Wählen Sie eine sinnvolle Startoberfläche oder Supportmeldung; die endgültige Entscheidung sollte weiterhin eine Funktionsprüfung treffen.
Häufige Fragen
Was kostet eine Analyse?
Jede API-Anfrage kostet $0.002. Die deterministische Browserversion kann auch lokal auf der Seite ausgeführt werden.
Warum wird Windows als 10 oder 11 angezeigt?
Klassische User-Agent-Strings melden für beide meist Windows NT 10.0. Der Header allein kann sie daher nicht zuverlässig unterscheiden.
Eignet sich der User-Agent für Sicherheitsentscheidungen?
Nein. Clients können den Header ändern oder imitieren. Behandeln Sie das Ergebnis als beschreibende Metadaten, nicht als verifizierte Identität.
Was geschieht bei einem unbekannten Browser?
Der Browser erscheint als Unbekannt und die Version bleibt leer. Erkennbare Hinweise auf System oder Gerät werden weiterhin ausgegeben.
Fragt die Analyse einen externen Dienst ab?
Nein. Sie verwendet lokale, deterministische Regeln ohne Netzwerkanfragen, Fingerprinting oder Anreicherung anhand der IP-Adresse.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/user-agent-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}'const res = await fetch("https://api.kit.forhosting.com/web/user-agent-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/user-agent-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/user-agent-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/user-agent-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.user_agent_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |