IP-Rotation mit Proxys ist beim Web-Scraping unerlässlich, insbesondere bei modernen Websites, die Einschränkungen durchsetzen können. Die Verteilung Ihrer Anfragen auf mehrere IP-Adressen ist entscheidend, um Sperren oder Rate-Limits zu vermeiden. Die Rotation von IP-Adressen erschwert es Websites, Ihre Scraping-Aktivitäten zu verfolgen und einzuschränken. Dies steigert die Effizienz und Zuverlässigkeit Ihres Web-Scraping-Prozesses und ermöglicht eine effektivere Datenextraktion. Durch den Einsatz von Proxys und das Rotieren von IP-Adressen beim Web-Scraping können Sie IP-basierte Sperren und Strafen umgehen, Rate-Limits überwinden und auf geo-eingeschränkte Inhalte zugreifen.
Dieser Artikel erklärt, wie Sie Proxys in Ihrem Web-Scraping-Workflow implementieren, um die verwendeten IP-Adressen zu rotieren. Sie erfahren, wo Sie effektive Proxys erhalten, welche Tipps es zur IP-Rotation gibt und wie Sie vermeiden, von der Zielwebsite blockiert zu werden.
IP-Rotation mit Python
Ein regulärer Scraping-Prozess mit Python verwendet üblicherweise eine Python-Bibliothek wie Requests oder Scrapy, um auf eine Website zuzugreifen und deren Inhalte zu analysieren. Anschließend können Sie den Website-Inhalt nach den gewünschten Informationen filtern. Das folgende Beispiel zeigt einen typischen Scraping-Prozess:
import requests
url = 'http://example.com'
# Make requests
response = requests.get(url)
print(response.text)
Dieser Prozess liefert die benötigten Informationen und eignet sich für einmalige Anwendungsfälle oder Fälle, in denen Daten nur einmal extrahiert werden müssen. Er verwendet jedoch Ihre System-IP für Anfragen und kann bei wiederholten oder kontinuierlichen Anfragen auf Probleme stoßen, wenn die Website den Zugang im Laufe der Zeit einschränkt.
Die Ergebnisse des Beispiel-Scraping-Prozesses sehen wie folgt aus:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans",
…
Die meisten Python-Bibliotheken wie Requests oder Scrapy, die auf Scraping oder Web-Anfragen ausgerichtet sind, bieten eine Möglichkeit, die für diese Anfragen verwendete IP-Adresse zu wechseln. Um davon zu profitieren, benötigen Sie jedoch eine Liste oder Quelle für gültige IP-Adressen. Diese Quellen können kostenlos oder kommerziell sein, wie zum Beispiel Bright Data Proxys.
Kommerzielle Optionen garantieren Gültigkeit und bieten hilfreiche Tools zur Verwaltung und Rotation Ihrer Proxys, um Ausfallzeiten in Ihrem Scraping-Prozess zu vermeiden. Bright Data bietet beispielsweise verschiedene Proxy-Kategorien zu unterschiedlichen Preisen an, je nach Anwendungsfall, Skalierbarkeit und der Garantie des unblockierten Zugangs zu Ihren angeforderten Daten:

Mit kostenlosen Proxys können Sie in Python eine Liste mit gültigen Proxys erstellen, die Sie während Ihres Scraping-Prozesses rotieren können:
proxies = ["103.155.217.1:41317", "47.91.56.120:8080", "103.141.143.102:41516", "167.114.96.13:9300", "103.83.232.122:80"]
Dafür benötigen Sie lediglich einen Rotationsmechanismus, der bei mehreren Anfragen verschiedene IP-Adressen aus der Liste auswählt. In Python würde dies einer ähnlichen Funktion wie der folgenden entsprechen:
import random
import requests
def scraping_request(url):
ip = random.randrange(0, len(proxies))
ips = {"http": proxies[ip], "https": proxies[ip]}
response = requests.get(url, proxies=ips)
print(f"Proxy currently being used: {ips['https']}")
return response.text
Dieser Code wählt bei jedem Aufruf einen zufälligen Proxy aus Ihrer Liste aus. Der Proxy wird für Scraping-Anfragen verwendet.
Mit einem Fehlerfall zur Behandlung ungültiger Proxys würde der vollständige Scraping-Code wie folgt aussehen:
import random
import requests
proxies = ["103.155.217.1:41317", "47.91.56.120:8080", "103.141.143.102:41516", "167.114.96.13:9300", "103.83.232.122:80"]
def scraping_request(url):
ip = random.choice(proxies)
try:
response = requests.get(url, proxies={"http": ip, "https": ip})
if response.status_code == 200:
print(f"Proxy currently being used: {ip}")
ip = random.randrange(0, len(proxies))
ips = {"http": proxies[ip], "https": proxies[ip]}
response = requests.get(url, proxies=ips)
try:
if response.status_code == 200:
print(f"Proxy currently being used: {ips['https']}")
print(response.text)
elif response.status_code == 403:
print("Forbidden client")
elif response.status_code == 429:
print("Too many requests")
except Exception as e:
print(f"An unexpected error occurred: {e}")
scraping_request("http://example.com")
Sie können diese rotierende Proxy-Liste auch verwenden, um Ihre Anfragen mit einem anderen Scraping-Framework wie Scrapy durchzuführen.
Scraping mit Scrapy
Mit Scrapy müssen Sie die Bibliothek installieren und die erforderlichen Projektartefakte erstellen, bevor Sie das Web erfolgreich crawlen können.
Sie können Scrapy mit dem pip-Paketmanager in Ihrer Python-Umgebung installieren:
pip install Scrapy
Nach der Installation können Sie mit den folgenden Befehlen ein Scrapy-Projekt mit Template-Dateien in Ihrem aktuellen Verzeichnis erstellen:
scrapy startproject sampleproject
cd sampleproject
scrapy genspider samplebot example.com
Diese Befehle generieren auch eine grundlegende Code-Datei, die Sie mit einem IP-Rotationsmechanismus erweitern können.
Öffnen Sie die Datei sampleproject/spiders/samplebot.pysamplebot.py und aktualisieren Sie sie mit folgendem Code:
import scrapy
import random
proxies = ["103.155.217.1:41317", "47.91.56.120:8080", "103.141.143.102:41516", "167.114.96.13:9300", "103.83.232.122:80"]
ip = random.randrange(0, len(proxies))
class SampleSpider(scrapy.Spider):
name = "samplebot"
allowed_domains = ["example.com"]
start_urls = ["https://example.com"]
def start_requests(self):
for url in self.start_urls:
proxy = random.choice(proxies)
yield scrapy.Request(url, meta={"proxy": f"http://{proxy}"})
request = scrapy.Request(
"http://www.example.com/index.html",
meta={"proxy": f"http://{ip}"}
)
def parse(self, response):
# Log the proxy being used in the request
proxy_used = response.meta.get("proxy")
self.logger.info(f"Proxy used: {proxy_used}")
print(response.text)
Führen Sie folgenden Befehl im Stammverzeichnis des Projekts aus, um dieses Scraping-Skript zu starten:
scrapy crawl samplebot

Tipps zur IP-Rotation
Web-Scraping hat sich zu einem Wettbewerb zwischen Websites und Scrapern entwickelt, wobei Scraper neue Methoden und Techniken entwickeln, um die benötigten Daten zu erhalten, während Websites neue Wege finden, den Zugang zu sperren.
IP-Rotation ist eine Technik, die darauf abzielt, von Websites gesetzte Einschränkungen zu umgehen. Um die Effektivität der IP-Rotation zu maximieren und die Wahrscheinlichkeit zu minimieren, von Ihrer Zielwebsite blockiert zu werden, beachten Sie folgende Tipps:
- Sorgen Sie für einen großen und vielfältigen Proxy-Pool: Bei der IP-Rotation benötigen Sie einen umfangreichen Proxy-Pool mit einer großen Anzahl von Proxys und einer breiten Vielfalt an IP-Adressen. Diese Vielfalt ermöglicht eine ordnungsgemäße Rotation und reduziert das Risiko, Proxys zu übernutzen, was zu Rate-Limits und Sperren führen könnte. Erwägen Sie die Nutzung mehrerer Proxy-Anbieter mit unterschiedlichen IP-Bereichen und Standorten. Variieren Sie außerdem die Zeitpunkte und Intervalle zwischen Ihren Anfragen mit verschiedenen Proxys, um natürliches Nutzerverhalten besser zu simulieren.
- Implementieren Sie robuste Fehlerbehandlungsmechanismen: Während Ihres Web-Scraping-Prozesses können verschiedene Fehler auftreten, die auf vorübergehende Verbindungsprobleme, blockierte Proxys oder Änderungen auf Ihrer Zielwebsite zurückzuführen sind. Durch die Implementierung von Fehlerbehandlung in Ihren Skripten können Sie eine reibungslose Ausführung Ihres Scraping-Prozesses sicherstellen und häufige Ausnahmen wie Verbindungsfehler, Timeouts und HTTP-Statusfehler abfangen und behandeln. Erwägen Sie die Einrichtung von Circuit Breakern, um Ihren Scraping-Prozess vorübergehend zu unterbrechen, wenn innerhalb kurzer Zeit viele Fehler auftreten.
- Testen Sie Ihre Proxys vor der Verwendung: Bevor Sie Ihr Scraping-Skript in der Produktion einsetzen, testen Sie mit einem Teil Ihres Proxy-Pools die IP-Rotationsfunktionalität und die Fehlerbehandlungsmechanismen unter verschiedenen Szenarien. Sie können Beispielwebsites nutzen, um reale Bedingungen zu simulieren und sicherzustellen, dass Ihr Skript diese Fälle bewältigen kann.
- Überwachen Sie die Proxy-Leistung und -Effizienz: Überwachen Sie regelmäßig die Leistung Ihrer Proxys, um Probleme wie langsame Antwortzeiten oder häufige Ausfälle zu erkennen. Verfolgen Sie die Erfolgsrate jedes Proxys, um ineffiziente Proxys zu identifizieren. Proxy-Anbieter wie Bright Data bieten Tools zur Überprüfung der Gesundheit und Leistung ihrer Proxys. Durch die Überwachung der Proxy-Leistung können Sie schnell zu zuverlässigeren Proxys wechseln und leistungsschwache aus Ihrem Rotations-Pool entfernen.
Web-Scraping ist ein iterativer Prozess, und Websites können ihre Struktur und Antwortmuster ändern oder neue Maßnahmen zur Verhinderung von Scraping implementieren. Überwachen Sie regelmäßig Ihren Scraping-Prozess und passen Sie sich an Änderungen an, um die Effektivität Ihrer Scraping-Bemühungen aufrechtzuerhalten.
Fazit
Dieser Artikel hat die IP-Rotation und ihre Implementierung in Ihrem Scraping-Prozess mit Python untersucht. Sie haben auch praktische Tipps kennengelernt, um die Effektivität Ihres Scraping-Prozesses mit Python aufrechtzuerhalten.
Bright Data ist Ihre All-in-One-Scraping-Infrastruktur für Web-Scraping-Lösungen. Es bietet hochwertige und ethische Proxys, einen Scraping-Browser, eine IDE für die Entwicklung und Verwaltung Ihres Scraping-Bots, sofort einsatzbereite Datensätze sowie verschiedene Tools zur Rotation und Verwaltung von Proxys beim Scraping.