Die Cloudflare Challenge ist eine ganzseitige Sperrseite („Checking your browser …"), die Cloudflare bei verdächtigen Anfragen vor die Website schaltet. Erst wenn Ihr Browser die Prüfung besteht, setzt Cloudflare ein cf_clearance-Cookie – und genau dieses Cookie öffnet den Zugang für alle folgenden Anfragen.
Wichtig für die Automatisierung: Die Challenge ist kein eingebettetes Widget wie Turnstile. Sie ersetzt die komplette Seite und ist an IP-Adresse und User-Agent gebunden – lösen lässt sie sich daher nur mit einem passenden Proxy.
Cloudflare Challenge, Turnstile oder JS Challenge – wo liegt der Unterschied?
Cloudflare setzt mehrere Schutzmechanismen ein, die im Alltag gern verwechselt werden. Für die Automatisierung ist die Unterscheidung wichtig, denn nur die ganzseitige Challenge blockiert den kompletten Seitenzugriff:
| Merkmal | Cloudflare Challenge | Turnstile | JS Challenge |
|---|---|---|---|
| Typ | Ganzseitiges Interstitial | In-Page-Widget | Stille Prüfung |
| Nutzer sieht | „Checking your browser"-Seite | Checkbox oder nichts | Nichts |
| Blockiert den Seitenzugriff | Ja | Nein | Kurzzeitig |
| Setzt cf_clearance | Ja | Manchmal | Ja |
| Proxy zum Lösen nötig | Ja | Nein | – |
| Website nutzt Cloudflare-CDN | Erforderlich | Optional | Erforderlich |
Der Ablauf einer Cloudflare Challenge
Vom ersten Request bis zum geladenen Seiteninhalt durchläuft jede Anfrage denselben Weg:
Request → Cloudflare proxy → Suspicious? → Challenge page
↓
Browser verification
↓
cf_clearance cookie set
↓
Original page loads
- Anfrage abgefangen – Cloudflares Reverse-Proxy nimmt jede Anfrage entgegen, bevor sie den Ursprungsserver erreicht
- Risikobewertung – IP-Reputation, HTTP-Header, TLS-Fingerprint und Verhaltensmuster fließen in eine Bewertung ein
- Challenge ausgeliefert – Bei Verdacht ersetzt eine Challenge-Seite die angeforderte Antwort
- Browser-Verifizierung – Im Browser laufen JavaScript-Prüfungen ab, die menschliches Verhalten prüfen
- Cookie gesetzt – Besteht der Browser die Prüfung, setzt Cloudflare das
cf_clearance-Cookie mit konfigurierbarer TTL - Zugriff gewährt – Der Browser lädt neu und erhält den ursprünglichen Seiteninhalt
Warum Cloudflare überhaupt eine Challenge zeigt
Ob eine Anfrage auf der Challenge-Seite landet, entscheiden mehrere Signale:
| Auslöser | Beschreibung |
|---|---|
| Rechenzentrums-IP | Anfrage von bekannten Hosting-Anbietern |
| Fehlende Header | Fehlende oder ungewöhnliche HTTP-Header |
| TLS-Fingerprint | Der JA3/JA4-Fingerprint passt zu bekannten Bot-Signaturen |
| Hohe Anfragerate | Zu viele Anfragen von derselben IP |
| Sicherheitsstufe | Der Websitebetreiber setzt den Schwellenwert auf „hoch" |
| Länderregeln | Geografische Sperr- oder Challenge-Regeln |
| Bot-Score | Cloudflares ML-Bot-Score ist zu niedrig |
| Bekannte Bedrohung | Die IP steht auf Threat-Intelligence-Listen |
Beispiel aus der Praxis: Ein Scraping-Job auf einem Cloud-Server bei Hetzner oder netcup landet fast sofort auf der Challenge-Seite – Rechenzentrums-IPs stehen ganz oben auf Cloudflares Verdachtsliste. Über einen Residential-Proxy tritt die Challenge oft gar nicht erst auf. Beachten Sie außerdem: IP-Adressen gelten nach DSGVO als personenbezogen.
Das cf_clearance-Cookie – und warum ein Proxy Pflicht ist
Nach bestandener Challenge erhält der Browser ein Cookie in dieser Form:
cf_clearance=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None
| Eigenschaft | Bedeutung |
|---|---|
| Gültigkeitsdauer | 15 Minuten bis 24 Stunden, je nach Konfiguration des Websitebetreibers |
| Geltungsbereich | an die jeweilige Domain gebunden |
| Bindung | fest verknüpft mit User-Agent und IP-Adresse aus der Verifizierung |
| Verwendung | muss in jeder Folgeanfrage mitgeschickt werden, sonst erscheint die Challenge erneut |
Warum ein Proxy Pflicht ist: Das cf_clearance-Cookie ist kryptografisch an drei Merkmale gebunden – weicht auch nur eines zwischen Lösung und Folgeanfrage ab, verwirft Cloudflare das Cookie:
- IP-Adresse – Die Lösung muss von derselben IP kommen, die Sie anschließend nutzen
- User-Agent – Der User-Agent der Lösung muss zu Ihren Anfragen passen
- TLS-Fingerprint – Manche Konfigurationen prüfen zusätzlich TLS-Eigenschaften
Merken Sie sich: Ändern Sie nachträglich User-Agent oder IP-Adresse – etwa durch Proxy-Rotation –, wird das Cookie ungültig und die Challenge beginnt von vorne.
Cloudflare Challenge mit CaptchaAI lösen
Ein Proxy ist bei der Lösung Pflicht – aus dem eben genannten Grund. Sie übermitteln pageurl und Proxy, fragen den Status ab und erhalten das Cookie samt passendem User-Agent zurück.
Python
import requests
import time
API_KEY = "YOUR_API_KEY"
# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "cloudflare_challenge",
"pageurl": "https://example.com/protected-page",
"proxy": "username:password@proxy.example.com:8080",
"proxytype": "HTTP",
"json": 1
})
task_id = response.json()["request"]
# Poll for result
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, "json": 1
}).json()
if result.get("status") == 1:
solution = result["request"]
# solution contains cf_clearance cookie + user_agent
print(f"cf_clearance: {solution}")
break
Node.js
const axios = require('axios');
async function solveCloudflareChallenge(pageurl, proxy) {
const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
params: {
key: 'YOUR_API_KEY',
method: 'cloudflare_challenge',
pageurl,
proxy,
proxytype: 'HTTP',
json: 1
}
});
const taskId = data.request;
for (let i = 0; i < 60; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await axios.get('https://ocr.captchaai.com/res.php', {
params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
});
if (res.data.status === 1) return res.data.request;
}
throw new Error('Timeout');
}
cf_clearance-Cookie weiterverwenden
Nutzen Sie für alle Folgeanfragen exakt denselben Proxy und User-Agent wie bei der Lösung:
# After getting the solution
cf_clearance = solution["cf_clearance"]
user_agent = solution["user_agent"]
# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("cf_clearance", cf_clearance, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}
# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")
Häufige Fragen
Wie erkenne ich, ob eine Seite eine Cloudflare Challenge einsetzt?
An der ganzseitigen Sperrseite mit „Checking your browser …" und einer kurzen Wartezeit, bevor die Seite lädt. Im Netzwerk-Tab tauchen ein cf_clearance-Cookie und Cloudflare-Server-Header auf. Ein Kästchen mitten im Formular ist dagegen Turnstile.
Welchen Proxy-Typ brauche ich für die Cloudflare Challenge?
Einen Proxy, dessen IP nicht als Rechenzentrum erkannt wird. Residential- oder ISP-Proxys sind hier deutlich zuverlässiger als Rechenzentrums-Proxys, weil Letztere die Challenge häufig erst auslösen. Wichtig: Lösung und spätere Anfragen müssen über dieselbe IP laufen.
Löst CaptchaAI außer der Challenge auch Turnstile, hCaptcha oder GeeTest v4?
Cloudflare Turnstile und GeeTest v3 löst CaptchaAI regulär mit. hCaptcha und FunCaptcha werden nicht unterstützt; GeeTest v4 ist als „bald verfügbar" angekündigt, aber noch nicht nutzbar. CaptchaFox (Beta), Friendly Captcha (Beta) und Lemin (Beta) sind in der Erprobung.
Was kostet das Lösen der Cloudflare Challenge?
Es gibt keinen Aufpreis pro CAPTCHA-Typ: CaptchaAI rechnet Thread-basiert ab, nicht pro Lösung. BASIC kostet 15 $/Monat mit 5 Threads und unbegrenzten Lösungen; größere Tarife wie ADVANCE (90 $/Monat, 50 Threads) skalieren die parallele Verarbeitung.