Guide
Tâche (Token)
Cloudflare Turnstile

Cloudflare : Résolution de Turnstile

ASTUCE

Créez la tâche avec la méthode createTask et obtenez le résultat avec la méthode getTaskResult.

DANGER

ℹ️ Le type turnstile ne nécessite pas de proxy, vous utilisez donc simplement AntiTurnstileTaskProxyLess

Le captcha Turnstile est une autre tentative de remplacer reCaptcha. Nous prenons en charge automatiquement les sous-types suivants :

  • turnstile
    • Manuel
    • Non-interactif
    • Invisible

Il n’est pas nécessaire de spécifier les sous-types lors de votre appel. Il n’est pas encore nécessaire de fournir votre propre User-Agent personnalisé, nous ignorerons ce paramètre.

Le type de tâche type est le suivant

  • AntiTurnstileTaskProxyLess

Créer une tâche

Créez la tâche avec createTask.

Lors de l’utilisation de Turnstile, nous devons saisir websiteURL et websiteKey, les autres paramètres sont facultatifs.

Structure de l’objet de la tâche

PropriétésTypeObligatoireDescription
typeStringObligatoireAntiTurnstileTaskProxyLess
websiteURLStringObligatoireL’adresse de la page cible.
websiteKeyStringObligatoireClé du site web Turnstile.
metadataMap<String,String>FacultatifDonnées supplémentaires de Turnstile. Documentation Turnstile
metadata.actionStringFacultatifLa valeur de l’attribut data-action de l’élément Turnstile si elle existe.
metadata.cdataStringFacultatifLa valeur de l’attribut data-cdata de l’élément Turnstile si elle existe.

Exemple de requête

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AntiTurnstileTaskProxyLess",
    "websiteURL": "https://www.yourwebsite.com",
    "websiteKey": "0x4XXXXXXXXXXXXXXXXX",
    "metadata": {
       "action": "login",  //optional
       "cdata": "0000-1111-2222-3333-example-cdata"  //optional
    }
  }
}

Exemple de réponse

{
  "errorId": 0,
  "status": "idle",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"   // record taskId
}
 

Obtention du résultat

Utilisez la méthode getTaskResult pour obtenir les résultats de la reconnaissance

Selon la charge du système, vous obtiendrez les résultats dans un intervalle de 1s à 20s

Exemple de requête

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Exemple de réponse

{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
  "status": "ready",
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "token": "0.mF74FV8wEufAWOdvOak_xFaVy3lqIDel7SwNhw3GgpICSWwTjYfrQB8mRT1dAJJBEoP7N1sESdp6WH9cTS1T0catWLecG3ayNcjwxVtr3hWfS-dmcBGRTx4xYwI64sAVboYGpIyuDBeMIRC3W8dK35v1nDism9xa595Da5VlXKM7hk7pIXg69lodfiftasIkyD_KUGkxBwxrrmz7dBo10-Y5zvro9hD4QKRjOx7DYj9sumnkyYCDx0m4ImDIIkNswfVTWI2V22wlnpHdvMgdtKYgOIIAU28y9gtdrdDkpkH0GHcDyd15sxQGd9VjwhGZA_mpusUKMsEoGgst2rJ3zA.UWfZupqLlGvlATkPo3wdaw.38d55cd0163610d8ce8c42fcff7b62d8981495cc1afacbb2f14e5a23682a4e13",
    "type": "turnstile",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
  }
}

Utilisation de la requête SDK

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
  "type": "AntiTurnstileTaskProxyLess",
  "websiteURL": "https://www.yourwebsite.com",
  "websiteKey": "0x4XXXXXXXXXXXXXXXXX",
  "metadata": {
	 "action": "login"  # optional
  }
})

Exemple de code

# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "0x4XXXXXXXXXXXXXXXXX"  # site key of your target site
site_url = "https://www.yourwebsite.com"  # page url of your target site
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'AntiTurnstileTaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url,
            "metadata": {
                "action": ""  # optional
            }
        }
    }
    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", {}).get('token')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
token = capsolver()
print(token)