Proxy-Rotation ist eine Krücke, keine Lösung. Die meisten Scraping-Operationen scheitern, weil sie IP-Adressen als das einzige Signal betrachten, das Anti-Bot-Systeme messen. In Wirklichkeit erfassen moderne Bot-Manager – Akamai Bot Manager, Cloudflare Turnstile, Datadome – weit mehr als nur Ihre Quell-IP. Ein rotierender Pool kostenloser öffentlicher Proxys bringt Ihnen gegen diese Systeme so gut wie nichts und macht die Sache oft noch schlimmer.
Die Illusion der IP-Rotation
Wenn Sie bei jeder Anfrage die IP rotieren, outen Sie sich als Scraper. Menschliche Surfgewohnheiten zeigen Sticky Sessions – eine einzelne IP über Minuten oder Stunden, konsistente Browser-Fingerabdrücke und vorhersagbare Anfrageintervalle. Werkzeuge wie requests mit einem Session-Objekt und einer rotierenden Proxy-Liste brechen all diese Signale. Akamais X-Akamai-Device-Fingerprint-Header und Cloudflares cf-request-id-Korrelation können Anfragen von verschiedenen IPs verknüpfen, wenn TLS-Parameter, HTTP/2-Einstellungen und Timing identisch bleiben. Datadomes JavaScript-Challenge prüft auf Headless-Browser-Artefakte, die Proxy-Wechsel überstehen. IPs zu rotieren, ohne den vollständigen Client-Fingerprint zu rotieren, ist, als würde man das Kennzeichen wechseln, aber das gleiche Auto fahren – die Mautkameras markieren Sie trotzdem.
Für Scraping mit niedriger Rate und geringem Volumen auf Websites, die nur einfache IP-basierte Ratenbegrenzungen verwenden (z. B. eine Drosselung von 10 Anfragen pro Minute ohne JavaScript-Challenges), reicht oft eine einzelne Residential-IP. Ich betreibe seit Jahren Scraper gegen Regierungsdatenportale und öffentliche APIs mit einer statischen IP und einem höflichen time.sleep(2). Kein Proxy nötig. Die Regel ist einfach: Wenn die Website nach 50 Anfragen keine Challenge-Seite oder kein CAPTCHA ausliefert, brauchen Sie keine Rotation.
Jenseits der IP-Adresse: Fingerprinting
Anti-Bot-Systeme sammeln mittlerweile Dutzende von Signalen pro Anfrage. Der User-Agent-String ist trivial zu fälschen, aber die Reihenfolge von Accept-Language, Sec-CH-UA, Connection und Accept-Encoding ist es nicht. Noch kritischer: TLS-Fingerprinting – standardisiert im JA3-Hash (siehe JA3) – identifiziert die Client-Bibliothek anhand der Cipher-Suite-Reihenfolge und der TLS-Erweiterungsliste. Pythons requests-Bibliothek (über urllib3) erzeugt einen JA3-Hash, der sich von Chrome 124 unterscheidet. Cloudflares Turnstile und Datadome prüfen beide JA3. IPs zu rotieren, während derselbe TLS-Stack beibehalten wird, lässt jede Anfrage wie denselben automatisierten Client aussehen, der nur zwischen Exit-Knoten springt. Kostenlose Proxys verschlimmern dies, da sie oft veraltete OpenSSL-Versionen oder botartige TLS-Konfigurationen verwenden, die bereits auf der Blacklist stehen.
HTTP/2-Fingerprinting geht noch weiter. Der SETTINGS-Frame, Window-Update-Werte und Stream-Concurrency-Parameter bilden einen eindeutigen „HTTP/2-Fingerprint“, den Akamais Bot Manager über Sitzungen hinweg verfolgt. Ein rotierender Proxy-Pool, der nicht auch die HTTP/2-Implementierung rotiert, ist trivial zu clustern. Der einzige Weg, diese Prüfungen zu umgehen, ist die Verwendung einer echten Browser-Engine (Puppeteer, Playwright) oder eines sorgfältig konstruierten TLS/HTTP-Stacks, der eine bestimmte Browserversion nachahmt – und selbst dann müssen Sie denselben Fingerprint über Anfragen einer Sitzung hinweg beibehalten.
Die Ökonomie kostenloser öffentlicher Proxy-Pools
Kostenlose öffentliche Proxy-Listen haben in meinen Tests eine Ausfallrate von 60–80 Prozent. Die meisten Proxys sind entweder tot bei Ankunft, werden vom Host gedrosselt oder sind bereits von großen Bot-Managern markiert. Die durchschnittliche Lebensdauer eines kostenlosen SOCKS5-Proxys aus einem öffentlichen Verzeichnis liegt unter 15 Minuten. Die Wartung eines rotierenden Pools von 500 Proxys bedeutet, dass Sie Tausende von IPs pro Stunde verbrauchen und 80 % Ihrer Anfragen entweder ein Timeout oder einen 403 zurückgeben. Die Bandbreite ist unzuverlässig, Latenzspitzen sind häufig, und viele kostenlose Proxys injizieren Werbung oder verändern Antwortkörper. Bezahlte Residential-Proxy-Netzwerke (z. B. Bright Data, Oxylabs) bieten Erfolgsraten von über 95 % und Sticky-Session-Optionen, jedoch zu Kosten von 10–20 $ pro GB. Für größere Maßstäbe begünstigt die Rechnung Residential-Proxys nur dann, wenn Sie IP-basierte Sperren bei hochwertigen Zielen umgehen müssen. Für alles andere übertrifft eine einzelne saubere IP mit angemessenem Request-Pacing einen chaotischen kostenlosen Pool.
Wann Rotation tatsächlich funktioniert
Proxy-Rotation ist gegen eine spezifische Bedrohung wirksam: IP-basierte Ratenbegrenzungen, die pro IP zurückgesetzt werden. Wenn eine Website eine einfache X-Forwarded-For-Prüfung oder einen Token-Bucket pro IP verwendet, umgeht die Rotation nach jeder Anfrage die Begrenzung. Dies ist auf kleineren E-Commerce-Seiten und bei Legacy-APIs üblich, die ihre Bot-Erkennung nie aktualisiert haben. In diesen Fällen funktioniert sogar ein kostenloser Proxy-Pool – allerdings nur, wenn Sie eine Wiederholungslogik implementieren, die fehlgeschlagene Proxys verwirft und schnell durch frische ersetzt.
Hier ist ein minimales Python-Beispiel mit requests und einer Wiederholungs-mit-Rotations-Schleife. Es wird eine Liste von Proxy-URLs in proxy_list und ein Ziel-url angenommen:
import requests
from itertools import cycle
proxy_pool = cycle(proxy_list)
max_retries = 5
for attempt in range(max_retries):
proxy = next(proxy_pool)
try:
resp = requests.get(
url,
proxies={"http": proxy, "https": proxy},
timeout=10,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."}
)
if resp.status_code == 200:
break
except (requests.ConnectionError, requests.Timeout):
continue
else:
raise RuntimeError("All proxies failed")
Dieses Muster funktioniert nur, wenn die Erkennung der Website rein IP-basiert ist. Fügen Sie eine time.sleep(random.uniform(1,3)) zwischen den Anfragen ein, um menschliches Timing nachzuahmen. Bei Websites, die Turnstile oder Datadome verwenden, wird dieser Code jedes Mal fehlschlagen – die Challenge-Seite gibt unabhängig vom Proxy einen 403 oder ein CAPTCHA zurück. In diesen Fällen benötigen Sie einen Headless-Browser mit einem echten Fingerprint, nicht eine rotierende IP-Liste.
Sticky Sessions – die gleiche IP für eine Reihe zusammenhängender Anfragen beibehalten – sind oft effektiver als eine Rotation pro Anfrage. Viele E-Commerce-Seiten erwarten eine einzelne IP für eine Browsing-Sitzung (z. B. Artikel in den Warenkorb legen, zur Kasse gehen). Eine Rotation während der Sitzung löst Betrugsflags aus. Verwenden Sie einen Pool von Proxys, aber weisen Sie eine IP pro Sitzung zu, nicht pro Anfrage. Kostenlose Proxys unterstützen selten Sticky Sessions, da dieselbe IP von mehreren Benutzern wiederverwendet wird – Sie werden eine Kreuzkontamination von Sitzungsdaten erleben. Bezahlte Residential-Proxys bieten Sticky-Session-Dauern (5–30 Minuten), die dem natürlichen Surfverhalten entsprechen.
Wählen Sie Rotation nur, wenn Sie den Erkennungs-Stack des Ziels verstehen. Testen Sie zuerst mit einer einzelnen IP. Fügen Sie Rotation nur hinzu, wenn Sie auf eine Ratenbegrenzung stoßen. Und verlassen Sie sich niemals auf kostenlose Proxys für die Produktion – ihre Ausfallrate wird Sie mehr an Entwicklungszeit und verlorenen Daten kosten als ein günstiger Residential-Tarif.