Dieser Leitfaden behandelt das Einrichten einer CloudScraper-Proxy-Integration, das Rotieren von IPs sowie die Verwendung authentifizierter Proxies für nahtloses Scraping.
- Was ist CloudScraper?
- Warum Proxies mit CloudScraper verwenden?
- Einrichten eines Proxy mit CloudScraper
- Implementierung der Proxy-Rotation
- Verwenden authentifizierter Proxies in CloudScraper
- Integration von Premium Proxies in CloudScraper
- Fazit
CloudScraper ist ein Python-Modul, das entwickelt wurde, um Cloudflares Anti-Bot-Seite (allgemein bekannt als „I'm Under Attack Mode“ oder IUAM) zu umgehen. Unter der Haube ist es mit Requests implementiert, einem der beliebtesten Python-HTTP-Clients.
Cloudflare kann Ihre IP-Adresse blockieren, wenn Sie zu viele Anfragen stellen oder ausgefeiltere Abwehrmechanismen auslösen, die schwer zu umgehen sind. Die Kombination aus Proxies und CloudScraper für das Scraping von Websites, die bei Cloudflare gehostet werden, bietet zwei wesentliche Vorteile:
- Erhöhte Sicherheit und Anonymität: Indem Sie Anfragen über einen Proxy leiten, bleibt Ihre echte Identität verborgen, wodurch das Risiko einer Erkennung sinkt.
- Vermeidung von Sperren und Unterbrechungen: Proxies ermöglichen es Ihnen, IP-Adressen dynamisch zu rotieren, was Ihnen hilft, Sperren und Ratenbegrenzungen zu umgehen.
Installieren Sie das cloudscraper pip-Paket:
pip install -U cloudscraperDie Option -U stellt sicher, dass Sie die neueste Version des Pakets mit den aktuellsten Workarounds für Cloudflares Anti-Bot-Engine erhalten.
Importieren Sie CloudScraper:
import cloudscraperErstellen Sie eine CloudScraper-Instanz mit der Methode create_scraper():
scraper = cloudscraper.create_scraper()Das Objekt scraper funktioniert ähnlich wie das Objekt Session aus der Bibliothek requests. Insbesondere ermöglicht es Ihnen, HTTP-Anfragen zu stellen und dabei Cloudflares Anti-Bot-Maßnahmen zu umgehen.
Definieren Sie ein proxies-Dictionary und übergeben Sie es wie unten gezeigt an die Methode get():
proxies = {
"http": "<YOUR_HTTP_PROXY_URL>",
"https": "<YOUR_HTTPS_PROXY_URL>"
}
# Perform a request through the specified proxy
response = scraper.get("<YOUR_TARGET_URL>", proxies=proxies)Der Parameter proxies in der Methode get() wird an Requests weitergereicht. Dadurch kann der HTTP-Client Ihre Anfrage über den angegebenen HTTP- oder HTTPS-Proxy-Server leiten – abhängig vom Protokoll Ihrer Ziel-URL.
Zu Demonstrationszwecken zielen wir auf den Endpunkt /ip des Projekts HTTPBin. Dieser Endpunkt gibt die IP-Adresse des Aufrufers zurück. Wenn alles wie erwartet funktioniert, sollte die Antwort die IP-Adresse des Proxy-Servers anzeigen.
Angenommen, die URL für den Proxy-Server lautet http://202.159.35.121:443, dann ist dies der Script-Code:
import cloudscraper
# Create a CloudScraper instance
scraper = cloudscraper.create_scraper()
# Specify your proxy
proxies = {
"http": "http://202.159.35.121:443",
"https": "http://202.159.35.121:443"
}
# Make a request through the proxy
response = scraper.get("https://httpbin.org/ip", proxies=proxies)
# Print the response from the "/ip" endpoint
print(response.text)Sie sollten eine Antwort wie diese sehen:
{
"origin": "202.159.35.121"
}Die IP in der Antwort entspricht wie erwartet der IP des Proxy-Servers.
Hinweis:
Kostenlose Proxy-Server sind oft kurzlebig. Es ist am besten, beim Testen des Scripts eine neue IP-Adresse für einen Proxy zu beziehen.
Rufen Sie eine Liste von Proxies von einem zuverlässigen Anbieter ab und speichern Sie sie in einem Array:
proxy_list = [
{"http": "<YOUR_PROXY_URL_1>", "https": "<YOUR_PROXY_URL_1>"},
# ...
{"http": "<YOUR_PROXY_URL_n>", "https": "<YOUR_PROXY_URL_n>"},
]Verwenden Sie anschließend die Methode random.choice(), um zufällig einen Proxy aus der Liste auszuwählen:
import random
random_proxy = random.choice(proxy_list)Setzen Sie den zufällig ausgewählten Proxy in der get()-Anfrage:
response = scraper.get("<YOUR_TARGET_URL>", proxies=random_proxy)Wenn alles korrekt eingerichtet ist, verwendet die Anfrage bei jedem Lauf einen anderen Proxy aus der Liste. Hier ist der vollständige Code:
import cloudscraper
import random
# Create a Cloudscraper instance
scraper = cloudscraper.create_scraper()
# List of proxy URLs (replace with actual proxy URLs)
proxy_list = [
{"http": "<YOUR_PROXY_URL_1>", "https": "<YOUR_PROXY_URL_1>"},
# ...
{"http": "<YOUR_PROXY_URL_n>", "https": "<YOUR_PROXY_URL_n>"},
]
# Randomly select a proxy from the list
random_proxy = random.choice(proxy_list)
# Make a request using the randomly selected proxy
# (replace with the actual target URL)
response = scraper.get("<YOUR_TARGET_URL>", proxies=random_proxy)Um einen Proxy in CloudScraper zu authentifizieren, fügen Sie die erforderlichen Zugangsdaten direkt in die Proxy-URL ein. Das Format für die Authentifizierung per Benutzername und Passwort lautet wie folgt:
<PROXY_PROTOCOL>://<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_IP_ADDRESS>:<PROXY_PORT>
Mit diesem Format würde die CloudScraper-Proxy-Konfiguration so aussehen:
import cloudscraper
# Create a Cloudscraper instance
scraper = cloudscraper.create_scraper()
# Define your authenticated proxy
proxies = {
"http": "<PROXY_PROTOCOL>://<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_IP_ADDRESS>:<PROXY_PORT>",
"https": "<PROXY_PROTOCOL>://<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_IP_ADDRESS>:<PROXY_PORT>"
}
# Perform a request through the specified authenticated proxy
response = scraper.get("<YOUR_TARGET_URL>", proxies=proxies)Für zuverlässige Ergebnisse in produktiven Scraping-Umgebungen verwenden Sie Proxies von erstklassigen Anbietern wie Bright Data. So integrieren Sie die Proxies von Bright Data in CloudScraper:
-
Erstellen Sie ein Konto oder melden Sie sich an.
-
Gehen Sie zum Dashboard und klicken Sie in der Tabelle auf die Zone „Residential“:
- Aktivieren Sie die Proxies, indem Sie auf den Umschalter klicken:
Das sollten Sie nun sehen:
Hinweis:
Die Residential Proxies von Bright Data rotieren automatisch.
- Kopieren Sie im Abschnitt „Access Details“ den Proxy-Host, den Benutzernamen und das Passwort:
Ihre Bright Data Proxy-URL wird wie folgt aussehen:
http://<PROXY_USERNAME>:<PROXY_PASSWORD>@brd.superproxy.io:33335
- Integrieren Sie den Proxy wie folgt in Cloudscraper:
import cloudscraper
# Create a CloudScraper instance
scraper = cloudscraper.create_scraper()
# Define the premium proxy
proxies = {
"http": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST>:<PROXY_PORT>",
"https": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST>:<PROXY_PORT>"
}
# Perform a request using the premium proxy
response = scraper.get("https://httpbin.org/ip", proxies=proxies)
# Print the response to verify the proxy is working
print(response.text)Die CloudScraper-Proxy-Integration ist abgeschlossen. Nun müssen wir testen und verifizieren. Um sicherzustellen, dass der Proxy korrekt funktioniert, können Sie ihn gegen einen Dienst wie https://httpbin.org/ip testen, der die IP-Adresse des Aufrufers zurückgibt. Wenn die Einrichtung korrekt ist, sollte die Antwort die IP-Adresse des Proxy-Servers statt Ihrer lokalen IP anzeigen.
import cloudscraper
import random
import time
# Step 1: Define a list of proxies (authenticated and non-authenticated)
# Replace <PROXY_USERNAME>, <PROXY_PASSWORD>, <PROXY_HOST>, and <PROXY_PORT> with actual values
proxy_list = [
{"http": "http://<PROXY_HOST_1>:<PROXY_PORT_1>", "https": "http://<PROXY_HOST_1>:<PROXY_PORT_1>"},
{"http": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_2>:<PROXY_PORT_2>",
"https": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_2>:<PROXY_PORT_2>"},
{"http": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_3>:<PROXY_PORT_3>",
"https": "http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_3>:<PROXY_PORT_3>"}
]
# Step 2: Create a CloudScraper instance
scraper = cloudscraper.create_scraper()
# Step 3: Define the target URL
target_url = "https://httpbin.org/ip" # This endpoint returns the caller's IP address
# Step 4: Implement proxy rotation and make requests
def fetch_with_proxy_rotation(proxy_list, target_url, num_requests=5):
"""
Fetch the target URL using proxy rotation.
Args:
proxy_list (list): A list of proxy configurations.
target_url (str): The URL to scrape.
num_requests (int): Number of requests to make.
"""
for i in range(num_requests):
# Randomly select a proxy from the list
proxy = random.choice(proxy_list)
try:
# Make a request using the selected proxy
print(f"Using proxy: {proxy}")
response = scraper.get(target_url, proxies=proxy, timeout=10)
# Print the response (IP address of the proxy)
print(f"Response {i + 1}: {response.text}")
except Exception as e:
# Handle errors (e.g., connection timeout, proxy failure)
print(f"Error with proxy {proxy}: {e}")
# Wait a bit before the next request to mimic human behavior
time.sleep(random.uniform(1, 3))
# Step 5: Run the function
fetch_with_proxy_rotation(proxy_list, target_url, num_requests=5)Using proxy: {'http': 'http://<PROXY_HOST_1>:<PROXY_PORT_1>', 'https': 'http://<PROXY_HOST_1>:<PROXY_PORT_1>'}
Response 1: {
"origin": "203.0.113.1"
}
Using proxy: {'http': 'http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_2>:<PROXY_PORT_2>', 'https': 'http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_2>:<PROXY_PORT_2>'}
Response 2: {
"origin": "198.51.100.2"
}
Using proxy: {'http': 'http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_3>:<PROXY_PORT_3>', 'https': 'http://<PROXY_USERNAME>:<PROXY_PASSWORD>@<PROXY_HOST_3>:<PROXY_PORT_3>'}
Response 3: {
"origin": "192.0.2.3"
}
...Bright Data betreibt die besten Proxy-Server der Welt und bedient Fortune-500-Unternehmen sowie über 20.000 Kunden. Sein weltweites Proxy-Netzwerk umfasst:
- Datacenter proxies – Über 770.000 Rechenzentrums-IPs.
- Residential proxies – Über 72 Mio. Residential-IPs in mehr als 195 Ländern.
- ISP proxies – Über 700.000 ISP-IPs.
- Mobile proxies – Über 7 Mio. mobile IPs.
Erstellen Sie noch heute ein kostenloses Bright Data-Konto , um unsere Proxy-Server zu testen.



