Die Proxy-Rotation reduziert die CAPTCHA-Häufigkeit, indem Anfragen auf mehrere IPs verteilt werden. Kombiniert mit CaptchaAI zur Lösung der noch auftauchenden CAPTCHAs erhalten Sie eine zuverlässige Scraping-Pipeline, die jedes Anti-Bot-System beherrscht.
Warum Proxy-Rotation CAPTCHAs reduziert
Websites lösen CAPTCHAs basierend auf Pro-IP-Anfragemustern aus:
| Faktor | Einzelne IP | Rotierende Proxys |
|---|---|---|
| Anfragen pro Minute | 10+ löst CAPTCHA aus | Über IPs verteilt |
| IP-Reputation | Verliert sich mit der Zeit | Neue IPs aus dem Pool |
| Sitzungsmuster | Verdächtige Muster sichtbar | Muster breiten sich über IPs aus |
| Geografische Konsistenz | Einzelner Standort | Natürliche geografische Vielfalt |
Proxy-Typen für Scraping
| Typ | Am besten für | CAPTCHA-Rate | Kosten |
|---|---|---|---|
| Wohnen | Hochwertige Ziele (Google, Amazon) | Am niedrigsten | $$$ |
| Mobil | Extrem niedrige Erkennung | Am niedrigsten | $$$$ |
| ISP/Static | Anhaltende Sitzungen | Niedrig | $$ |
| Rechenzentrum | Umfangreiche, großzügige Websites | Höher | $ |
Empfehlung: Verwenden Sie Privat-Proxys für Websites mit aggressiven CAPTCHA-Triggern. Rechenzentrums-Proxys funktionieren für weniger geschützte Standorte.
Grundlegende Proxy-Rotation (Python)
import requests
import random
import time
PROXIES = [
"http://user:pass@proxy1.example.com:8080",
"http://user:pass@proxy2.example.com:8080",
"http://user:pass@proxy3.example.com:8080",
]
API_KEY = "YOUR_API_KEY"
def get_random_proxy():
proxy = random.choice(PROXIES)
return {"http": proxy, "https": proxy}
def scrape_with_rotation(url):
proxy = get_random_proxy()
session = requests.Session()
session.proxies = proxy
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})
resp = session.get(url)
# If CAPTCHA appears, solve it
if "g-recaptcha" in resp.text or "captcha" in resp.text.lower():
from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.text, "html.parser")
rc = soup.find("div", class_="g-recaptcha")
if rc:
site_key = rc["data-sitekey"]
token = solve_captcha(site_key, url)
resp = session.post(url, data={"g-recaptcha-response": token})
return resp.text
def solve_captcha(site_key, page_url):
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": site_key, "pageurl": page_url
})
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id
})
if result.text == "CAPCHA_NOT_READY": continue
if result.text.startswith("OK|"): return result.text.split("|")[1]
raise Exception(result.text)
raise TimeoutError()
Intelligente Proxy-Rotation
Verfolgen Sie, welche Proxys CAPTCHAs auslösen und vermeiden Sie diese:
from collections import defaultdict
import random
class SmartProxyRotator:
def __init__(self, proxies):
self.proxies = proxies
self.captcha_count = defaultdict(int)
self.success_count = defaultdict(int)
def get_proxy(self):
# Prefer proxies with lower CAPTCHA rates
scored = []
for proxy in self.proxies:
total = self.captcha_count[proxy] + self.success_count[proxy]
if total == 0:
score = 0.5 # Unknown proxy, neutral score
else:
score = self.success_count[proxy] / total
scored.append((proxy, score))
# Weight selection by score
scored.sort(key=lambda x: x[1], reverse=True)
top_proxies = scored[:max(len(scored) // 2, 1)]
proxy = random.choice(top_proxies)[0]
return proxy
def report_success(self, proxy):
self.success_count[proxy] += 1
def report_captcha(self, proxy):
self.captcha_count[proxy] += 1
# Usage
rotator = SmartProxyRotator(PROXIES)
def scrape(url):
proxy = rotator.get_proxy()
resp = requests.get(url, proxies={"http": proxy, "https": proxy})
if "captcha" in resp.text.lower():
rotator.report_captcha(proxy)
# Solve CAPTCHA...
else:
rotator.report_success(proxy)
return resp.text
Proxy-Rotation mit Selen
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_driver_with_proxy(proxy_url):
options = Options()
options.add_argument(f"--proxy-server={proxy_url}")
options.add_argument("--disable-blink-features=AutomationControlled")
return webdriver.Chrome(options=options)
# Rotate proxy per session
proxy = random.choice(PROXIES)
driver = create_driver_with_proxy(proxy)
driver.get("https://example.com")
Proxy + CAPTCHA-Lösung für Cloudflare
Die Lösung von Cloudflare Challenge erfordert die Übergabe eines Proxys an CaptchaAI:
proxy = "http://user:pass@proxy.example.com:8080"
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": proxy,
"proxytype": "HTTP"
})
task_id = resp.text.split("|")[1]
# Poll for cf_clearance cookie
# Use the same proxy for subsequent requests
Best Practices
- Proxy-Geo dem Ziel zuordnen – Verwenden Sie US-Proxys für US-Websites
- Eine Sitzung pro Proxy – Verwenden Sie Sitzungen nicht über verschiedene Proxys hinweg wieder
- Ratenbegrenzung pro Proxy – Max. 5–10 Anfragen/minute pro IP
- CAPTCHA-Raten überwachen – Verfolgen Sie, welche Proxys mehr CAPTCHAs auslösen
- Verwenden Sie Sticky Sessions – Behalten Sie denselben Proxy für mehrstufige Arbeitsabläufe bei
- Proxy-Fehler behandeln – Versuchen Sie es bei Verbindungsfehlern erneut mit einem anderen Proxy
Fehlerbehebung
| Problem | Beheben |
|---|---|
| Alle Proxys lösen CAPTCHAs aus | Wechseln Sie zu Residential-Proxys; Rate reduzieren |
| Proxy-Timeout-Fehler | Langsame Proxys aus dem Pool entfernen; Timeout erhöhen |
| Unterschiedlicher Inhalt pro Proxy | Einige Websites stellen geospezifische Inhalte bereit; normalisieren |
| CAPTCHA-Tokens funktionieren nicht mit Proxy | Stellen Sie sicher, dass das Token aus derselben Sitzung /IP verwendet wird |
FAQ
Benötige ich Proxys, wenn ich CaptchaAI verwende?
Nicht unbedingt – CaptchaAI kann CAPTCHAs trotzdem lösen. Proxys reduzieren jedoch die Häufigkeit, mit der CAPTCHAs angezeigt werden, was Zeit und API-Kosten spart.
Sollte ich denselben Proxy zum Lösen und Scrapen von CAPTCHAs verwenden?
Bei den meisten CAPTCHA-Typen ist das Token unabhängig von der IP gültig. Für Cloudflare Challenge müssen Sie denselben Proxy verwenden, da das Cookie cf_clearance IP-gebunden ist.
Wie viele Proxys benötige ich?
Für moderates Scraping (1.000 Seiten/day) genügen 10–20 rotierende Residential-Proxys. Verwenden Sie für ein hohes Volumen einen Proxy-Anbieter mit automatischer Rotation.
Verwandte Leitfäden
- Scraping geschützter Websites mit CAPTCHA
- So funktioniert Cloudflare Challenge
- Verwendung von Proxys mit CaptchaAI