Jeder Scraper, der einen User-Agent-Header setzt, wählt eine Browserversion, und fast keiner ändert sie je wieder. Die Zeichenfolge landet am Tag des Projektstarts in einer Konfigurationsdatei, und das Projekt gibt sich jahrelang weiter als genau dieser Browser aus. Währenddessen entwickeln sich echte Browser weiter: Chrome brachte zwischen Ende September 2025 und Ende September 2026 13 Hauptversionen heraus.
Spielt diese Abweichung eine Rolle? Anti-Bot-Systeme wissen, welche Browserversionen echte Besucher verwenden, sodass eine Version, die seit Jahren niemand mehr einsetzt, auffällt. Wir haben gemessen, wie stark, indem wir die Startseiten von 397 Top-Websites aufgerufen haben und dabei fünf verschiedene Chrome-Versionen vorgegaukelt haben, von der aktuellen Version bis zu einer, die sechseinhalb Jahre alt ist.
Die wichtigsten Erkenntnisse
- Ältere vorgegebene Versionen wurden immer häufiger abgelehnt, jedes Mal. 17,1% der Startseiten blockierten die aktuelle Chrome-Version oder forderten eine Challenge; 19,9% lehnten eine ein Jahr alte Version ab und 22,7% eine sechseinhalb Jahre alte.
- Der Effekt wirkte nur in eine Richtung. 22 Websites, die die aktuelle Version ausspielten, lehnten die älteste ab; keine Website lehnte die aktuelle Version ab, spielte aber eine alte aus.
- Zwei identische Anfragen für die aktuelle Version führten bei allen 397 Websites zu identischen Ergebnissen, die Unterschiede sind also kein Rauschen.
- Websites hinter Akamai reagierten als Erste: 9 der 11 Websites, die eine nur ein Jahr alte Version ablehnten, waren durch Akamai geschützt. Cloudflare-geschützte Websites reagierten meist erst bei der ältesten Version.
- Halten Sie die Version aktuell, halten Sie sie konsistent mit dem Rest der Anfrage, und überprüfen Sie sie regelmäßig, wie jede andere Abhängigkeit.
Wie wir gemessen haben
Wir haben 400 Websites zufällig aus den Startseiten unserer früheren Anti-Bot-Stack-Abfrage der Top-1.000-Domains im Tranco-Ranking ausgewählt. Am 5. Oktober 2026 haben wir jede Startseite sechsmal angefragt, im Abstand einer Sekunde und in zufälliger Reihenfolge pro Website, mit einer standardmäßigen Windows-Chrome-User-Agent-Zeichenfolge, die folgende Versionen vorgab:
| Vorgegebene Version | Stabile Veröffentlichung | Alter zum Testzeitpunkt |
|---|---|---|
| Chrome 154, zweimal angefragt | 22. September 2026 | Aktuell |
| Chrome 141 | 30. September 2025 | Etwa 1 Jahr |
| Chrome 129 | 17. September 2024 | Etwa 2 Jahre |
| Chrome 110 | 7. Februar 2023 | Etwa 3,5 Jahre |
| Chrome 80 | 4. Februar 2020 | Etwa 6,5 Jahre |
Die wiederholte Anfrage für die aktuelle Version ist die Kontrolle: Wenn eine Website von sich aus variiert, zeigt sich das als Unterschied zwischen diesen beiden. Alle Anfragen kamen vom selben Python-HTTP-Client und derselben Verbindung; nur die Versionsnummer im User-Agent änderte sich. Drei Websites antworteten auf mindestens eine Anfrage nicht und wurden ausgeschlossen, sodass 397 übrig blieben.
Was wir herausgefunden haben
| Vorgegebene Version | Ausgespielt | Challenge | Blockiert | Challenge oder blockiert |
|---|---|---|---|---|
| Chrome 154, erste Anfrage | 329 | 42 | 26 | 17,1% |
| Chrome 154, Wiederholung | 329 | 42 | 26 | 17,1% |
| Chrome 141 | 318 | 43 | 36 | 19,9% |
| Chrome 129 | 315 | 43 | 39 | 20,7% |
| Chrome 110 | 314 | 43 | 40 | 20,9% |
| Chrome 80 | 307 | 52 | 38 | 22,7% |
Die beiden Anfragen für die aktuelle Version stimmten bei jeder einzelnen Website überein, was den Rest der Tabelle leicht lesbar macht: Jeder Unterschied ist die Versionsnummer.
Zählt man nur Websites, die die aktuelle Version beide Male ausgespielt haben, wuchs die Anzahl derer, die die ältere Version ablehnten, stetig mit deren Alter:
| Vorgegebene Version | Websites, die die aktuelle Version ausspielten, diese aber ablehnten |
|---|---|
| Chrome 141, 1 Jahr alt | 11 |
| Chrome 129, 2 Jahre alt | 14 |
| Chrome 110, 3,5 Jahre alt | 15 |
| Chrome 80, 6,5 Jahre alt | 22 |
Keine Website tat das Gegenteil. Eine veraltete Version half nie.
Wer reagiert, und wie
Der Abgleich der Websites mit dem in der früheren Abfrage erkannten Schutz zeigt, dass Anbieter die Grenze an unterschiedlichen Stellen ziehen:
- Ein Jahr reichte Akamai. Von den 11 Websites, die Chrome 141 ablehnten, waren 9 durch Akamai geschützt; alle 11 antworteten mit HTTP 403, und 10 davon waren reine Blockierungen statt Challenges.
- Cloudflare reagierte auf die sehr alte Version. Von den 22 Websites, die Chrome 80 ablehnten, waren 10 durch Cloudflare geschützt und lieferten eine Challenge; 9 weitere waren Akamai.
- Seiten informierten den Besucher selten. Nur zwei Websites zeigten Chrome 80 eine Meldung im Stil „Aktualisieren Sie Ihren Browser“, die sie bei der aktuellen Version nicht zeigten. Die meisten lehnten einfach ab.
Das passt zur Funktionsweise von Bot-Management. Ein echter Besucher mit einem ein Jahr alten Browser ist unüblich, und mit einem sechs Jahre alten selten, sodass eine alte Version für sich allein ein schwaches Signal ist, aber ein stärkeres in Kombination mit allem anderen Ungewöhnlichen an der Anfrage.
Der Code
Die folgende Funktion führt denselben Vergleich gegen eine beliebige URL aus: Sie fragt die Seite an und gibt dabei jede Version vor, in zufälliger Reihenfolge, und liefert für jede den Status, das Ergebnis und die Größe zurück, sowie ob die Seite dem Besucher mitteilt, dass sein Browser veraltet ist. Führen Sie eine Version zweimal auf, um eine Rauschkontrolle zu erhalten.
import random
import re
import time
import requests
CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{v}.0.0.0 Safari/537.36"
OUTDATED = re.compile(r"(browser (is|you are using is) (not supported|out of date|outdated|no longer supported)"
r"|update your browser|upgrade your browser|unsupported browser|outdated browser)", re.I)
def classify(response):
"""served, challenged or blocked, from the status and well-known challenge markers."""
body = response.text[:20000].lower()
if (response.headers.get("cf-mitigated", "").lower() == "challenge"
or response.headers.get("x-amzn-waf-action", "").lower() == "challenge"
or "captcha-delivery.com" in body):
return "challenged"
if response.status_code in (401, 403, 405, 429) or response.status_code >= 500:
return "blocked"
return "served"
def ua_drift_check(url, versions, pause=1.0, seed=None):
"""Request the same URL claiming each Chrome version, in random order, and compare what comes back.
A version may be listed twice, as a control for how much the site varies on its own."""
order = list(enumerate(versions))
random.Random(seed).shuffle(order)
results = [None] * len(versions)
for i, v in order:
headers = {"User-Agent": CHROME.format(v=v), "Accept": "text/html,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.9"}
try:
r = requests.get(url, headers=headers, timeout=20)
results[i] = {"version": v, "status": r.status_code, "outcome": classify(r), "bytes": len(r.content),
"outdated_notice": bool(OUTDATED.search(r.text))}
except requests.RequestException as e:
results[i] = {"version": v, "error": type(e).__name__}
time.sleep(pause)
return results
Führen Sie dies vor und nach einer User-Agent-Änderung gegen die Websites aus, auf die Sie angewiesen sind, und bewahren Sie die Ergebnisse auf: Wenn ein Ziel beginnt, die gesendete Version abzulehnen, wissen Sie, ob die Version der Grund dafür ist.
Grenzen der Messung
- Startseiten, ein Netzwerk, ein Zeitpunkt. Tiefere Seiten, andere Länder und andere Zeitpunkte können sich anders verhalten.
- Kein Browser. Unser Client sendete einen Chrome-User-Agent von einer Python-HTTP-Bibliothek aus, sodass jede Anfrage bereits einen Netzwerk-Fingerprint hatte, der nicht zu Chrome passte, wie in TLS- und HTTP/2-Fingerprinting erläutert. Der Vergleich isoliert den Effekt der Versionsnummer; er zeigt nicht, wie sich ein echter Browser jeder Version verhalten würde.
- Der Ausgangswert ist nicht null. 17% der Startseiten lehnten von diesem Client aus selbst die aktuelle Version ab, was eine Erinnerung daran ist, dass ein korrekter User-Agent notwendig, aber nicht hinreichend ist.
Wir sollten auch einen Befund über uns selbst einräumen. Unsere Anti-Bot-Abfrage früher in der Woche verwendete einen Chrome-129-User-Agent: eine zwei Jahre alte Zeichenfolge, kopiert aus einem älteren Skript. Nach dieser Messung kostete das einige Prozentpunkte an Startseiten.
Ihren User-Agent aktuell halten
- Behandeln Sie ihn als Abhängigkeit. Platzieren Sie die Browserversion an einer Stelle und aktualisieren Sie sie nach einem Zeitplan; Chrome veröffentlicht etwa alle vier Wochen eine neue Hauptversion.
- Bleiben Sie innerhalb wenigen Versionen des aktuellen Stands. In unseren Daten wurde eine ein Jahr alte Version bereits häufiger abgelehnt als die aktuelle.
- Halten Sie alles konsistent. Eine aktuelle Chrome-Version mit einer alten Header-Reihenfolge, fehlenden Client Hints oder einem Netzwerk-Fingerprint, der nicht zu einem Browser passt, ist weiterhin inkonsistent; die richtigen Header und den User-Agent setzen behandelt den vollständigen Satz.
- Verwenden Sie eine Identität pro Sitzung. Versionen innerhalb einer Sitzung zu wechseln ist verdächtiger als jede einzelne Version.
- Testen Sie in CI. Eine geplante Überprüfung wichtiger Ziele mit der aktuellen und der vorherigen Konfiguration erkennt Abweichungen, bevor sie sich in Ihren Daten zeigen; Scraper in CI/CD ausführen zeigt, wie das eingerichtet wird.
- Beobachten Sie die Ablehnungsrate. Ein langsamer Anstieg von 403-Fehlern und Challenges ist das typische Symptom von Abweichung; das gehört in einen Target Health Score.
Fazit
Eine Browserversion ist keine Einstellung, die man einmal wählt. In unserer Messung von 397 Top-Websites erhöhte jedes Jahr Abweichung bei der vorgegebenen Chrome-Version die Ablehnungen, der Effekt wirkte nie in die andere Richtung, und manche Schutzdienste reagierten bereits auf eine nur ein Jahr veraltete Version.
Halten Sie die Version aktuell, halten Sie den Rest der Anfrage damit konsistent, und messen Sie den Effekt an den für Sie wichtigen Zielen. Es ist eine der günstigsten Verbesserungen der Zuverlässigkeit, die ein Scraping-Projekt vornehmen kann.
Quellen und Referenzen
- Chromium Dash, Veröffentlichungszeitplan, für stabile Veröffentlichungsdaten und die aktuelle Version.
- Tranco, Liste Q2K34.
- Anfragen, durchgeführt von Shifter am 5. Oktober 2026 mit dem obigen Code.