Hintergründe

Cloudflare Challenge cf_clearance Cookie-Anleitung

cf_clearance ist das Cookie, das Cloudflare ausstellt, sobald ein Besucher eine Challenge bestanden hat – ohne dieses Cookie bleibt eine geschützte Seite für Ihre Automatisierung unerreichbar. Sie brauchen also zweierlei: ein gültiges Cookie und eine Sitzung, die zu den Bedingungen seiner Erzeugung passt. Dieser Leitfaden zeigt den Challenge-Flow, die bindenden Faktoren und wie Sie das Cookie mit CaptchaAI erzeugen, wiederverwenden und erneuern.


Voraussetzungen für den Ablauf

Bevor Sie das erste Cookie erzeugen, sollten diese vier Bausteine stehen:

  • ein CaptchaAI-API-Schlüssel
  • ein vollwertiger Browser für das Lösen (Selenium oder Puppeteer)
  • ein fester Proxy, der für Lösung und Abfragen identisch bleibt
  • die exakte Ziel-URL hinter der Cloudflare-Challenge

Stimmen diese Bausteine, folgt der Ablauf aus Lösung, Token-Einsatz und Wiederverwendung fast von selbst.


Eigenschaft Details
Name cf_clearance
Domain Domain der Ziel-Site (z. B. .example.com)
Pfad /
Gültigkeitsdauer typischerweise 30 Minuten bis 24 Stunden
HttpOnly ja
Secure ja (nur HTTPS)
SameSite None

Das Cookie ist an mehrere Merkmale der Sitzung gebunden. Weicht eines ab, verwirft Cloudflare es – der häufigste Grund für ein hartnäckiges 403 trotz gültigem Cookie.

  • IP-Adresse – ein Wechsel der IP macht das Cookie meist ungültig
  • User-Agent – muss mit dem UA aus dem Lösungsvorgang übereinstimmen
  • TLS-Fingerprint – manche Konfigurationen binden an den TLS-ClientHello

Hinweis: Ein cf_clearance-Cookie ersetzt keine saubere Anfrage-Signatur. Passen IP, User-Agent und TLS-Profil nicht zusammen, hilft auch ein frisch gelöstes Cookie nicht weiter.


Welche Challenge-Stufen es gibt

Cloudflare staffelt die Challenge nach Risiko – die Stufe entscheidet über sichtbare Interaktion:

Challenge-Stufe Antwortcode Interaktion Beschreibung
JS Challenge 503 keine reine JavaScript-Ausführung
Managed Challenge 403 ggf. Cloudflare entscheidet – zeigt ggf. Turnstile oder lässt still passieren
Interactive Challenge 403 ja zeigt immer ein Turnstile-Widget

CaptchaAI verarbeitet alle drei Stufen über den Cloudflare-Challenge-Löser.

Kurz gesagt: Nur die Interactive Challenge verlangt zwingend ein Widget – die beiden anderen Stufen können ohne sichtbare Interaktion durchlaufen.


So läuft der Cloudflare-Challenge-Flow ab

  1. Ein Client fordert eine geschützte Seite an
  2. Cloudflare bewertet Risikosignale (IP-Reputation, Header, TLS-Fingerprint)
  3. Bei Verdacht folgt 403 oder 503 mit einer JavaScript-Challenge-Seite
  4. Die Seite führt Browser-Prüfungen aus und blendet ggf. ein Turnstile-Widget ein
  5. Nach bestandener Prüfung setzt Cloudflare cf_clearance und leitet zur Ziel-URL weiter
  6. Folgeanfragen mit dem Cookie passieren ohne erneute Challenge

cf_clearance mit CaptchaAI erzeugen

Erster Schritt ist das Lösen der Challenge über die API. Der Ablauf besteht aus zwei Aufrufen:

  • Übermitteln (in.php): Sie senden method, sitekey und pageurl und erhalten eine Task-ID zurück.
  • Abfragen (res.php): Sie pollen mit der Task-ID, bis das gelöste Token vorliegt.

Python

import requests
import time

API_KEY = "YOUR_API_KEY"
TARGET_URL = "https://example.com/protected-page"

# Submit Cloudflare Challenge task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x0000000000000000000000",  # may be generic for CF challenge
    "pageurl": TARGET_URL,
    "json": "1",
}).json()

if resp["status"] != 1:
    raise Exception(f"Submit error: {resp['request']}")

task_id = resp["request"]
print(f"Task ID: {task_id}")

# Poll for result
for _ in range(30):
    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"]
        print(f"Token received: {token[:50]}...")
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(f"Error: {result['request']}")

JavaScript

const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com/protected-page';

const submit = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: API_KEY,
    method: 'turnstile',
    sitekey: '0x0000000000000000000000',
    pageurl: TARGET_URL,
    json: 1,
  }
});
const taskId = submit.data.request;

// Poll
let token = null;
for (let i = 0; i < 30; i++) {
  await new Promise(r => setTimeout(r, 5000));
  const poll = await axios.get('https://ocr.captchaai.com/res.php', {
    params: { key: API_KEY, action: 'get', id: taskId, json: 1 }
  });
  if (poll.data.status === 1) {
    token = poll.data.request;
    break;
  }
}
console.log(`Token: ${token.substring(0, 50)}...`);

Token einsetzen und cf_clearance auslesen

Das Token ist noch kein Cookie. Tragen Sie es in das Antwortfeld der Challenge-Seite ein und senden das Formular ab – erst danach setzt Cloudflare cf_clearance.

Wichtig: Das gelöste Token ist nur kurz gültig (rund 120 Sekunden). Setzen Sie es sofort ein, statt es zwischenzuspeichern.

# With Selenium
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(TARGET_URL)  # Load the challenge page

# Inject token into Turnstile response field
driver.execute_script("""
    const input = document.querySelector('input[name="cf-turnstile-response"]');
    if (input) input.value = arguments[0];

    // Trigger form submit or callback
    const form = document.querySelector('form');
    if (form) form.submit();
""", token)

# Wait for redirect and extract cookies
import time
time.sleep(3)
cookies = driver.get_cookies()
cf_clearance = next(
    (c for c in cookies if c['name'] == 'cf_clearance'), None
)
if cf_clearance:
    print(f"cf_clearance: {cf_clearance['value'][:30]}...")

Für Folgeanfragen genügt eine schlanke requests-Sitzung – solange IP und User-Agent gleich bleiben:

session = requests.Session()
session.cookies.set("cf_clearance", cf_clearance["value"], domain=".example.com")
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})

# Now access protected pages
resp = session.get("https://example.com/api/data")
print(resp.status_code)  # 200

Praxisbeispiel: Wer Worker auf einem Hetzner-Server betreibt und die Challenge über einen Rechenzentrums-Proxy löst, muss diesen Proxy auch für alle Folgeanfragen setzen. DSGVO-Hinweis: IP-Adressen sind personenbezogene Daten – prüfen Sie Datenfluss und Rechtsgrundlage.


IP, User-Agent und Sitzung konsistent halten

cf_clearance validiert nur, solange die Sitzung unverändert bleibt. Cloudflare bindet das Cookie an die Bedingungen seiner Entstehung – halten Sie diese über den gesamten Ablauf konstant:

  • Ein Proxy pro Cookie. Lösung und Abfragen laufen über dieselbe IP. Rotieren Sie erst, wenn Sie für die neue IP ein neues Cookie erzeugt haben.
  • User-Agent einfrieren. Der UA aus dem Lösungsvorgang muss in jeder Folgeanfrage identisch gesetzt sein – bis hin zur Versionsnummer.
  • Cookie je Domain speichern. cf_clearance gilt nur für die Domain, die es ausgestellt hat; verwalten Sie pro Ziel-Domain einen eigenen Eintrag.

So bleibt eine einmal gelöste Challenge über die gesamte Gültigkeitsdauer nutzbar, statt bei jeder Anfrage erneut aufzutauchen.

Praxis: Verwalten Sie pro Proxy-IP ein eigenes cf_clearance-Cookie in einem Store wie Redis – so laufen mehrere Worker parallel, ohne sich gegenseitig die Sitzung zu entwerten.


Typische Fehler und ihre Ursachen

Symptom Ursache Lösung
Cookie wird nach dem Lösen abgelehnt IP stimmt nicht überein für Lösung und Anfragen denselben Proxy verwenden
Cookie läuft sehr schnell ab kurze TTL der Website vor Ablauf erneut lösen; Feld expiry prüfen
403 trotz gültigem Cookie abweichender User-Agent UA zwischen Lösungs- und Anfrage-Sitzung angleichen
Challenge-Seite lädt nicht JavaScript deaktiviert vollwertigen Browser nutzen (Selenium, Puppeteer)

Das cf_clearance-Cookie läuft ab. Prüfen Sie die Gültigkeit vorab und lösen bei Bedarf neu:

import datetime

def is_cookie_valid(cookie):
    if not cookie:
        return False
    expiry = cookie.get("expiry", 0)
    return datetime.datetime.now().timestamp() < expiry - 60  # 60s buffer

def get_or_refresh_clearance(driver, target_url, solve_func):
    cookies = driver.get_cookies()
    cf = next((c for c in cookies if c["name"] == "cf_clearance"), None)
    if is_cookie_valid(cf):
        return cf["value"]

    # Re-solve
    token = solve_func(target_url)
    # ... inject and extract new cookie

Tipp: Lösen Sie proaktiv mit einem Zeitpuffer neu, statt auf den ersten 403 zu reagieren – so bricht kein laufender Scraping-Job mitten in einem Batch ab.


FAQ

Meist stimmt die Sitzung nicht überein. Cloudflare bindet das Cookie an IP und User-Agent – lösen Sie über einen anderen Proxy oder UA als Ihre Folgeanfragen, wird es verworfen.

Funktioniert cf_clearance mit rotierenden Proxys?

Nein. Das Cookie ist an die IP gebunden, die es erzeugt hat – eine Rotation bricht es sofort. Lösen Sie pro IP eine eigene Challenge und verwalten je Proxy ein eigenes Cookie.

Typischerweise 30 Minuten bis 24 Stunden – die genaue Dauer legt der Website-Betreiber fest. Lesen Sie das Feld expiry aus, statt sich auf einen festen Wert zu verlassen.

Brauche ich einen echten Browser oder reicht ein HTTP-Client wie requests?

Zum Lösen der Challenge brauchen Sie einen vollwertigen Browser (Selenium, Puppeteer), weil die Seite JavaScript ausführt. Für die Datenabfragen danach reicht eine requests-Sitzung mit demselben Cookie, derselben IP und demselben User-Agent.

Wie wird das Lösen von Cloudflare-Challenges abgerechnet?

CaptchaAI rechnet Thread-basiert ab, nicht pro Lösung: Jeder Plan enthält eine feste Zahl gleichzeitiger Threads und unbegrenzte Lösungen pro Thread. BASIC kostet 15 $/Monat mit 5 Threads, ADVANCE 90 $/Monat mit 50 Threads – der Durchsatz hängt an Ihrer Thread-Zahl, nicht an einem Preis pro Cookie.


Cloudflare-Challenges mit CaptchaAI lösen

Holen Sie sich Ihren API-Schlüssel auf captchaai.com und erzeugen Sie Ihr erstes cf_clearance-Cookie in Minuten.


Verwandte Leitfäden

Kommentare sind für diesen Artikel deaktiviert.