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
- Demande interceptée — Le proxy inverse de Cloudflare évalue la requête entrante
- Évaluation des risques — La réputation IP, les en-têtes de requête, l'empreinte digitale TLS et le comportement sont analysés
- Défi servi — En cas de suspicion, une page de défi remplace la réponse prévue
- Vérification du navigateur : les défis JavaScript s'exécutent dans le navigateur
- Cookie défini — En cas de succès, le cookie
cf_clearanceest défini avec un TTL configurable - 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 |
Le cookie cf_clearance
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');
}
Utilisation du cookie cf_clearance
# 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 à :
- Adresse IP — La résolution doit être effectuée à partir de la même adresse IP que celle que vous utiliserez.
- User-Agent — L'agent utilisateur de résolution doit correspondre à vos demandes
- 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
- Comment résoudre Cloudflare Challenge à l'aide de l'API
- Erreurs et correctifs Cloudflare Challenge
- Comment fonctionne Cloudflare Turnstile
- Comment résoudre Cloudflare Turnstile à l'aide de l'API