Cloudflare : résolution du défi
ASTUCE
Créez la tâche avec la méthode createTask et obtenez le résultat avec la méthode getTaskResult.
Note
- Un proxy est nécessaire, veuillez utiliser un proxy statique ou un proxy persistant (Sticky) au lieu d’un proxy rotatif.
 - Prend en charge les userAgent personnalisés, veuillez utiliser le même que celui que vous utilisez actuellement.
 - Si vous ne parvenez pas à obtenir la solution, votre IP pourrait être bloquée, veuillez essayer de changer de proxy.
 - Vous devez utiliser la bibliothèque de requêtes TLS pour interroger le site web cible.
 
Le type de tâche type est le suivant
AntiCloudflareTask
Créer une tâche
Créez la tâche avec la méthode createTask.
Structure de l’objet tâche
| Propriétés | Type | Obligatoire | Description | 
|---|---|---|---|
| type | Chaîne | Obligatoire | AntiCloudflareTask | 
| websiteURL | Chaîne | Obligatoire | L’adresse de la page cible. | 
| proxy | Chaîne | Obligatoire | Votre proxy statique ou proxy persistant (Sticky). En savoir plus sur l’utilisation des proxys | 
| userAgent | Chaîne | Facultatif | Le user-agent que vous avez utilisé pour interroger le site web cible. Seul le userAgent de Chrome est pris en charge | 
| html | Chaîne | Facultatif | La réponse de la requête vers le site web cible, elle contient généralement “Just a moment…” et le code d’état est 403. Certains sites web nécessitent le HTML. | 
Exemple de requête
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiCloudflareTask",
    "websiteURL": "https://www.yourwebsite.com",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
    "html": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title>...",
    "proxy": "ip:port:user:pass"
  }
}Exemple de réponse
{
  "errorId": 0,
  "status": "idle",
  "taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca"
}
 Obtention du résultat
Utilisez la méthode getTaskResult pour obtenir les résultats de reconnaissance
Selon le site web et le proxy, vous obtiendrez les résultats dans un intervalle de 2s à 20s
Exemple de requête
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json{
  "clientKey": "YOUR_API_KEY",
  "taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca"
}Exemple de réponse
{
  "errorId": 0,
  "taskId": "df944101-64ac-468d-bc9f-41baecc3b8ca",
  "status": "ready",
  "errorCode": "",
  "errorDescription": "",
  "solution": {
    "cookies": {
        "cf_clearance": "Bcg6jNLzTVaa3IsFhtDI.e4_LX8p7q7zFYHF7wiHPo...uya1bbdfwBEi3tNNQpc"
    },
    "token": "Bcg6jNLzTVaa3IsFhtDI.e4_LX8p7q7zFYHF7wiHPo...uya1bbdfwBEi3tNNQpc",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36"
  }
}Utiliser les requêtes SDK
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
  "type": "AntiCloudflareTask",
  "websiteURL": "https://www.yourwebsite.com",
  "proxy": "ip:port:user:pass"
})Exemple de code
# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # your api key of capsolver
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": "AntiCloudflareTask",
            "websiteURL": "https://www.yourwebsite.com",
            "proxy": "ip:port:user:pass"
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # delay
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {})
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
token = capsolver()
print(token)