Guia
Tarefa (Token)
Cloudflare Turnstile

Cloudflare: resolvendo Turnstile

DICA

Crie a tarefa com o método createTask e obtenha o resultado com o método getTaskResult.

PERIGO

ℹ️O tipo turnstile não requer proxy, então você apenas usa AntiTurnstileTaskProxyLess

O captcha Turnstile é mais uma tentativa de substituir o reCaptcha. Suportamos automaticamente estes subtipos:

  • turnstile
    • Manualmente
    • Não Interativo
    • Invisível

Não há necessidade de especificar subtipos durante sua chamada. Ainda não é necessário fornecer seu próprio User-Agent personalizado, nós ignoraremos este parâmetro.

O tipo de tarefa type é o seguinte:

  • AntiTurnstileTaskProxyLess

Criar Tarefa

Crie a tarefa com o createTask.

No processo de uso do Turnstile, devemos inserir websiteURL e websiteKey, outros parâmetros são opcionais.

Estrutura do Objeto da Tarefa

PropriedadesTipoNecessárioDescrição
typeStringNecessárioAntiTurnstileTaskProxyLess
websiteURLStringNecessárioO endereço da página alvo.
websiteKeyStringNecessárioChave do site Turnstile.
metadataMap<String,String>OpcionalDados extras do Turnstile. Documentação do Turnstile
metadata.actionStringOpcionalO valor do atributo data-action do elemento Turnstile, se existir.
metadata.cdataStringOpcionalO valor do atributo data-cdata do elemento Turnstile, se existir.

Exemplo de Requisição

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
    }
  }
}

Exemplo de Resposta

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

Obtendo o Resultado

Use o método getTaskResult para obter os resultados de reconhecimento

Dependendo da carga do sistema, você obterá os resultados no intervalo de 1s a 20s

Exemplo de Requisição

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

Exemplo de Resposta

{
  "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"
  }
}

Usar Requisição 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
  }
})

Exemplo de Código

# 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)