Cloudflare : Résolution de Turnstile
Créez la tâche avec la méthode createTask et obtenez le résultat avec la méthode getTaskResult.
ℹ️ 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és | Type | Obligatoire | Description |
---|---|---|---|
type | String | Obligatoire | AntiTurnstileTaskProxyLess |
websiteURL | String | Obligatoire | L’adresse de la page cible. |
websiteKey | String | Obligatoire | Clé du site web Turnstile. |
metadata | Map<String,String> | Facultatif | Données supplémentaires de Turnstile. Documentation Turnstile |
metadata.action | String | Facultatif | La valeur de l’attribut data-action de l’élément Turnstile si elle existe. |
metadata.cdata | String | Facultatif | La 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)