Wie man IPRoyal rotierende Residential-Proxies mit Selenium in Python für Web Scraping verwendet
Ein praktischer Leitfaden zur Integration von IPRoyal Residential-Proxies mit Selenium WebDriver in Python, einschließlich Authentifizierung, Rotation und Fehlerbehebung.
Überblick
Selenium ist ein beliebtes Tool zur Browser-Automatisierung, aber das Scraping in großem Umfang erfordert oft rotierende IP-Adressen, um Blockierungen zu vermeiden. Das Residential-Proxy-Netzwerk von IPRoyal bietet einen großen Pool an IPs mit flexiblen Rotationsoptionen. Dieses Tutorial zeigt Ihnen, wie Sie Selenium mit IPRoyal Residential-Proxies unter Python verbinden, die Authentifizierung handhaben und IPs zwischen Anfragen rotieren.
Da Selenium nicht in allen Treibern die Proxy-Authentifizierung nativ unterstützt, verwenden wir das Paket selenium-wire, das Selenium erweitert und Proxy-Anmeldeinformationen sauber verarbeitet. Die folgenden Beispiele verwenden Chrome, aber derselbe Ansatz funktioniert auch mit anderen von Selenium unterstützten Browsern.
Voraussetzungen
- Python 3.8 oder neuer
- Ein IPRoyal-Konto mit Residential-Proxy-Anmeldeinformationen
- Grundlegende Vertrautheit mit Python und Selenium
- Chrome-Browser und ChromeDriver installiert (oder ein alternativer Browser-Treiber)
Schritt 1: Sammeln Sie Ihre IPRoyal-Proxy-Anmeldeinformationen
Melden Sie sich in Ihrem IPRoyal-Dashboard an und suchen Sie die Details zum Residential-Proxy-Endpunkt. Sie benötigen:
- Proxy-Host (z. B.
geo.iproyal.comoder der in Ihrem Dashboard angezeigte Host) - Portnummer
- Benutzername
- Passwort
IPRoyal Residential-Proxies bieten in der Regel sowohl rotierende als auch sticky Sitzungen. Bei rotierenden Sitzungen kann jede Anfrage (oder jede neue Browsersitzung) eine andere IP verwenden. Bei sticky Sitzungen können Sie dieselbe IP für einen Zeitraum beibehalten, indem Sie eine Sitzungskennung im Benutzernamen verwenden. Prüfen Sie Ihr Dashboard auf das genaue Format – oft hängen Sie eine Sitzungs-ID an den Benutzernamen an, z. B. yourusername-session-abc123.
Schritt 2: Installieren Sie Selenium und selenium-wire
Installieren Sie die erforderlichen Pakete mit pip:
pip install selenium selenium-wire
Stellen Sie sicher, dass die ChromeDriver-Version mit Ihrer installierten Chrome-Version übereinstimmt. Sie können ChromeDriver von der Seite Chrome for Testing herunterladen oder einen Manager wie webdriver-manager verwenden.
Schritt 3: Konfigurieren Sie Selenium mit IPRoyal-Proxy-Authentifizierung
Erstellen Sie ein Python-Skript, das einen Selenium Wire-Treiber mit Ihren IPRoyal-Proxy-Anmeldeinformationen einrichtet. Ersetzen Sie die Platzhalter durch Ihre tatsächlichen Werte.
from seleniumwire import webdriver
# Ersetzen Sie durch Ihre IPRoyal-Proxy-Details
proxy_user = "your_username"
proxy_pass = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"
# Proxy-URL erstellen
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
# Selenium Wire Proxy-Optionen konfigurieren
proxy_options = {
'proxy': {
'http': proxy_url,
'https': proxy_url,
'no_proxy': 'localhost,127.0.0.1'
}
}
# Chrome mit Selenium Wire starten
driver = webdriver.Chrome(seleniumwire_options=proxy_options)
try:
driver.get("https://httpbin.org/ip")
print(driver.find_element("tag name", "body").text)
finally:
driver.quit()
Führen Sie das Skript aus. Wenn der Proxy funktioniert, sollten Sie eine IP-Adresse sehen, die zum Netzwerk von IPRoyal gehört, nicht Ihre echte IP.
Schritt 4: IPs zwischen Anfragen rotieren
Es gibt zwei gängige Methoden, um IPs mit IPRoyal Residential-Proxies zu rotieren:
- Rotierender Endpunkt: Verwenden Sie denselben Host und Port für jede Anfrage. Der Proxy weist automatisch eine neue IP für jede Verbindung zu. Dies ist die einfachste Methode für zustandsloses Scraping.
- Sticky-Sitzungen mit einer Sitzungs-ID: Hängen Sie eine eindeutige Sitzungs-ID an Ihren Benutzernamen an (z. B.
yourusername-session-abc123). Alle Anfragen, die diese Sitzungs-ID verwenden, nutzen dieselbe IP, bis die Sitzung abläuft oder Sie die ID ändern. Dies ist nützlich für mehrstufige Abläufe wie Anmelden und anschließendes Scrapen von Daten.
Um IPs in Selenium manuell zu rotieren, können Sie für jede Scraping-Aufgabe eine neue Treiberinstanz mit einer anderen Sitzungs-ID erstellen. Hier ist ein Beispiel, das eine Liste von Sitzungs-IDs durchläuft:
import time
from seleniumwire import webdriver
base_username = "your_username"
base_password = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"
session_ids = ["session1", "session2", "session3"]
for session_id in session_ids:
# Benutzernamen mit Sitzungs-ID konstruieren (Syntax gemäß IPRoyal-Dokumentation anpassen)
username = f"{base_username}-session-{session_id}"
proxy_url = f"http://{username}:{base_password}@{proxy_host}:{proxy_port}"
proxy_options = {
'proxy': {
'http': proxy_url,
'https': proxy_url,
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Chrome(seleniumwire_options=proxy_options)
try:
driver.get("https://httpbin.org/ip")
print(f"Session {session_id}:", driver.find_element("tag name", "body").text)
finally:
driver.quit()
time.sleep(1)
Wenn IPRoyal einen rotierenden Endpunkt bereitstellt, der die IP pro Anfrage ändert, können Sie die Sitzungs-ID-Logik überspringen und dieselben Anmeldeinformationen wiederverwenden. Überprüfen Sie das Verhalten in Ihrem Dashboard.
Schritt 5: Geo-Targeting und Sticky-Sitzungen handhaben
IPRoyal Residential-Proxies unterstützen Länder- und Städte-Targeting. Normalerweise können Sie den Standort angeben, indem Sie einen Ländercode zum Benutzernamen hinzufügen oder einen dedizierten Endpunkt verwenden. Zum Beispiel verwenden viele Anbieter ein Benutzernamenformat wie yourusername-country-us. Prüfen Sie Ihr IPRoyal-Dashboard auf die genaue Syntax.
Um eine sticky Sitzung für ein mehrstufiges Scraping (z. B. In den Warenkorb legen, dann zur Kasse gehen) beizubehalten, verwenden Sie eine einzige Sitzungs-ID für alle Aktionen und halten Sie dieselbe Treiberinstanz geöffnet. Ein Wechsel des Treibers oder der Sitzungs-ID führt zu einer anderen IP.
Schritt 6: Überprüfen Sie den Proxy und behandeln Sie Fehler
Überprüfen Sie immer, dass Ihre Anfragen über den Proxy gehen. Eine einfache Prüfung besteht darin, https://httpbin.org/ip oder https://ipinfo.io/ip zu besuchen und zu bestätigen, dass die IP nicht Ihre eigene ist. Wenn Sie Header inspizieren müssen, ermöglicht Selenium Wire den Zugriff auf Anfrage- und Antwortobjekte:
for request in driver.requests:
if request.response:
print(request.url, request.response.status_code)
Fehlerbehebung
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| 407 Proxy Authentication Required | Falscher Benutzername/Passwort oder Sonderzeichen nicht URL-kodiert | URL-kodieren Sie Sonderzeichen in Benutzername/Passwort (z. B. wird @ zu %40). Überprüfen Sie die Anmeldeinformationen in Ihrem IPRoyal-Dashboard. |
| Verbindungszeitüberschreitung | Falscher Host/Port oder Firewall blockiert | Überprüfen Sie Host und Port. Versuchen Sie einen anderen Port, wenn IPRoyal Alternativen bietet. Stellen Sie sicher, dass Ihre Firewall ausgehende Verbindungen zulässt. |
| IP ändert sich nicht | Sticky-Sitzungs-ID oder zwischengespeicherte Verbindung wird verwendet | Verwenden Sie den rotierenden Endpunkt oder ändern Sie die Sitzungs-ID. Schließen Sie den Treiber und öffnen Sie einen neuen. |
| WebDriver-Fehler beim Start | ChromeDriver-Versionskonflikt | Aktualisieren Sie ChromeDriver, damit es zu Ihrer Chrome-Version passt. |
| SSL-Fehler | Proxy verarbeitet HTTPS nicht korrekt | Stellen Sie sicher, dass Sie http:// in der Proxy-URL verwenden, auch für HTTPS-Websites (der Proxy tunnelt HTTPS). |
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie IPRoyal Residential-Proxies mit Selenium in Python unter Verwendung von selenium-wire für die Authentifizierung integrieren. Sie haben einen einzelnen Proxy konfiguriert, die Rotation über Sticky-Sitzungs-IDs implementiert und das Setup überprüft. Denken Sie daran, rotierende Endpunkte für Scraping mit hohem Volumen und Sticky-Sitzungen für mehrstufige Workflows zu verwenden. Testen Sie immer Ihre Proxy-Verbindung, bevor Sie große Jobs ausführen, und konsultieren Sie Ihr IPRoyal-Dashboard für das genaue Endpunktformat und die Sitzungsparameter.