Zum Inhalt

So rotieren Sie Proxys für erfolgreiches Web Scraping

Als erfahrener Web-Scraping-Experte bin ich immer wieder auf Probleme mit der Proxy-Blockierung gestoßen. Ich kann nicht genug betonen, wie wichtig die richtige Proxy-Rotation für erfolgreiches Web-Scraping im großen Stil ist.

In diesem umfassenden Leitfaden mit mehr als 3000 Wörtern gehen wir ausführlich auf optimale Proxy-Rotationsstrategien ein, um Blockaden und Scraping effizient zu vermeiden.

Warum Proxy-Rotation für Web Scraping unerlässlich ist

Lassen Sie uns kurz zusammenfassen, warum Proxys beim Web Scraping benötigt werden.

Wenn Sie eine Website durchsuchen, werden deren Server in kurzer Zeit mit Hunderten oder Tausenden automatisierten Anfragen erreicht. Dieses äußerst verdächtige Verkehrsmuster kann von der Zielseite leicht erkannt werden.

Um Scraper zu identifizieren und zu blockieren, verwenden die meisten Websites Schutzmaßnahmen wie:

  • Begrenzung der IP-Rate – Begrenzt, wie viele Anfragen eine IP in einem bestimmten Zeitraum stellen kann
  • Captchas – Stellt eine Herausforderung dar, um zu bestätigen, dass Sie ein Mensch sind
  • IP-Sperren – Sperrt Ihre IP-Adresse, wenn sie als Scraper erkannt wird

Wenn Sie keine Proxys verwenden, stammt Ihr gesamter Scraper-Verkehr von einer einzigen Privat- oder Rechenzentrums-IP.

Es wird nicht lange dauern, bis Ihre IP ein Ratenlimit erreicht oder vollständig blockiert wird.

Basierend auf meiner Erfahrung passiert beim Scraping von einer einzelnen IP Folgendes:

  • Nach der 50-100 Anfragen, werden Sie wahrscheinlich eine Geschwindigkeitsbegrenzung erreichen und alle 1+ Sekunden auf eine Anfrage verlangsamen müssen. Dadurch wird die Schabgeschwindigkeit drastisch verringert.

  • Nach der 200-500 Anfragen, besteht eine hohe Wahrscheinlichkeit, dass ein Captcha ausgelöst wird, um zu bestätigen, dass Sie kein Bot sind. Das manuelle Lösen von Captchas verringert die Scraping-Geschwindigkeit.

  • Nach der 500-1,000 Anfragen, wird Ihre IP-Adresse wahrscheinlich vollständig gesperrt. Spiel vorbei.

Wie Sie sehen, ist das Scrapen einer nennenswerten Anzahl von Seiten ohne Proxys unmöglich.

Hier kommt die Proxy-Rotation ins Spiel.

Proxy-Rotation bedeutet, die Anfragen Ihres Scrapers zu verteilen über mehrere IP-Adressen hinweg Verwendung von Proxyservern. Dies ermöglicht Ihnen:

  • Vermeiden Sie, dass der gesamte Datenverkehr von einer IP stammt, die leicht zum Scraping markiert werden kann.

  • Erhöhen Sie die Anzahl der Anfragen und bleiben Sie dabei unter den Ratengrenzen der Ziel-Site.

  • Scrapen Sie weiter, auch wenn einige Proxys durch schnelles Ausschalten blockiert werden.

Lassen Sie mich ein reales Beispiel nennen, das beweist, warum die Proxy-Rotation von entscheidender Bedeutung ist.

Kürzlich wurde ich beauftragt, 50,000 Produkteinträge von einer E-Commerce-Website zu entfernen. Ohne Proxys ist Folgendes passiert:

  • Bei etwa 500 Anfragen fing ich an, auf Captchas zu stoßen und es gab eine Verzögerung von 5 Sekunden zwischen den Anfragen. Das Kratzen verlangsamte sich zum Kriechen.

  • Bei 2000 Anfragen wurde meine IP von der Seite komplett blockiert. Das Schaben wurde gestoppt.

Jetzt bin ich auf den Wechsel von nur 5 Wohn-Proxys umgestiegen. Hier sind die Ergebnisse:

  • Jeder Proxy stellte etwa 500 Anfragen, bevor er langsamer werden musste, um Captchas zu vermeiden.

  • Kein Proxy wurde blockiert, da ich immer wieder auf eine neue IP wechselte.

  • Ich habe alle 50,000 Einträge erfolgreich gelöscht, indem ich die Last auf die Proxys verteilt habe.

Dieses reale Beispiel zeigt deutlich, wie die Proxy-Rotation den Unterschied zwischen dem Scraping einiger hundert Seiten und dem Scraping von Zehntausenden ausmachen kann.

Nach meiner Erfahrung ist die Proxy-Rotation so Alle Tauchgäste müssen eine Tauchversicherung vorweisen, für jede ernsthafte Web-Scraping-Operation.

Werfen wir als Nächstes einen Blick auf einige intelligente Proxy-Rotationsstrategien, die Sie verwenden sollten.

Proxy-Rotationsstrategien

Es gibt mehrere bewährte Proxy-Rotationsmuster, die die Scraping-Leistung optimieren können. Einige beliebte Ansätze sind:

Round Robin

Diese Methode durchläuft nacheinander Ihre Liste der Proxy-IPs.

Zum Beispiel mit 3 Proxys:

Request 1 -> Proxy 1 
Request 2 -> Proxy 2
Request 3 -> Proxy 3
Request 4 -> Proxy 1
Request 5 -> Proxy 2

Durch die Round-Robin-Rotation wird sichergestellt, dass wir Anfragen ziemlich gleichmäßig auf alle Proxys verteilen. Es verhindert die wiederholte Wiederverwendung desselben Proxys.

Der größte Nachteil besteht darin, dass ein Proxy, der blockiert wird, bei jeder Rotation weiterhin ausgewählt wird.

Basierend auf meinen Tests funktioniert Round Robin gut mit einem mittelgroßen Pool von 5–10 gesunden Proxys.

Zufälliger Proxy

Diese Strategie wählt für jede Anfrage einen völlig zufälligen Proxy aus dem Pool aus.

Request 1 -> Proxy 3
Request 2 -> Proxy 2
Request 3 -> Proxy 5
Request 4 -> Proxy 1
Request 5 -> Proxy 8 

Die zufällige Proxy-Auswahl sorgt für völlige Unvorhersehbarkeit bei der Verwendung von Proxys. Websites haben Schwierigkeiten, Muster mit zufälliger Rotation zu erkennen.

Das Risiko besteht darin, dass die Randomisierung manchmal dazu führen kann, dass derselbe Proxy wiederholt zufällig ausgewählt wird. Um dies zu verhindern, sind geschickte Randomisierungsalgorithmen erforderlich.

Ich habe festgestellt, dass die zufällige Proxy-Rotation am besten bei größeren Pools mit 15 bis 25 Proxys funktioniert.

Leistungsbasiert

Fortgeschrittenere Methoden verfolgen die Erfolgs-/Fehlerrate von Proxys und wählen Proxys entsprechend aus.

Beispielsweise werden Proxys, die auf Captchas oder Blöcke stoßen, weniger genutzt, während leistungsstarke Proxys häufiger genutzt werden.

Dies erfordert eine gewisse Logik, um Proxy-Ausfälle zu erkennen und Statistiken für jeden Proxy zu führen. Aber es stellt sicher, dass wir die Nutzung „gesunder“ Proxys maximieren.

Meiner Erfahrung nach führt eine leistungsbasierte Rotation zu den besten Ergebnissen, erfordert jedoch einen höheren Programmieraufwand für die Implementierung.

IP-Konsistenz

Einige Websites erfassen Fingerabdrücke, indem sie IP-Inkonsistenzen in Benutzersitzungen erkennen.

Wenn die Site beispielsweise während einer einzelnen Benutzersitzung Anfragen von verschiedenen IPs sieht, ist das ein Warnsignal für Scraping.

Durch die IP-Konsistenzrotation wird sichergestellt, dass jeder Proxy den gesamten Datenverkehr für eine einzelne Benutzersitzung verarbeitet. Die Ziel-Site sieht also konsistente IP-Adressen für jeden Benutzer.

Diese Technik ist beim Scraping von Websites mit stark überwachten Benutzersitzungen wie sozialen Medien und E-Commerce nützlich.

Expertentipp

„Eine häufige Gefahr besteht darin, Proxys zu schnell zu rotieren. Das Wechseln der IP-Adressen bei jeder Anfrage ist oft übertrieben. Normalerweise rotiere ich nach jeweils 50–100 Anfragen pro Proxy schrittweise. Dadurch werden Footprint-Muster vermieden, die verdächtig aussehen können.“

Egal welche Rotationsstrategie Sie verwenden, es ist wichtig langsam und nicht zu aggressiv rotieren. Websites können extrem häufige IP-Wechsel als Scraping-Footprint erkennen.

Schauen wir uns nun einige wichtige Tipps zur Optimierung Ihrer Proxy-Rotation an …

Best Practices für rotierende Proxys

Durch umfangreiche Versuche und Irrtümer habe ich einige Best Practices für die Proxy-Rotation identifiziert:

Rotieren nach Proxy-Subnetz

Viele Proxys stammen aus denselben Subnetzbereichen großer Anbieter wie Luminati oder Smartproxy.

Eine zufällige Rotation kann dazu führen, dass Proxys nacheinander erscheinen, wenn sie aus demselben Subnetz stammen.

Request 1 -> 123.45.67.89 (Subnet A)
Request 2 -> 123.45.67.93 (Subnet A again!) 

Wiederholte IP-Adressen aus demselben Subnetzbereich sind ein eindeutiger Hinweis auf Scraping.

Stellen Sie sicher, dass Sie aktiv zwischen verschiedenen Proxy-Subnetzen und Anbietern rotieren. Wählen Sie niemals zwei Proxys hintereinander aus demselben Subnetz aus.

Verwenden Sie eine gesunde Mischung aus Proxy-Typen

Legen Sie nicht alle Eier in einen Korb. Verwenden Sie eine Mischung aus:

  • Datacenter – Höchste Geschwindigkeiten. Verstopfungsgefahr durch starken Schabereinsatz.
  • Wohnungen – Langsamer, aber „menschlicher“ wirken. Begrenzte Verfügbarkeit.
  • Mobil – Erscheinen als mobile Benutzer. Viele Websites unterstützen Mobilgeräte nicht vollständig.

Wenn Sie die richtige Balance zwischen den Proxy-Typen finden, stellen Sie sicher, dass Sie vor Gefahren geschützt sind, falls ein Proxy-Pool überlastet oder blockiert wird.

Deaktivieren Sie ausgefallene Proxys

Selbst bei robuster Rotation werden einige Proxys unweigerlich mit Blöcken und Captchas scheitern.

Deaktivieren Sie vorübergehend Proxys, die Fehler oder Blöcke zurückgeben. Dadurch erhalten sie die Möglichkeit, sich abzukühlen, und ihr Status bei der Ziel-Site wird zurückgesetzt.

Sie können deaktivierte Proxys regelmäßig erneut testen, um festzustellen, ob sie wiederhergestellt wurden.

Verzögerungen hinzufügen

Durch das Einfügen zufälliger Verzögerungen zwischen Anfragen wird sichergestellt, dass der Scraping-Verkehr menschlicher wirkt und Missbrauchsratenbegrenzungen vermieden werden.

Mein typischer Ansatz besteht darin, alle 1–3 Anfragen zufällige Verzögerungen von 5–10 Sekunden hinzuzufügen.

Sie können auch Anzeichen einer Drosselung wie Captcha-Herausforderungen erkennen und Verzögerungen dynamisch erhöhen.

Länder rotieren

Wenn Sie auf länderspezifische Websites abzielen, stellen Sie sicher, dass Sie Proxys verwenden, die sich tatsächlich in diesem Land befinden.

Wenn ich beispielsweise eine auf britische Benutzer ausgerichtete Website durchsuche, stelle ich sicher, dass die in Großbritannien ansässigen Privat- und Rechenzentrums-Proxys rotieren.

Geografiebasierte Rotation hilft dabei, sich als lokaler Benutzer einzufügen, der Anfragen stellt.

Expertentipp

„Ein cleverer Trick, den ich empfehle, besteht darin, den Benutzeragenten bei jeder Proxy-Rotation leicht zu ändern. Dadurch wird eine weitere Variable hinzugefügt, die verhindert, dass die Zielseite Ihren Scraper einfach profiliert und erkennt.“

Werden Sie kreativ und fügen Sie kleine Optimierungen wie die Rotation des Benutzeragenten hinzu, um Ihre Scraper-Fingerabdrücke weiter zu maskieren.

Proxy-Rotation in Python implementieren

Nachdem wir uns nun mit Proxy-Rotationsstrategien befasst haben, schauen wir uns eine Beispiel-Python-Implementierung an.

Zuerst definieren wir eine Liste der verfügbaren Proxys:

proxies = [
  ‘104.45.147.53:8080‘,
  ‘45.15.62.230:8123‘, 
  ‘177.36.45.82:3128‘,
  # etc
]

Als nächstes benötigen wir Logik, um diese Liste tatsächlich zu durchlaufen. Wir werden Pythons verwenden random Bibliothek, um für jede Anfrage einen zufälligen Proxy auszuwählen:

import random

def get_random_proxy():
  return random.choice(proxies)

Um zu vermeiden, dass wir denselben Proxy zweimal auswählen, können wir den zuvor verwendeten Proxy verfolgen und neu randomisieren, bis wir einen neuen erhalten:

last_proxy = None

def get_random_proxy():

  proxy = random.choice(proxies)  

  while proxy == last_proxy:
    proxy = random.choice(proxies)

  last_proxy = proxy

  return proxy 

Wir können nun den gedrehten Proxy an übergeben requests Modul:

import requests

# Rotate proxy
proxy = get_random_proxy() 

# Make request with rotated proxy  
requests.get(‘http://example.com‘, proxies={‘http‘: proxy, ‘https‘: proxy})

Dies gibt uns in nur wenigen Zeilen ein grundlegendes Proxy-Rotations-Setup!

Schauen wir uns als Nächstes einen fortgeschritteneren Proxy-Rotator an, der einige Best Practices beinhaltet …

import random
from time import sleep

# Proxy list
proxies = [
  {‘ip‘: ‘104.45.147.53:8080‘, ‘country‘: ‘US‘, ‘subnet‘: ‘147‘},
  {‘ip‘: ‘45.15.62.230:8123‘, ‘country‘: ‘CA‘, ‘subnet‘: ‘62‘},
  # etc
]

# Tracking variables
last_proxy = None
last_subnet = None
disabled_proxies = [] 

def get_proxy():

  # Remove disabled proxies
  global proxies 
  proxies = [p for p in proxies if p[‘ip‘] not in disabled_proxies]

  # Weight random selection 
  proxy_weights = []
  for proxy in proxies:
    if proxy[‘country‘] == ‘US‘:
      # Prefer US proxies
      weight = 100 
    else:
      # Lower weight for non-US
      weight = 50

    if proxy[‘subnet‘] == last_subnet:
      # Lower weight if same subnet
      weight -= 20

    # Apply weight    
    proxy_weights.extend([proxy]*weight)

  # Pick weighted random proxy
  proxy = random.choice(proxy_weights) 

  # Avoid immediate subnet repeat
  while proxy[‘subnet‘] == last_subnet:
    proxy = random.choice(proxy_weights)

  # Rotate subnet 
  last_subnet = proxy[‘subnet‘]

  # Optional delay
  sleep(1)

  return proxy[‘ip‘]

# Usage:

proxy = get_proxy()
try:
  response = requests.get(‘http://example.com‘, proxies={‘http‘: proxy, ‘https‘: proxy})
  # Success - do nothing
except:
  # Failure - disable proxy
  disabled_proxies.append(proxy) 

Dadurch erhalten wir einen robusteren Rotator mit:

  • Proxy-Gewichtung
  • Entfernung ausgefallener Proxys
  • Subnetzrotation
  • Verzögerung zwischen Anfragen

Es gibt viele weitere Optimierungen wie Integrationen mit Proxy-Manager-APIs, die die Leistung weiter verbessern können.

Nutzung von Proxy-APIs für die Rotation

Die Proxy-Rotation selbst zu verwalten, kann zeitintensiv sein. Proxy-APIs abstrahieren die Proxy-Verwaltung und sorgen für eine nahtlose Integration.

Einige bemerkenswerte Proxy-APIs zum Ausprobieren:

Luminati – Das größte kostenpflichtige Proxy-Netzwerk mit über 72 Millionen IPs. Ideal für extrem große Schabarbeiten. Mindestkosten etwa 500 $/Monat.

Oxylabs – Bietet 3 Millionen Proxys für Privathaushalte, Rechenzentren und Mobilgeräte. Die Preise beginnen bei 300 $/Monat für 1 Million Anfragen.

Smart-Proxy – Spezialisiert auf Backconnect-Proxys für Privatanwender mit 40 Millionen IPs. Die Pläne beginnen bei 75 $/Monat für 5 GB Datenverkehr.

GeoSurf – Ideal für Nischen-Targeting mit Proxys in über 50 Ländern. Wohnpläne beginnen bei 290 $/Monat.

Mikroleaves – Budget-Proxy-API für Privathaushalte ab 85 $/Monat für 1 Million Anfragen.

ScrapeOps – Intelligente Proxy-API mit integrierter Rotation und CAPTCHA-Lösung. Die Pläne beginnen bei 299 $/Monat für 1 Million Anfragen.

Der Hauptvorteil von APIs ist die vereinfachte Integration und der sofortige Erhalt von Proxys ohne langwierige Einrichtung. Die meisten kümmern sich unter der Haube um die Optimierung der Proxy-Nutzung.

Hier ist zum Beispiel ein Skript, das die ScrapeOps-Proxy-API zum Scrapen einer Site verwendet:

import scrapeops

api = scrapeops.API()

for page in range(1, 100):
   url = f‘http://site.com/page/{page}‘
   html = api.get_html(url)
   # Parse html

Die API abstrahiert die gesamte Proxy-Verwaltung und stellt auf jeder Seite sauberen HTML-Code bereit.

Bei größeren Scraping-Projekten kann die Nutzung einer dedizierten Proxy-API im Vergleich zur eigenen Verwaltung von Proxys enorme Entwicklungszeit einsparen.

Abschließende Überlegungen

Proxys sind für jeden ernsthaften Web-Scraping-Vorgang obligatorisch. Einfach ausgedrückt: keine Proxys, kein Scraping.

Stellen Sie sicher, dass Sie mehrere Proxys verwenden und eine solide Rotationsstrategie wie Round-Robin, leistungsgewichtet oder zufällig implementieren.

Befolgen Sie Best Practices wie das Rotieren von Subnetzen, das Deaktivieren ausgefallener Proxys, das Hinzufügen von Verzögerungen und das Mischen von Proxy-Typen.

Durch eine sorgfältige und durchdachte Proxy-Rotation können Sie skalierbar arbeiten, ohne sich um IP-Blockierungen oder Captchas sorgen zu müssen.

Ich hoffe, dass dieser Leitfaden einen umfassenden Überblick über optimale Techniken zum Rotieren von Proxys in Ihren Web-Scraping-Projekten bietet. Lassen Sie mich wissen, wenn Sie weitere Tipps zur Proxy-Rotation haben!

Stichworte:

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *