Wer in Python viele Anfragen stellt, kommt mit einer einzigen Adresse nicht weit. Dieser Beitrag zeigt, wie Sie eine Liste von Proxys im Code durchwechseln.
Ein Proxy verbirgt Ihre Adresse — schickt er aber alle Anfragen hintereinander von derselben IP, greift das Ratenlimit der Zielseite. Das ist das eigentliche Problem: Nicht die Adresse wird erkannt, sondern das Muster. Wenn Sie keinen Rotierender Proxy einsetzen, sondern eine eigene Liste fester Adressen haben, übernimmt Ihr Code den Wechsel.
Was IP-Rotation ist
IP-Rotation heißt, die Adresse für ausgehende Anfragen laufend zu wechseln: nach jeder Anfrage, in festen Abständen oder wenn Sie es auslösen. Statt jede Anfrage über dieselbe IP zu schicken, verteilen Sie sie über mehrere.
Bei Residential-Proxy passiert das ohnehin im Dienst. Wer stattdessen eine eigene Liste hat und nicht nach Volumen abrechnen will, baut die Rotation selbst — dafür ist dieser Beitrag.
Schritt 1: Voraussetzungen
- Python 3
- eine Entwicklungsumgebung Ihrer Wahl
- die Bibliothek Requests als HTTP-Client:
pip3 install requestsSchritt 2: Proxys besorgen
Sie brauchen eine Liste von Adressen. Im Proxynet-Panel wählen Sie den Standort passend zur Zielseite und entscheiden zwischen IPv4-Proxy und IPv6-Proxy.
Schritt 3: Eine Anfrage ohne Proxy
Zum Vergleich zuerst eine Anfrage über Ihre eigene Leitung:
# pip3 install requests
import requests
# send a request to the test endpoint
response = requests.get("https://httpbin.io/ip")
if response.status_code != 200:
print(f"The request failed with {response.status_code}")
else:
print(response.text)Die Ausgabe zeigt Ihre eigene Adresse. Notieren Sie sie — sie ist der Vergleichswert für den nächsten Schritt.
Schritt 4: Dieselbe Anfrage über einen Proxy
Requests nimmt die Proxys als Wörterbuch entgegen, je einen Eintrag für HTTP und HTTPS:
# pip3 install requests
import requests
# specify the proxy server address
proxies = {
"http": "http://proxy.proxynet.io:60001",
"https": "http://proxy.proxynet.io:60001",
}
response = requests.get(
"https://httpbin.io/ip",
proxies=proxies,
)
if response.status_code != 200:
print(f"The request failed with {response.status_code}")
else:
print(response.text)Zeigt die Ausgabe jetzt eine andere Adresse als vorhin, läuft die Anfrage über den Proxy.
Schritt 5: Die Liste rotieren
Legen Sie Ihre Proxys zeilenweise in einer Datei ab, etwa proxies_list.txt:
proxy.proxynet.io:60001
proxy.proxynet.io:60002Für den Wechsel gibt es zwei Wege.
Der Reihe nach
Reihum verteilt die Last gleichmäßig, was bei einer kleinen Liste hilft, damit nicht eine Adresse die ganze Arbeit trägt. Der Nachteil: Die Abfolge ist regelmäßig, und eine aufmerksame Gegenstelle erkennt genau daran ein Muster.
# pip3 install requests
import requests
from itertools import cycle
# read the proxies from the proxy list file
proxies_list = open("proxies_list.txt", "r").read().strip().split("\n")
# create a proxy generator
proxy_pool = cycle(proxies_list)
for _ in range(4):
proxy = next(proxy_pool)
proxies = {
"http": f"http://{proxy}",
"https": f"http://{proxy}",
}
response = requests.get(
"https://httpbin.io/ip",
proxies=proxies,
)
if response.status_code != 200:
print(f"The request failed with {response.status_code}")
else:
print(response.text)Zufällig
Zufall bricht das Muster. Dafür kann eine Adresse zufällig häufiger drankommen als die anderen:
# pip3 install requests
import requests
import random
# read the proxies from the proxy list file
proxies_list = open("proxies_list.txt", "r").read().strip().split("\n")
for _ in range(4):
random_proxy = random.choice(proxies_list)
proxies = {
"http": f"http://{random_proxy}",
"https": f"http://{random_proxy}",
}
response = requests.get(
"https://httpbin.io/ip",
proxies=proxies,
)
if response.status_code != 200:
print(f"The request failed with {response.status_code}")
else:
print(response.text)Nicht nur die IP wechseln
Die Adresse ist nur ein Merkmal. Bleibt der User-Agent über alle Anfragen gleich, verrät die Kombination den Bot trotz wechselnder IP. Setzen Sie ihn ebenfalls pro Anfrage — von Hand oder mit einer Bibliothek wie fake-useragent — und halten Sie zwischen den Anfragen eine kurze, ungleichmäßige Pause ein.
Fazit
Python eignet sich gut für Scraping, und die Rotation über eine eigene Liste ist mit Requests in wenigen Zeilen gebaut. Reicht die Liste nicht aus oder wird die Verwaltung lästig, übernimmt ein Rotierender Proxy dieselbe Aufgabe im Dienst.




