Was ist ein User-Agent? Auslesen und ändern

Veröffentlicht:

19 Min. Lesezeit

Acar Diveroli
Autor: Acar Diveroli
Eine blaue Linie zum Schnittpunkt der Achsen Plattform und Browser auf der Drahtgitterkugel, rechts die User-Agent-Spalte

Wenn Sie die Downloadseite eines Programms öffnen, schlägt die Website von sich aus die passende Datei für Ihr Betriebssystem vor. Manche Websites schicken Besuchern mit Smartphone eine eigene mobile Seite. Die Website tut das, ohne Sie zu fragen, denn Ihr Browser sendet mit jeder Anfrage einen einzeiligen Text, in dem er sich vorstellt. Diese Zeile heißt User-Agent.

Die erste Hälfte dieses Artikels richtet sich an alle: wie man einen User-Agent-String Stück für Stück liest, wie Sie Ihren eigenen sehen und wie Sie ihn in Chrome, unter Windows 11 und auf Android ändern. Die zweite Hälfte ist technischer: die User-Agent-Reduzierung von Chrome, die Client-Hints-Header, die an ihre Stelle getreten sind, was eine Änderung des User-Agents nicht ändert und wie sich ein selbst geschriebenes Skript ausweisen sollte.

Was ist ein User-Agent?

Wenn Ihr Browser eine Seite anfordert, sendet er dem Server nicht nur die Adresse. Über der Anfrage stehen kurze Informationszeilen, die Header: welche Sprachen Sie bevorzugen, welche Dateitypen Sie akzeptieren und welche Software die Anfrage sendet. Letzteres ist der Header User-Agent.

Der HTTP-Standard RFC 9110 definiert diesen Header als das Feld, das Informationen über die Software enthält, von der die Anfrage ausgeht. Server nutzen diese Angabe für drei Aufgaben: herauszufinden, in welchem Browser ein Kompatibilitätsproblem auftritt, die Antwort an die Einschränkungen des Clients anzupassen und Statistiken über Browser und Betriebssysteme zu führen. Der Standard empfiehlt, dass ein Client diesen Header mit jeder Anfrage sendet.

Der Ausdruck „User Agent“ bezeichnet eigentlich nicht den Header, sondern die Software: Jedes Programm, das in Ihrem Namen Anfragen sendet, ist ein User Agent. Ein Browser, der Bot einer Suchmaschine, eine Smartphone-App, der Befehl curl und ein Python-Skript fallen unter diese Definition, und jedes davon hat einen User-Agent-Wert.

Zwei verbreitete Irrtümer lassen sich gleich zu Beginn ausräumen. Der User-Agent enthält weder Ihre IP-Adresse noch Ihren Standort. Die IP-Adresse wird aus der Verbindung selbst gelesen; wie sie sich ändert, erklären wir in unserem Artikel zum Ändern der IP-Adresse. Der User-Agent ist auch keine Authentifizierung: Er ist eine Selbstauskunft des Clients, und der Server kann anhand des Headers nicht prüfen, ob diese Auskunft stimmt.

Wie liest man einen User-Agent-String?

Ein aktueller Chrome unter Windows sendet diesen Wert (das Beispiel stammt von der User-Agent-Seite von MDN):

text
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36

Neben Chrome stehen in der Zeile auch die Namen Mozilla, AppleWebKit, Gecko und Safari. Der Grund ist historisch. Websites schrieben jahrelang Regeln wie „Wenn im User-Agent dieser Name steht, sende die erweiterte Seite“. Jeder neue Browser nahm die Namen der älteren in seine eigene Zeile auf, um diese Seite nicht zu verpassen. Nach den Worten von MDN ist Mozilla/5.0 ein allgemeines Token, das besagt, dass der Browser Mozilla-kompatibel ist, und aus historischen Gründen sendet es heute fast jeder Browser.

TeilWas sagt er aus?
Mozilla/5.0Kompatibilitätsüberbleibsel; unterscheidet keine Browser
(Windows NT 10.0; Win64; x64)Betriebssystem und Prozessorarchitektur
AppleWebKit/537.36 (KHTML, like Gecko)Engine-Namen, ebenfalls aus Kompatibilitätsgründen
Chrome/143.0.0.0Der eigentliche Browser und seine Hauptversion
Safari/537.36Ein Name für Websites, die mit Blick auf Safari geschrieben wurden

Die praktische Leseregel lautet: Das Betriebssystem steht in der ersten Klammer, der echte Name des Browsers meist nahe am Zeilenende. Edge hängt Edg/ an das Ende an, Firefox endet mit Firefox/. Auf Smartphones kommt das Wort Mobile in die Zeile; Websites, die anhand des User-Agents eine mobile Seite wählen, achten auf dieses Wort.

Noch ein Detail: Auch wenn Sie Windows 11 verwenden, steht in der Klammer Windows NT 10.0. Microsoft sagt in der eigenen Dokumentation ausdrücklich, dass User-Agent-Strings nicht aktualisiert werden, um Windows 10 und 11 zu unterscheiden. Den Grund sehen Sie weiter unten im Abschnitt zur User-Agent-Reduzierung.

Wie finden Sie Ihren User-Agent heraus?

Sie müssen nichts installieren. Die Bordmittel des Browsers genügen:

  1. Drücken Sie in Chrome oder Edge auf einer beliebigen Seite F12 (oder oben rechts die drei Punkte > Weitere Tools > Entwicklertools).
  2. Wechseln Sie im geöffneten Bereich auf den Tab Console.
  3. Geben Sie navigator.userAgent ein und drücken Sie die Eingabetaste. Die in Anführungszeichen zurückgegebene Zeile ist der User-Agent, den Ihr Browser an JavaScript meldet.
  4. Um zu sehen, was tatsächlich an den Server geht, wechseln Sie auf den Tab Network, laden Sie die Seite neu, klicken Sie auf die erste Anfrage der Liste und suchen Sie unter „Request Headers“ die Zeile User-Agent.

Schritt drei und vier sollten denselben Wert zeigen. Weichen sie voneinander ab, ändert eine Erweiterung oder eine Einstellung nur einen von beiden.

Wenn Sie die Konsole nicht verwenden möchten, tut es auch eine Seite, die die empfangenen Anfrage-Header unverändert zurückschreibt. Öffnen Sie https://httpbin.org/headers im Browser, und Sie sehen alle Header, die der Server von Ihnen erhalten hat; dieselbe Adresse verwenden wir im Codeteil dieses Artikels.

Wie ändert man den User-Agent?

Machen Sie sich zuerst klar, was Sie ändern: Der User-Agent ist keine Einstellung des Betriebssystems, sondern jedes einzelnen Browsers. Weder Windows 11 noch Android kennt eine zentrale User-Agent-Einstellung, die für alle Programme gilt.

Chrome und Edge (Windows 11, Windows 10, macOS)

Der offizielle Weg in Chrome ist der Tab „Network conditions“ in den DevTools. Edge basiert ebenfalls auf Chromium und bringt deshalb dieselben Werkzeuge mit.

  1. Öffnen Sie die DevTools mit F12.
  2. Folgen Sie oben rechts im Bereich den drei Punkten > More tools > Network conditions. Finden Sie den Eintrag im Menü nicht, öffnen Sie mit Ctrl+Shift+P das Befehlsmenü und tippen Sie „Network conditions“.
  3. Entfernen Sie unter der Überschrift User agent das Häkchen bei „Use browser default“.
  4. Wählen Sie einen fertigen Browser samt Gerät aus der Liste oder tragen Sie über „Custom...“ Ihren eigenen String ein.
  5. Laden Sie die Seite neu.

Im Feld „User agent client hints“ desselben Abschnitts lassen sich auch die weiter unten beschriebenen Client-Hints-Werte bearbeiten. Diese Änderung ist keine dauerhafte Browsereinstellung; sie gilt für die Dauer des Tests in dem Tab, in dem die DevTools geöffnet sind. Wir nennen hier die englischen Bezeichnungen der DevTools; in einer deutsch angezeigten Oberfläche stehen die Einträge an derselben Stelle.

Android-Smartphone

Auf Android gibt es keinen eingebauten Weg, einen User-Agent von Hand einzutragen, doch die am häufigsten gewünschte Änderung ist ein einziger Fingertipp. Tippen Sie in Chrome oben rechts auf die drei Punkte und setzen Sie das Häkchen bei Desktopwebsite; Chrome ruft die Website dann mit einer Desktop-Kennung auf, und das breite Layout erscheint. Soll das für jede Website der Standard sein, lautet der Weg in der Chrome-Hilfe: Einstellungen > Website-Einstellungen > Desktopwebsite.

Was ist ein User-Agent-Switcher?

Erweiterungen, die in den Browser-Stores unter dem Namen „User-Agent Switcher“ zu finden sind, erledigen dasselbe, ohne die DevTools zu öffnen, und dauerhaft: Sie wählen eine Kennung aus einer Liste, und die Erweiterung ersetzt damit den Header User-Agent der ausgehenden Anfragen. Sehen Sie sich vor der Installation die angeforderte Berechtigung an. Um Header ändern zu können, braucht die Erweiterung Zugriff auf Ihren Datenverkehr auf allen besuchten Websites; erteilen Sie diese Berechtigung nur einer Erweiterung, deren Quelle Sie vertrauen, und schalten Sie sie nach getaner Arbeit ab.

Warum ändert man den User-Agent?

Alle legitimen Gründe sind eine Art Test:

  • Die mobile Ansicht am Computer ausprobieren. Sehen, welche Seite die eigene Website an ein Smartphone sendet.
  • Ein Kompatibilitätsproblem eingrenzen. Herausfinden, ob eine alte Unternehmensseite, die „Ihr Browser wird nicht unterstützt“ meldet, wirklich nicht funktioniert.
  • Sehen, was die eigene Website Bots zeigt. Einen Konfigurationsfehler finden, der Suchmaschinen-Bots andere Inhalte liefert.
  • Einen Fehler reproduzieren. Ein Problem untersuchen, das nur in einem bestimmten Browser auftritt, wenn dieser Browser gerade nicht zur Hand ist.

RFC 9110 sieht diesen Fall ebenfalls vor: Gibt sich ein Client als ein anderer Client aus, darf der Server annehmen, dass der Nutzer die für diesen Client vorbereitete Antwort sehen möchte, auch wenn sie im echten Browser nicht gut funktioniert. Die Verantwortung liegt bei dem, der die Änderung vornimmt.

Was ist die User-Agent-Reduzierung (UA Reduction)?

Ältere User-Agent-Strings waren deutlich gesprächiger als heutige: die vollständige vierteilige Browserversion, der Patch-Stand des Betriebssystems und auf Android das Modell des Smartphones. Zusammengenommen waren diese Details ein fertiger Baustein für den Browser-Fingerabdruck, mit dem sich ein Nutzer ohne Cookies wiedererkennen lässt. RFC 9110 spricht dieselbe Warnung aus: Übermäßig detaillierte User-Agent-Werte erhöhen das Risiko, dass ein Nutzer gegen seinen Willen identifiziert wird.

Chrome hat den String deshalb schrittweise vereinfacht. Laut der Zeitleiste des Chromium-Projekts wurden die Unterversionsnummern in Chrome 101, die Angaben zum Desktop-Betriebssystem in Chrome 107 sowie Android-Version und Gerätemodell in Chrome 110 eingefroren. In dem String, den Chrome heute sendet, sind diese Teile nicht echt, sondern fest:

TeilOhne Reduzierung (Beispiel)Heute
BrowserversionChrome/143.0.12.45Chrome/143.0.0.0 (nur die Hauptversion ist echt)
WindowsEchte VersionImmer Windows NT 10.0; Win64; x64
macOSEchte VersionImmer Intel Mac OS X 10_15_7
AndroidAndroid 16; Pixel 9Immer Android 10; K

Deshalb sehen Sie unter Windows 11 NT 10.0 und auf einem nagelneuen Smartphone „Android 10“ mit einem Modell namens „K“. Auch die Schlussfolgerung liegt nahe: Ein Statistikwerkzeug, das aus dem User-Agent eines aktuellen Chrome die Betriebssystemversion oder das Smartphone-Modell lesen will, liefert falsche Ergebnisse.

Was sind Client Hints?

Manche Websites brauchen die Informationen wirklich, die mit der Vereinfachung verschwunden sind: etwa um die richtige Installationsdatei vorzuschlagen oder zu wissen, in welcher Version ein Fehler auftritt. Chrome hat diese Informationen nicht gelöscht, sondern auf Anfrage verfügbar gemacht. Der Mechanismus heißt User-Agent Client Hints und funktioniert, wie im Client-Hints-Leitfaden von MDN beschrieben, so:

  1. Mit der ersten Anfrage sendet der Browser neben dem vereinfachten User-Agent drei kurze Header: Sec-CH-UA (Browsermarke und Hauptversion), Sec-CH-UA-Mobile (mobil oder nicht) und Sec-CH-UA-Platform (Name des Betriebssystems).
  2. Ein Server, der mehr wissen möchte, nennt in seiner Antwort im Header Accept-CH die gewünschten Hinweise.
  3. Der Browser fügt die Hinweise, die er zulässt, den folgenden Anfragen an diese Website hinzu.
  4. Ist ein Hinweis schon bei der ersten Anfrage unverzichtbar, verwendet der Server den Header Critical-CH; der Browser sendet die Anfrage dann mit diesem Hinweis erneut.

Die drei Standard-Header sehen in einer Chrome-Anfrage so aus:

text
Sec-CH-UA: "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"

„Not A(Brand“ in der Liste ist kein Fehler. Laut MDN fügen Browser der Liste absichtlich eine erfundene Marke hinzu; Server sollen sich gar nicht erst angewöhnen, eine Anfrage abzulehnen, sobald sie einen unbekannten Namen sehen. Es ist eine Vorkehrung, damit sich die Geschichte von Mozilla/5.0 nicht wiederholt.

Art des HinweisesHeaderWann wird er gesendet?
Geringe EntropieSec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-PlatformBei jeder Anfrage, von selbst (nur HTTPS)
Hohe EntropieSec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-ArchNur wenn der Server sie mit Accept-CH anfordert

Dieselben Informationen erreicht JavaScript über navigator.userAgentData. Fügen Sie die folgenden Zeilen in die Chrome-Konsole ein, um Ihre eigenen Werte zu sehen:

js
console.log(navigator.userAgent);

if (navigator.userAgentData) {
  const details = await navigator.userAgentData.getHighEntropyValues([
    "platformVersion",
    "model",
    "fullVersionList",
  ]);
  console.log(details);
}

Unter Windows 11 liefert dieser Code für platformVersion eine Hauptversion von 13 oder höher; das ist die Methode, die Microsofts Dokumentation zur Unterscheidung von Windows 10 und 11 zeigt. Auf dem Windows-11-Rechner, den wir getestet haben, meldete der User-Agent weiterhin Windows NT 10.0, während platformVersion den Wert 19.0.0 lieferte.

Kennen Sie auch die Grenze. Client Hints gibt es heute nur in Chromium-basierten Browsern (Chrome, Edge, Opera). In den Kompatibilitätsdaten von MDN senden Firefox und Safari diese Header nicht, und das Objekt navigator.userAgentData ist dort nicht definiert. Deshalb ist die if-Prüfung im Code oben nötig.

Was ändert eine Änderung des User-Agents nicht?

Der User-Agent ist ein Etikett, und ein neues Etikett ändert nichts am Inhalt der Schachtel. Wenn Sie die Zeile auf „Safari auf dem iPhone“ stellen, bleibt Folgendes, wie es ist:

  • Client-Hints-Header. Haben Sie ein Werkzeug verwendet, das nur den Header User-Agent ändert, sendet Chrome weiterhin Sec-CH-UA-Platform: "Windows". Safari sendet diese Header überhaupt nicht; Ihre Anfrage behauptet also, Safari zu sein, und trägt zugleich Header, die nur Chromium sendet.
  • Was JavaScript sieht. Bildschirmgröße, installierte Schriftarten, Grafikkarte, Touchscreen-Unterstützung. Welche Signale das sind, listen wir in Was ist Browser-Fingerprinting? auf.
  • Die Verbindung selbst. Das erste Paket, das ein Browser beim Aufbau einer verschlüsselten Verbindung sendet, ist in jeder Browserfamilie anders aufgebaut und geht vor den Headern auf die Reise. Die Details stehen in unserem Artikel zu TLS-Fingerprinting und JA3.
  • Die IP-Adresse. Die Anfrage verlässt weiterhin Ihren Anschluss, mit Ihrer IP-Adresse.

Eine Änderung des User-Agents ist deshalb ein Testwerkzeug, kein Werkzeug zum Unsichtbarwerden. Bot-Schutzsysteme betrachten nicht einen einzelnen Header, sondern ob die Signale zueinander passen; das Gesamtbild beschreiben wir aus Sicht des Website-Betreibers in unserem Artikel zur Funktionsweise der Bot-Erkennung. Software, die den Aufbau eines stimmigen Kennungssatzes pro Profil übernimmt, ist eine eigene Kategorie: Was ist ein Antidetect-Browser und wie funktioniert er?.

User-Agent im Code: Standardwerte und eine ehrliche Bot-Kennung

Jeder Client außerhalb des Browsers hat ebenfalls einen User-Agent, und solange Sie ihn nicht setzen, ist es der Name der Bibliothek. Die folgenden Werte haben wir für diesen Artikel auf unserem eigenen Rechner gemessen; die Versionsnummer fällt bei Ihnen anders aus:

ClientStandard-User-Agent
curlcurl/8.21.0
Python Requestspython-requests/2.34.2
Node.js (eingebautes fetch)node

Diese Werte sind nicht falsch, sie sind ehrlich. Was ihnen fehlt: Sie sagen dem Administrator der Website nicht, wer Sie sind und wie man Sie erreicht. Ein Administrator, der Tausende Zeilen python-requests in seinen Logs sieht, hat nur eine Möglichkeit, nämlich zu sperren.

Für ein regelmäßig laufendes Skript zur Datenerfassung ist es etablierte gute Praxis, eine Kennung zu schreiben, die der Form „Produkt/Version (Kommentar)“ aus RFC 9110 folgt und den Namen des Bots sowie einen Kontaktweg enthält. Suchmaschinen-Bots machen es genauso; der Wert von Googlebot hat die Form Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html). Mit curl ist das eine einzige Zeile:

bash
# Standardkennung anzeigen
curl -s https://httpbin.org/headers

# Mit -A die eigene Kennung setzen
curl -s -A "ExamplePriceBot/1.0 (+https://example.com/bot-info)" https://httpbin.org/headers

Setzen Sie die Kennung in Python nicht für einzelne Anfragen, sondern für die Session. So gehen alle Anfragen mit derselben Kennung hinaus, und auch die Proxy-Einstellung steht an einer Stelle:

python
import requests

URL = "https://httpbin.org/headers"
BOT_UA = "ExamplePriceBot/1.0 (+https://example.com/bot-info; bot@example.com)"

# 1) Ohne jede Einstellung: die Kennung der Bibliothek
print(requests.get(URL, timeout=20).json()["headers"]["User-Agent"])

# 2) Feste, sich selbst ausweisende Kennung und Proxy für die gesamte Session
session = requests.Session()
session.headers["User-Agent"] = BOT_UA
proxy = "http://user:pass@pr.proxynet.io:8000"
session.proxies = {"http": proxy, "https": proxy}

for _ in range(3):
    print(session.get(URL, timeout=20).json()["headers"]["User-Agent"])

Die erste Zeile gibt python-requests/2.x aus, die nächsten drei die von Ihnen geschriebene Kennung. In Node.js erledigt das Feld headers des fetch-Aufrufs dieselbe Aufgabe:

js
const url = "https://httpbin.org/headers";

// 1) Standardkennung
let res = await fetch(url);
console.log((await res.json()).headers["User-Agent"]);

// 2) Die selbst geschriebene Kennung
res = await fetch(url, {
  headers: { "User-Agent": "ExamplePriceBot/1.0 (+https://example.com/bot-info; bot@example.com)" },
});
console.log((await res.json()).headers["User-Agent"]);

Speichern Sie die Datei mit der Endung .mjs; die erste Zeile der Ausgabe lautet node. Einen Proxy in Node.js zu definieren ist ein eigenes Thema, erprobte Beispiele finden Sie in Proxys in Node.js verwenden. Alle Proxy-Flags auf der curl-Seite stehen in cURL mit Proxy verwenden.

Warum bringt ein zufälliger User-Agent bei jeder Anfrage nichts?

Die meisten Scraping-Anleitungen im Netz empfehlen, eine „aktuelle User-Agent-Liste“ herunterzuladen und bei jeder Anfrage zufällig einen Eintrag daraus zu wählen. Den Mechanismus haben Sie im vorigen Abschnitt gesehen: Es ändert sich nur das Etikett. Wenn dieselbe IP-Adresse, dasselbe Cookie und dieselbe Verbindungsspur in einer Anfrage Chrome unter Windows und in der nächsten Safari auf dem iPhone sein wollen, entsteht ein Datenverkehr, der keinem echten Nutzer ähnelt. Eine einzige, feste Kennung, die sich selbst ausweist, ist stimmig und gibt dem Administrator der Website zudem einen Ansprechpartner. Beispiele für Stimmigkeit finden Sie im Abschnitt „Header und eine konsistente Client-Identität“ von Web Scraping ohne Sperren.

Warum sollte man sich nicht als Googlebot ausgeben?

Manche Anleitungen empfehlen, den Wert von Googlebot in den User-Agent zu schreiben. Tun Sie es aus zwei Gründen nicht. Erstens funktioniert es nicht: Google rät Websites, seinen Bot per Reverse-DNS-Abfrage oder anhand der veröffentlichten IP-Bereiche zu verifizieren. Eine IP-Adresse, die sich als Googlebot ausgibt, bei der Reverse-DNS-Abfrage aber nicht unter googlebot.com, google.com oder googleusercontent.com aufgelöst wird, wird schneller gesperrt als ein gewöhnlicher Bot. Zweitens verlassen Sie mit der Kennung einer anderen Organisation den Rahmen der Erlaubnis, die Ihnen die Website gegeben hat. Die einzige legitime Verwendung ist der oben genannte Test: zu sehen, was Ihre eigene Website dieser Kennung zurückgibt.

Ein ehrlicher Bot-Name hat noch einen Vorteil. Die Zeile User-agent: in einer robots.txt verwendet dasselbe Wort, ist aber etwas anderes: In dieser Zeile gibt der Website-Betreiber an, für welchen Bot eine Regel gilt. Ist der Name Ihres Bots bekannt, kann der Betreiber eine Regel eigens für Sie schreiben, und Sie halten sich daran. Wie die Datei gelesen wird, steht in Was ist robots.txt und wie liest man die Datei?.

Proxy und User-Agent: Der Proxy ändert die IP, Sie die Kennung

Proxy und User-Agent werden oft verwechselt, weil beide zur Frage „Wie sieht mich die Website?“ gehören. Die Aufgabenteilung ist klar: Ein Proxy ändert, von welcher IP-Adresse und aus welchem Land die Anfrage ausgeht. Den User-Agent berührt er nicht. Bei einer HTTPS-Verbindung kann er es auch nicht: Der Proxy baut nur den verschlüsselten Tunnel auf und sieht die Header darin nicht. Im Python-Beispiel oben sieht die Website mit und ohne Proxy denselben User-Agent.

Daraus folgt die Regel, dass beide dieselbe Geschichte erzählen sollten. Wenn Sie Ihre eigene mobile Website oder das Backend Ihrer App aus der Sicht eines Smartphone-Nutzers in Türkiye testen, passt zu einem mobilen User-Agent eine IP aus dem Netz eines Mobilfunkanbieters; dafür gibt es Mobile-Proxy. Wenn Sie den Preis oder die Anzeige prüfen, die ein Privatnutzer sieht, bildet eine Desktop-Browserkennung mit Residential-Proxy ein stimmiges Paar. Ein „Smartphone“, das von einer Rechenzentrums-IP kommt, oder eine Anfrage von einer deutschen IP mit Accept-Language: tr ist widersprüchlich, egal wie sorgfältig der User-Agent gewählt wurde.

Einsatzbereiche

  • Vergleichstest von mobiler und Desktop-Version. Dieselbe Seite mit zwei Kennungen und der IP des Ziellandes öffnen und die Unterschiede sehen: Lösung für App-Tests.
  • Regelmäßige Datenerfassung unter eigenem Namen. Feste Bot-Kennung, Einhaltung der robots.txt und ein Ratenlimit greifen ineinander: Lösung für Data Scraping.
  • Websites crawlen und Links prüfen. Wenn Sie Ihren eigenen Crawler schreiben, ist die Kennzeile der erste Konfigurationspunkt: Web-Crawler-Lösung.
  • Den Unterschied zwischen mobil und Desktop in den Suchergebnissen beobachten. Das Ranking ändert sich je nach Gerätetyp und Standort: SEO-Proxy-Lösung.
  • Browser-Automatisierung. In Playwright wird der User-Agent beim Erstellen des Contexts übergeben und gilt für alle Seiten dieses Contexts: Was ist Playwright und wie nutzt man es mit Proxy?.

Häufige Fehler

  • Annehmen, dass mit dem User-Agent auch die IP verborgen ist. Es sind getrennte Ebenen; im User-Agent steht keine IP-Information.
  • Nur den Header ändern und Client Hints vergessen. Chrome nennt mit Sec-CH-UA-Platform weiterhin das echte Betriebssystem.
  • Die Betriebssystemversion aus dem User-Agent lesen. Im aktuellen Chrome sind diese Felder fest; Windows 11 und neue Android-Versionen tauchen im String nicht auf.
  • Eine alte „User-Agent-Liste“ aus dem Netz verwenden. Eine Anfrage, die eine Jahre alte Chrome-Version nennt, ähnelt keinem echten Browserverkehr, und manche Websites senden alten Versionen eine unvollständige Seite.
  • Eine zufällige Kennung wählen oder sich als Googlebot ausgeben. Das Erste ist zusammen mit derselben IP und demselben Cookie ein Signal für Unstimmigkeit, das Zweite besteht die Reverse-DNS-Verifizierung nicht.
  • Eine Switcher-Erweiterung installieren, ohne die Berechtigungen anzusehen. Eine Erweiterung, die Header ändert, kann Ihren gesamten Datenverkehr sehen.
  • Die Änderung nach dem Test eingeschaltet lassen. Bleibt „Desktopwebsite“ oder die Erweiterung aktiv, sehen Websites irgendwann kaputt aus, und niemand erinnert sich an den Grund.

Entscheidungshilfe

BedarfEmpfehlung
Ich möchte meinen eigenen User-Agent sehennavigator.userAgent in der Konsole oder httpbin.org/headers
Ich will die mobile Ansicht am Computer ausprobierenDevTools > More tools > Network conditions
Ich will auf dem Smartphone die Desktopseite öffnen„Desktopwebsite“ im Chrome-Menü
Ich muss wissen, ob ein Besucher Windows 11 nutztSec-CH-UA-Platform-Version oder getHighEntropyValues
Ich schreibe einen regelmäßig laufenden ScraperEine einzige, feste Bot-Kennung mit Namen und Kontaktadresse
Ich teste, wie ich aus einem anderen Land und von einem anderen Gerät ausseheZum Gerät passender User-Agent zusammen mit einer Proxy-IP desselben Typs
Ich möchte sehen, was meine Website Bots zeigtTest mit Bot-Kennung ausschließlich auf der eigenen Website
Ich möchte den Bot-Schutz einer Website mit dem User-Agent überwindenDieser Weg funktioniert nicht; offizielle API oder Erlaubnis des Betreibers

Häufige Fragen

Was bedeutet User-Agent?

Wörtlich „Agent des Nutzers“: die Software, die in Ihrem Namen Anfragen ins Internet sendet. Im Alltag ist damit der Text im Header User-Agent gemeint, den diese Software mit jeder Anfrage sendet und der Name, Version und Betriebssystem nennt.

Zeigt der User-Agent meine IP-Adresse oder meinen Standort?

Nein. Der String enthält nur Angaben zu Software und Betriebssystem. Ihre IP-Adresse erfährt die Website aus der Verbindung selbst, Ihren ungefähren Standort aus dieser IP-Adresse. Eine Änderung des User-Agents beeinflusst beides nicht.

Einen Header zu ändern, den der eigene Browser sendet, ist für sich genommen keine verbotene Handlung; Browser bringen dafür in ihren Entwicklertools ein fertiges Menü mit. Entscheidend ist, was Sie nach der Änderung tun. Sich wie der Bot einer anderen Organisation zu verhalten oder die Nutzungsbedingungen einer Website zu umgehen, führt zu Problemen, unabhängig davon, wie der Header gesetzt wurde. Den rechtlichen Rahmen der Datenerfassung behandeln wir in Ist Web Scraping legal?.

Warum zeigt der User-Agent unter Windows 11 Windows 10 an?

Chromium-basierte Browser haben das Betriebssystemfeld auf den Wert Windows NT 10.0 festgelegt. Die echte Version steht im Header Sec-CH-UA-Platform-Version; eine Hauptversion von 13 oder höher bedeutet Windows 11.

Haben Client Hints den User-Agent ersetzt?

Noch nicht. Der Header User-Agent wird weiterhin von allen Browsern gesendet; Chrome hat lediglich seinen Inhalt vereinfacht. Client Hints sind ein zusätzlicher Mechanismus, der Websites das Detail auf einem erlaubnisbasierten Weg gibt, wenn sie danach fragen, und es gibt sie vorerst nur in Chromium-basierten Browsern. Bei Nutzern von Firefox und Safari sehen Websites weiterhin auf den User-Agent-String.

Ändert sich der User-Agent, wenn ich einen Proxy nutze?

Nein. Ein Proxy ändert die IP-Adresse, von der die Anfrage ausgeht; die gesendeten Header bleiben gleich. Planen Sie beides zusammen: Den Gerätetyp nennt der User-Agent, Standort und Netztyp nennt der Proxy.

Fazit

Der User-Agent ist die einzeilige Selbstauskunft der Software, die eine Anfrage sendet. Dass er mit Mozilla/5.0 beginnt, ist ein historisches Kompatibilitätsüberbleibsel; die eigentliche Information steht in der Klammer und am Zeilenende. Chrome hat diese Zeile vereinfacht und das Detail in die Client-Hints-Header verlagert; deshalb erscheint Windows 11 als NT 10.0 und neue Smartphones als Android 10; K. Die Änderung ist einfach (der Tab „Network conditions“, das Häkchen „Desktopwebsite“, curl -A), aber es ändert sich nur das Etikett: Client Hints, JavaScript-Signale, Verbindungsspur und IP-Adresse bleiben bestehen. Verwenden Sie im eigenen Skript statt zufälliger Kennungen eine einzige Kennung mit Ihrem Namen und Ihrer Kontaktadresse, und geben Sie sich nicht als fremder Bot aus. IP-Adressen, die zu dem getesteten Gerät und Standort passen, finden Sie bei unseren Proxy-Diensten.

ChatGPT fragenClaude fragen