---
title: "Proxys in Python rotieren: Anleitung mit Code"
description: "Warum eine feste IP beim Scrapen an Ratenlimits scheitert und wie Sie in Python mit Requests der Reihe nach oder zufällig zwischen Proxys wechseln."
url: https://proxynet.io/de/blog/how-to-rotate-proxies-in-python
date: 2025-02-06
author: "Acar Diveroli"
category: "Anleitungen, Proxy 101"
lang: de
---

# Proxys in Python rotieren: Anleitung mit Code

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](https://proxynet.io/de/rotating-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](https://proxynet.io/de/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](https://www.python.org/downloads/)
- eine Entwicklungsumgebung Ihrer Wahl
- die Bibliothek Requests als HTTP-Client:

```bash
pip3 install requests
```

## Schritt 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](https://proxynet.io/de/ipv4) und [IPv6-Proxy](https://proxynet.io/de/ipv6).

## Schritt 3: Eine Anfrage ohne Proxy

Zum Vergleich zuerst eine Anfrage über Ihre eigene Leitung:

```python
# 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:

```python
# 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:60002
```

Fü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.

```python
# 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:

```python
# 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](https://proxynet.io/de/rotating-proxy) dieselbe Aufgabe im Dienst.
