Die kurze Antwort zuerst: Für einzelne Formulare mit reCAPTCHA oder Cloudflare Turnstile arbeiten Sie Token-basiert – Abfrage lösen, Token ins Formularfeld eintragen, absenden. Für großflächiges Scraping hinter einer Cloudflare Challenge lohnt der Cookie-basierte Weg: einmal lösen, das cf_clearance-Cookie behalten, viele Anfragen damit durchreichen. Welcher Ansatz passt, entscheidet die Zielseite – nicht Ihre Vorliebe.
Auf einen Blick
| Aspekt | Token-basiert | Cookie-basiert |
|---|---|---|
| Ausgabe | String-Token (500+ Zeichen) | Browser-Cookie (cf_clearance) |
| Einsatzfälle | reCAPTCHA v2/v3, Turnstile | Cloudflare Challenge-Seiten |
| Verwendung | ins Formularfeld / den POST-Body | mit jeder HTTP-Anfrage mitgeschickt |
| Lebensdauer | 60–120 Sekunden | 30 Minuten bis 24 Stunden |
| Wiederverwendbar | nein (Einmalgebrauch) | ja (Sitzungsdauer) |
| Browser nötig | nur zur Extraktion | zum Lösen (voller Browser) |
Entscheidungsmatrix: welcher Ansatz wann?
| Szenario | Ansatz |
|---|---|
| Anmeldeformular mit reCAPTCHA | Token |
| Formular mit Turnstile | Token |
| Mehrere Formulare senden | Token (je Formular) |
| Cloudflare-geschützte Seite scrapen | Cookie |
| API-Zugriff hinter Cloudflare | Cookie |
| Massen-Scraping derselben Domain | Cookie |
Token-basiert: lösen, einfügen, absenden
Der Token-Weg passt für einzelne Formulare mit CAPTCHA: Abfrage lösen, Token-String ins passende Formularfeld eintragen, absenden – ganz ohne Browser für die Übermittlung.
- Sitekey aus der Seite extrahieren
- Sitekey und Seiten-URL an CaptchaAI übermitteln
- Token-String zurückerhalten
- Token in das verborgene Formularfeld eintragen
- Formular absenden
| CAPTCHA-Typ | Zielfeld |
|---|---|
| reCAPTCHA v2 | g-recaptcha-response |
| reCAPTCHA v3 | g-recaptcha-response (plus action, Enterprise: enterprise=1) |
| Turnstile | cf-turnstile-response |
| hCaptcha | h-captcha-response (von CaptchaAI nicht gelöst) |
import requests
import time
API_KEY = "YOUR_API_KEY"
# 1. Solve
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-wvkSAAAAAPBMR...",
"pageurl": "https://example.com/login",
"json": "1",
}).json()
task_id = resp["request"]
# 2. Poll
token = None
for _ in range(24):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": "1"
}).json()
if result["status"] == 1:
token = result["request"]
break
# 3. Submit form with token (no browser needed)
form_response = requests.post("https://example.com/login", data={
"email": "user@example.com",
"password": "password",
"g-recaptcha-response": token,
})
Tokens sind kurzlebig: Sie verfallen nach 60–120 Sekunden, also sofort verwenden. Jeder funktioniert genau einmal – für jede Übermittlung lösen Sie neu. Die Zielseite prüft ihn serverseitig bei Google, Cloudflare oder hCaptcha. CaptchaAI löst reCAPTCHA v2/v3 und Turnstile; hCaptcha dient hier nur als Beispiel und wird nicht gelöst.
Cookie-basiert: einmal lösen, oft nutzen
Steht vor der ganzen Seite eine Cloudflare Challenge, lösen Sie sie einmal im Browser und ernten das cf_clearance-Cookie. Jede weitere Anfrage damit überspringt die Abfrage – ideal beim Scraping über viele Seiten.
- Die Seite liefert eine Challenge (Cloudflare Challenge, JS Challenge)
- Ein Browser löst die Challenge (intern teils über Turnstile)
- Der Server setzt ein Sitzungscookie (
cf_clearance) - Jede weitere Anfrage mit diesem Cookie überspringt die Challenge
| Mechanismus | Hinweis |
|---|---|
| Cloudflare Challenge-Seiten | setzen cf_clearance |
| JS Challenge | reine JavaScript-Abfrage von Cloudflare |
| WAF-Abfragen | je nach Web Application Firewall |
from selenium import webdriver
import requests
import time
# 1. Herausforderung im Browser loesen
driver = webdriver.Chrome()
driver.get("https://example.com/protected")
# Warten, bis die Herausforderung abgeschlossen ist (manuell oder ueber regulare Integration)
time.sleep(10)
# 2. Cookies aus dem Browser uebernehmen
cookies = driver.get_cookies()
cf_clearance = next(
(c for c in cookies if c["name"] == "cf_clearance"), None
)
user_agent = driver.execute_script("return navigator.userAgent")
driver.quit()
# 3. Cookies fuer Folgeanfragen nutzen (ohne Browser)
session = requests.Session()
session.headers.update({"User-Agent": user_agent})
for cookie in cookies:
session.cookies.set(cookie["name"], cookie["value"])
# Folgeanfragen mit gleicher Session ausfuehren
for page in range(1, 50):
resp = session.get(f"https://example.com/api/data?page={page}")
print(f"Page {page}: {resp.status_code}")
Zum Lösen brauchen Sie einen vollständigen Browser; danach genügt das Cookie. Es hält 30 Minuten bis 24 Stunden und bedient in dieser Zeit viele Anfragen. Wichtig: Es ist an lösende IP und User-Agent gebunden – wechseln Sie Proxy oder User-Agent, erscheint die Challenge erneut.
Hybrider Fall: Cookie und Token zusammen
Manche Seiten kombinieren beides – eine Cloudflare Challenge (Cookie) schützt ein Formular mit reCAPTCHA (Token). Dann durchlaufen Sie beide Wege nacheinander:
# Step 1: Get past Cloudflare (cookie)
session = get_cf_clearance_session("https://example.com")
# Step 2: Load the form (using the cookie session)
html = session.get("https://example.com/submit").text
sitekey = extract_sitekey(html)
# Step 3: Solve reCAPTCHA (token)
token = solve_recaptcha(sitekey, "https://example.com/submit")
# Step 4: Submit form (cookie + token)
resp = session.post("https://example.com/submit", data={
"data": "value",
"g-recaptcha-response": token,
})
Kosten und Durchsatz im Vergleich
| Merkmal | Token | Cookie |
|---|---|---|
| Aufwand pro Zugriff | je Übermittlung | je Sitzung (amortisiert) |
| Lösungszeit | 10–30 s pro Token | 10–30 s einmalig |
| Anfragen pro Lösung | 1 | viele (bis zum Ablauf) |
| IP-Flexibilität | von jeder IP | an die lösende IP gebunden |
| Ablaufrisiko | 60–120 s | 30 Minuten – 24 Stunden |
Ein Detail geht oft unter: CaptchaAI rechnet pro gleichzeitigem Thread ab, nicht pro Lösung – von BASIC (15 $/Monat, 5 Threads) bis ENTERPRISE (300 $/Monat, 200 Threads), jeweils mit unbegrenzten Lösungen pro Thread. Entscheidend ist nicht der Token-Preis, sondern wie lange ein Thread belegt bleibt. Der Cookie-Weg gibt seinen Thread nach dem Lösen sofort frei; der Token-Weg belegt ihn für jedes Formular erneut. Bei großem Scraping-Volumen entlastet das Ihre Thread-Zuteilung spürbar.
Häufige Fragen
Wie lange ist ein cf_clearance-Cookie gültig?
Zwischen 30 Minuten und 24 Stunden – Cloudflare legt die Dauer je nach Seitenkonfiguration fest. Solange es gültig ist und aus derselben IP mit demselben User-Agent stammt, überspringen Ihre Anfragen die Challenge.
Warum läuft mein Token ab, bevor das Formular ankommt?
Tokens leben nur 60–120 Sekunden. Vergeht zwischen Lösung und Absenden zu viel Zeit – etwa durch eine Warteschlange –, ist der Token beim Eintreffen ungültig. Lösen Sie deshalb erst unmittelbar vor der Übermittlung und senden sofort ab.
Muss der Proxy beim Cookie-Ansatz gleich bleiben?
Ja. Das cf_clearance-Cookie ist an IP und User-Agent der lösenden Sitzung gebunden; wechseln Sie danach Proxy oder User-Agent, verwirft Cloudflare es. Beachten Sie zudem: In der EU gelten IP-Adressen als personenbezogene Daten – prüfen Sie bei Scraping-Projekten Ihre Rechtsgrundlage nach DSGVO.
Brauche ich für Token-basiertes Lösen einen Browser?
Nein, für die Übermittlung genügen HTTP-Anfragen: Sitekey aus dem Seitenquelltext lesen, Token über die API holen, ins Formularfeld schreiben. Einen Browser brauchen Sie höchstens zum Auslesen des Sitekeys, nicht zum Absenden.
Löst CaptchaAI sowohl Token- als auch Cookie-Fälle?
Ja. reCAPTCHA v2/v3 und Turnstile geben einen Token-String zurück. Für Cloudflare Challenge-Seiten nutzen Sie den Turnstile- bzw. Cloudflare-Challenge-Solver und extrahieren danach das cf_clearance-Cookie. hCaptcha und FunCaptcha löst CaptchaAI nicht.
CAPTCHAs mit CaptchaAI lösen
Holen Sie sich Ihren API-Schlüssel unter captchaai.com und lösen Sie Token- wie Cookie-Fälle im selben Workflow.