Zurück zum Blog
Anleitungen
Raluca PenciucLast updated on Mar 31, 20265 min read

Web-Scraping meistern: So wechseln Sie Proxys in Python

Web-Scraping meistern: So wechseln Sie Proxys in Python

Im heutigen digitalen Zeitalter wird Web-Scraping immer beliebter. Mit dieser zunehmenden Beliebtheit geht jedoch auch eine verstärkte Überwachung durch Websites und Dienste einher, die nicht möchten, dass ihre Daten abgegriffen werden.

Wenn Sie Ihre Datenextraktionsaufgaben automatisieren möchten, sind Sie vielleicht schon auf die Notwendigkeit gestoßen, Proxys zu verwenden, um Ihre IP-Adresse zu verschleiern. Die Verwendung desselben Proxys über einen längeren Zeitraum kann jedoch leicht dazu führen, dass Sie gesperrt werden. Hier kommt die Proxy-Rotation ins Spiel.

In diesem Artikel werden wir untersuchen, wie man Proxys in Python rotiert, einschließlich der Installation der notwendigen Voraussetzungen, der Verwendung eines einzelnen Proxys und der Steigerung der Geschwindigkeit während der Proxy-Rotation. Wir werden auch einige Tipps besprechen, wie Sie das Beste aus Ihren Proxy-Rotationsbemühungen herausholen können.

Am Ende dieses Leitfadens werden Sie in der Lage sein, Proxys wie ein Profi zu rotieren und sicherzustellen, dass Ihre Web-Scraping-Aktivitäten unbemerkt bleiben. Legen wir los!

Einrichten der Umgebung

Bevor wir beginnen, stellen wir sicher, dass wir über die erforderlichen Tools verfügen. Laden Sie zunächst die neueste Version von Python von der offiziellen Website herunter und installieren Sie sie.

Für dieses Tutorial verwenden wir Visual Studio Code als unsere integrierte Entwicklungsumgebung (IDE), aber Sie können jede andere IDE Ihrer Wahl verwenden. Erstellen Sie einen neuen Ordner für Ihr Projekt und eine neue Datei index.py, in die wir unseren Code schreiben werden.

Öffnen Sie nun das Terminal und führen Sie den folgenden Befehl aus, um das für das Senden von Anfragen erforderliche Paket zu installieren:

pip install requests

Und das war’s schon! Wir können mit dem Programmieren beginnen.

Eine GET-Anfrage proxifizieren

Beginnen wir mit dem Senden einer einfachen GET-Anfrage. Schreiben Sie in die neu erstellte Datei „index.py“ den folgenden Code:

import requests

response = requests.get('https://api.ipify.org/?format=json')

print(response.text)

Führen Sie nun das Skript mit dem folgenden Befehl aus:

py index.py

Sie werden feststellen, dass das Ergebnis Ihre echte IP-Adresse ist und dass das Skript, egal wie oft Sie es ausführen, immer dasselbe Ergebnis anzeigt.

Der Zweck dieses Leitfadens ist es, dir zu zeigen, wie du deine echte IP-Adresse verbergen und bei jeder Ausführung des Skripts eine andere IP-Adresse erhalten kannst. Hier kommen die Proxys ins Spiel. Du findest sie unter folgender Struktur:

http://proxy_username:proxy_password@proxy_host:proxy_port

Das Protokoll kann entweder „http“, „https“, „socks4“ oder „socks5“ lauten, während „proxy_username“ und „proxy_password“ optional sind.

Der aktualisierte Code sollte wie folgt aussehen:

import requests

proxy_schema = {

    "http": "http://proxy_username:proxy_password@proxy_host:proxy_port",

    "https": "https://proxy_username:proxy_password@proxy_host:proxy_port"

}

URL = 'https://api.ipify.org/?format=json'

response = requests.get(URL, proxies=proxy_schema)

print(response.text)

Sie können die Proxy-Vorlage durch eine echte ersetzen, die von einem kostenlosen Proxy-Dienst bereitgestellt wird, nur zu Testzwecken. Es ist jedoch erwähnenswert, dass diese nicht zuverlässig sind und nur zu Testzwecken verwendet werden sollten.

Da selbst die besten Proxys manchmal instabil sein können, empfiehlt es sich, Ausnahmen in unserem Code zu behandeln:

try:

    URL = 'https://api.ipify.org/?format=json'

    response = requests.get(URL, proxies=proxy_schema, timeout=30)

    print(response.text)

except:

    print('Unable to connect to the proxy')

Wenn Sie einen funktionierenden kostenlosen Proxy gefunden haben, sollten Sie nach Ausführung des Codes feststellen, dass sich das Ergebnis geändert hat, da es sich nicht mehr um Ihre echte IP-Adresse handelt.

Proxys rotieren

Schauen wir uns nun an, wie wir mehrere Proxys nutzen können, um unsere Anfragen zu anonymisieren. Gleichzeitig kümmern wir uns um die Geschwindigkeit unseres Skripts. Wir senden die Anfragen asynchron unter Verwendung der Bibliothek „concurrent.futures“.

Nehmen wir zunächst an, wir haben die folgende Liste von Proxys (oder einen Proxy-Pool):

proxy_pool = [

    "http://191.5.0.79:53281",

    "http://202.166.202.29:58794",

    "http://51.210.106.217:443",

    "http://5103.240.161.109:6666"

]

Diese kann entweder fest codiert oder aus einer Datei gelesen werden – ganz nach Ihrer Wahl. Damit können wir den folgenden Code schreiben:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=8) as pool:

    for response in list(pool.map(scrape_job, proxy_pool)):

        pass

Wir initialisieren einen Thread-Pool mit maximal 8 Workern, um die Funktion „scrape_job“ (die wir gleich definieren) auszuführen, die als Parameter ein Element aus der Liste „proxy_pool“ erhält.

Nun stellt die Funktion „scrape_job“ den zuvor geschriebenen Code dar, mit einer kleinen Anpassung:

def scrape_job(proxy):

    try:

        URL = 'https://api.ipify.org/?format=json'

        proxy_scheme = {

            "http": proxy,

        	"https": proxy

    	  }

    	  response = requests.get(URL, proxies=proxy_scheme, timeout=30)

    	  print(response.text)

    except:

        print('Unable to connect to the proxy')

Die Variable „proxy_scheme“ wird nun dynamisch zugewiesen, entsprechend dem Proxy, den wir als Parameter übergeben. Das Skript lässt sich auf mehrere URLs erweitern, mit einem spezifischen Timeout-Wert für jede einzelne.

Die Ausführung des Skripts sollte mehrere GET-Anfragen gleichzeitig senden, deren Ergebnis unterschiedliche IP-Adressen wären (sofern die kostenlosen Proxys funktionieren).

Skalierung

Wenn es darum geht, mit der Proxy-Rotation zu beginnen, gibt es einige wichtige Best Practices, die dazu beitragen können, dass Ihre Proxy-Rotation so effektiv wie möglich ist. Hier sind ein paar Tipps, die Sie beachten sollten:

Kostenlose Proxys sind ein No-Go

Kostenlose Proxy-Dienste mögen zwar wie eine kostengünstige Option erscheinen, sind jedoch oft unzuverlässig und können Ihre Scraping-Bemühungen sogar gefährden. Erwägen Sie die Investition in einen Premium-Proxy-Dienst, der ein höheres Maß an Sicherheit und Zuverlässigkeit bietet.

Vor dem Scraping testen

Bevor Sie mit dem Scraping beginnen, ist es ratsam, Ihre Proxy-Rotation zu testen, um sicherzustellen, dass sie wie vorgesehen funktioniert. So können Sie eventuelle Probleme erkennen und beheben, bevor sie später zu Schwierigkeiten führen.

Nutzen Sie User-Agent-Rotation

Die Rotation Ihrer IP-Adresse ist eine effektive Methode, um Anti-Scraping-Maßnahmen zu umgehen, aber sie ist nicht die einzige Technik, auf die Sie sich verlassen sollten. Die Kombination von IP-Rotation mit User-Agent-Rotation, die die Browsersignatur ändert, kann es für Websites noch schwieriger machen, Ihren Scraper zu erkennen und zu blockieren.

Premium-Proxy-Dienste

Nicht alle Proxy-Dienste sind gleich, daher ist es wichtig, dass Sie sich gut informieren und einen Anbieter wählen, der ein hohes Maß an Sicherheit und Zuverlässigkeit bietet. Suchen Sie nach einem Dienst, der eine große Auswahl an IP-Adressen und Standorten sowie Funktionen wie automatische IP-Rotation und anonymes Surfen bietet.

Verwenden Sie eine Web-Scraping-API

Die Verwendung einer Web-Scraping-API kann eine hervorragende Möglichkeit sein, den Prozess der Proxy-Rotation zu vereinfachen, insbesondere wenn Sie noch keine Erfahrung mit Web-Scraping haben. Eine gute Scraper-API übernimmt die Proxy-Rotation für Sie und bietet Ihnen eine übersichtliche und benutzerfreundliche Oberfläche für den Zugriff auf die benötigten Daten.

Ihr Proxy-Rotationsmechanismus verhindert Blockierungen gänzlich, und ihre umfangreiche Wissensdatenbank ermöglicht es, die Browserdaten zu randomisieren, sodass sie wie ein echter Nutzer aussehen.

Wenn Sie jedoch bei Ihrem eigenen Scraper bleiben möchten oder Ihr Anwendungsfall zu komplex ist, haben Sie auch die Möglichkeit, als Proxy auf die API zuzugreifen. Die Anfrage wird einfach an die API weitergeleitet, während Ihr Skript von der Proxy-Rotation profitiert.

Fazit

Zusammenfassend lässt sich sagen, dass das Wissen um die Proxy-Rotation eine wesentliche Technik für das Web-Scraping ist und Python die Umsetzung vereinfacht. Indem Sie die in diesem Leitfaden beschriebenen Schritte befolgt haben, haben Sie Einblicke gewonnen – von der Proxy-Weiterleitung einer einzelnen Anfrage bis hin zur Beschleunigung des Proxy-Rotationsprozesses.

Außerdem haben Sie einige zusätzliche Tipps zur Proxy-Rotation erhalten, wenn es darum geht, Ihr Projekt zu skalieren.

Denken Sie daran: Eine effektive Proxy-Rotation kann den Erfolg Ihrer Web-Scraping-Projekte erheblich steigern, und dieser Leitfaden hat Ihnen die Werkzeuge und das Wissen an die Hand gegeben, um dies wie ein Profi zu tun. Viel Spaß beim Scraping!

Über den Autor
Raluca Penciuc, Full-Stack-Entwickler @ WebScrapingAPI
Raluca PenciucFull-Stack-Entwickler

Raluca Penciuc ist Full-Stack-Entwicklerin bei WebScrapingAPI. Sie entwickelt Scraper, verbessert Umgehungsstrategien und findet zuverlässige Wege, um die Erkennung auf Zielwebsites zu verringern.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.