Explications Techniques

Comment fonctionne Cloudflare Challenge

Lorsque Cloudflare soupçonne qu'un visiteur est un robot, il affiche un interstitiel pleine page avec le message "Vérification de votre navigateur avant d'accéder..." ou "Vérifiez que vous êtes humain". C'est ce qu'on appelle un Cloudflare Challenge — à ne pas confondre avec Turnstile, qui est un widget intégré dans une page.

Le défi bloque l'accès à la page entière jusqu'à ce que le navigateur réussisse la vérification. Une fois transmis, Cloudflare définit un cookie cf_clearance qui accorde l'accès aux demandes ultérieures.


Comment fonctionne le flux de défi

Request → Cloudflare proxy → Suspicious? → Challenge page
                                              ↓
                                    Browser verification
                                              ↓
                                    cf_clearance cookie set
                                              ↓
                                    Original page loads
  1. Demande interceptée — Le proxy inverse de Cloudflare évalue la requête entrante
  2. Évaluation des risques — La réputation IP, les en-têtes de requête, l'empreinte digitale TLS et le comportement sont analysés
  3. Défi servi — En cas de suspicion, une page de défi remplace la réponse prévue
  4. Vérification du navigateur : les défis JavaScript s'exécutent dans le navigateur
  5. Cookie défini — En cas de succès, le cookie cf_clearance est défini avec un TTL configurable
  6. Accès accordé — Le navigateur recharge et reçoit le contenu de la page d'origine

Qu'est-ce qui déclenche un Cloudflare Challenge

Déclencheur Descriptif
IP du centre de données Demande d'hébergeurs connus
En-têtes manquants En-têtes HTTP manquants ou inhabituels
Empreinte digitale TLS L'empreinte digitale JA3/JA4 correspond aux signatures de robots connues
Taux de demande élevé Trop de requêtes provenant de la même IP
Paramétrage du niveau de sécurité Le propriétaire du site fixe le seuil de défi à un niveau élevé
Règles basées sur les pays Règles de blocage ou de contestation géographique
Score du robot Le score du bot ML de Cloudflare est trop faible
Menace connue L'adresse IP apparaît sur les listes de renseignements sur les menaces

Après avoir réussi le défi, le navigateur reçoit :

cf_clearance=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None

Propriétés clés :

  • Durée : 15 minutes à 24 heures (configurable par le propriétaire du site)
  • Portée : Lié au domaine spécifique
  • Liaison : Lié à l'agent utilisateur et à l'adresse IP utilisés lors de la vérification
  • Utilisation : Doit être inclus dans toutes les demandes ultérieures pour éviter une nouvelle contestation

Important : Le cookie cf_clearance est lié à l'User-Agent et à l'adresse IP spécifiques utilisés lors de la vérification. Changer l’un ou l’autre invalidera le cookie.


Défi Cloudflare Challenge contre tourniquet contre JS

Caractéristique Défi FK Tourniquet Défi JS
Tapez Interstitiel pleine page Widget sur la page Contrôle silencieux
L'utilisateur voit Page "Vérification de votre navigateur" Case à cocher ou rien Rien
Bloque l'accès à la page Oui Non En bref
Définit cf_clearance Oui Parfois Oui
Nécessite un proxy pour résoudre Oui Non N/A
Le site utilise Cloudflare CDN Obligatoire Facultatif Obligatoire

Résoudre Cloudflare Challenge avec CaptchaAI

La résolution de Cloudflare Challenge nécessite un proxy car le cookie cf_clearance est lié à l'adresse IP.

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

Noeud.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');
}
# 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}")

Pourquoi un proxy est requis

Le cookie cf_clearance est lié cryptographiquement à :

  1. Adresse IP — La résolution doit être effectuée à partir de la même adresse IP que celle que vous utiliserez.
  2. User-Agent — L'agent utilisateur de résolution doit correspondre à vos demandes
  3. Empreinte digitale TLS — Certaines configurations vérifient également les caractéristiques TLS

Si l'un de ces éléments diffère entre la résolution et vos demandes ultérieures, le cookie n'est pas valide.


FAQ

Combien de temps dure cf_clearance ?

Les propriétaires de sites configurent la durée, généralement de 15 minutes à 24 heures. Après expiration, un nouveau défi doit être résolu.

Puis-je réutiliser cf_clearance sur différentes adresses IP ?

Non. Le cookie est lié à l’adresse IP utilisée lors de la vérification. Changer les adresses IP nécessite une nouvelle solution.

Quelle est la différence entre Cloudflare Challenge et tourniquet ?

Cloudflare Challenge est un interstitiel pleine page qui bloque l'accès à la page. Turnstile est un widget intégré à la page, similaire à reCAPTCHA. Le défi nécessite que le site utilise Cloudflare comme proxy ; Le tourniquet peut être utilisé sur n’importe quel site.

Combien de temps prend la résolution ?

La résolution de Cloudflare Challenge prend 20 à 60 secondes, plus longtemps que Turnstile ou reCAPTCHA en raison de la vérification complète du navigateur.

Que se passe-t-il si la page contient à la fois Cloudflare et reCAPTCHA ?

Résolvez d'abord le Cloudflare Challenge pour accéder à la page, puis résolvez le reCAPTCHA sur la page chargée.


Guides associés

Les commentaires sont désactivés pour cet article.