Guia
Tarefa (Token)
reCAPTCHA v2

ReCaptchaV2: resolvendo reCAPTCHA v2

DICA

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

Os types de tarefa que suportamos:

  • ReCaptchaV2TaskProxyLess está usando o proxy embutido do servidor.
  • ReCaptchaV2EnterpriseTask este tipo de tarefa requer seus próprios proxies.
  • ReCaptchaV2EnterpriseTaskProxyLess está usando o proxy embutido do servidor.

Criar Tarefa

Crie uma tarefa com o método createTask.

Antes de criar uma tarefa, se você precisar usar tokens em ferramentas de automação como playwright e puppeteer, pode ser necessário encontrar suas funções de callback. Referência:

Estrutura do Objeto da Tarefa

AVISO

Se você não souber como definir os parâmetros, use a Extensão CapSolver para obter automaticamente os parâmetros necessários.


Se você descobrir que o token v2 é inválido, use a Extensão CapSolver para obter a configuração JSON e envie-a ao nosso serviço de atendimento ao cliente para configuração. Após a configuração, a pontuação do token melhorará consideravelmente.

PropriedadesTipoObrigatórioDescrição
typeStringObrigatórioReCaptchaV2TaskProxyLess
ReCaptchaV2EnterpriseTask
ReCaptchaV2EnterpriseTaskProxyLess
websiteURLStringObrigatórioA URL da página web alvo que carrega o captcha. É melhor enviar a URL completa em vez de apenas o host.
websiteKeyStringObrigatórioChave do site Recaptcha.
proxyStringOpcionalSaiba Usando proxies.
pageActionStringOpcionalPara ReCaptchaV2, se houver um parâmetro sa no payload do endpoint /anchor, por favor, envie seu valor.
recaptchaDataSValueStringOpcionalPara a versão normal do ReCaptchaV2, se houver um parâmetro s no payload do endpoint /anchor, por favor, envie seu valor.
enterprisePayloadObjectOpcionalPara a versão empresarial do ReCaptchaV2, se houver um parâmetro s no payload do endpoint /anchor, por favor, envie seu valor.
isInvisibleBoolOpcionalPasse true se não houver uma caixa de seleção “Não sou um robô”, mas o desafio ainda aparecerá, geralmente necessário no modo invisível v2.
isSessionBoolOpcionalModo de sessão, quando ativado, retornará um valor recaptcha-ca-t, que é usado como um cookie. Geralmente aparece no v3.

Nota: Alguns sites exigem um valor recaptcha-ca-e, que geralmente aparece no v2. Se este valor estiver presente, ele será retornado automaticamente sem configurações de parâmetros adicionais.
apiDomainStringOpcionalO nome de domínio para carregar o captcha. Geralmente, este parâmetro não precisa ser passado.
http://www.google.com/
http://www.recaptcha.net/

Exemplo de Requisição

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ReCaptchaV2Task",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "enterprisePayload": {
      "s": "SOME_ADDITIONAL_TOKEN" // Optional
    },
    "isInvisible": false, // Optional
    "pageAction": "submit", // Optional
    "apiDomain": "", // Optional
    "proxy": "http:ip:port:user:pass", // socks5:ip:port:user:pass, Optional
  }
}

Depois de nos enviar a tarefa, você deverá receber um ‘taskId’ na resposta, se for bem-sucedido. Por favor, leia errorCode: lista completa de erros se você não recebeu o ID da tarefa.

Exemplo de Resposta

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Obtendo Resultados

Depois de ter o taskId, você precisa enviar o taskId para recuperar a solução. A estrutura da resposta é explicada em getTaskResult.

Dependendo da carga do sistema, você obterá os resultados dentro do intervalo de 1s a 10s.

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,
    "errorCode": null,
    "errorDescription": null,
    "solution": {
        "userAgent": "xxx", // User-Agent
        "secChUa": "xxx", // Sec-Ch-Ua
        "createTime": 1671615324290, // The creation time of the token
        "gRecaptchaResponse": "3AHJ......", // token
        "recaptcha-ca-t": "AbEM......", // Some v3 websites have session mode. After enabling isSession, this parameter will be returned and used as a cookie.
        "recaptcha-ca-e": "Abp_......" // Some v2 websites have this parameter, which is used as a cookie. If there is such a value, it will be automatically returned.
    },
    "status": "ready"
}

Usar Requisição SDK

#pip install --upgrade capsolver
#export CAPSOLVER_API_KEY='...'
 
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteURL": "https://www.google.com/recaptcha/api2/demo",
            "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
          })

Código de Exemplo

# pip install requests
import requests
import time
 
# TODO: set your config
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo"  # page url of your target site
 
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    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('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
 
token = capsolver()
print(token)