🛠️ToolsShed

User-Agent-Parser

Beliebige User-Agent-Strings parsen, um Browser, Betriebssystem, Gerätetyp und Engine zu extrahieren.

Häufig gestellte Fragen

Code-Implementierung

import re

UA_PATTERNS = {
    "browser": [
        (r"Edge/([d.]+)",           "Edge"),
        (r"OPR/([d.]+)",            "Opera"),
        (r"Chrome/([d.]+)",         "Chrome"),
        (r"Firefox/([d.]+)",        "Firefox"),
        (r"Safari/([d.]+).*Version/([d.]+)", "Safari"),
        (r"MSIE ([d.]+)",           "IE"),
        (r"Trident/.*rv:([d.]+)",   "IE"),
    ],
    "os": [
        (r"Windows NT ([d.]+)",     "Windows"),
        (r"Mac OS X ([d._]+)",      "macOS"),
        (r"Android ([d.]+)",        "Android"),
        (r"iPhone OS ([d_]+)",      "iOS"),
        (r"Linux",                   "Linux"),
    ],
    "device": [
        (r"Mobile",                  "Mobile"),
        (r"Tablet",                  "Tablet"),
        (r"iPad",                    "Tablet"),
        (r"iPhone",                  "Mobile"),
    ],
}

def parse_ua(ua: str) -> dict:
    result = {"browser": "Unknown", "os": "Unknown", "device": "Desktop", "raw": ua}

    for pattern, name in UA_PATTERNS["browser"]:
        m = re.search(pattern, ua)
        if m:
            result["browser"] = f"{name} {m.group(1)}"
            break

    for pattern, name in UA_PATTERNS["os"]:
        m = re.search(pattern, ua)
        if m:
            version = m.group(1).replace("_", ".") if m.lastindex else ""
            result["os"] = f"{name} {version}".strip()
            break

    for pattern, device_type in UA_PATTERNS["device"]:
        if re.search(pattern, ua, re.IGNORECASE):
            result["device"] = device_type
            break

    return result

test_uas = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Mobile/15E148 Safari/604.1",
    "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
]

for ua in test_uas:
    info = parse_ua(ua)
    print(f"Browser: {info['browser']}, OS: {info['os']}, Device: {info['device']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.