Solicite um token reCAPTCHA Enterprise com cURL

Por solvethree4 min de leitura

Crie uma tarefa com o nome de host do site, a ação e o proxy. Se ela retornar pending ou solving, consulte periodicamente o ID da tarefa retornado. Leia o token em solution.token apenas quando o status for ready.

Nesta página

Prepare o site, a chave e o proxy

  • Tenha cURL e jq disponíveis no shell.
  • Defina SOLVETHREE_API_KEY com a chave de API do seu workspace. Execute estes comandos no servidor; mantenha a chave fora do código do navegador.
  • Defina SOLVETHREE_PROXY com a URL do proxy que pretende usar para resolver e enviar o token.
  • Configure no console um perfil de site reCAPTCHA ativo para seu workspace. Substitua accounts.example.com e login no exemplo pelo seu nome de host e sua ação.

Enviar um nome de host e uma ação não cria um perfil de site. O perfil já deve estar ativo antes de você solicitar uma resolução.

Crie a tarefa com uma espera explícita

cURL + jq · criar uma tarefa
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
  --arg proxy "$SOLVETHREE_PROXY" \
  --arg requestId "login-$(date +%s)-$$" \
  '{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
  'https://api.solvethree.com/v1/tasks?waitMs=15000' \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @-

O corpo JSON fornece site, action e um único proxy. Exatamente um dos campos proxy ou proxyCandidates é obrigatório. Não adicione type nem url; omitir recaptchaType seleciona enterprise-v3.

O parâmetro de consulta waitMs=15000 pede que a solicitação de criação espere até 15 segundos. Ele deve ficar na URL, não no corpo JSON. O tempo limite do cURL é de 30 segundos, deixando uma margem além dessa espera no servidor para a sobrecarga de rede. A tarefa ainda pode estar em um estado não terminal quando a resposta chegar.

Leia a resposta e consulte as tarefas não concluídas

Verifique se há um erro HTTP antes de interpretar o corpo como uma resposta de tarefa. Os dois comandos usam --fail-with-body; trate uma solicitação HTTP com falha separadamente de uma tarefa cujo status seja failed.

Uma resposta pronta tem este formato. Os valores abaixo são ilustrativos, não um token que você pode enviar.

Exemplo de resposta pronta · credenciais fictícias
{
  "id": "example-task",
  "status": "ready",
  "solution": {
    "token": "EXAMPLE_TOKEN",
    "userAgent": "EXAMPLE_USER_AGENT",
    "secChUa": "EXAMPLE_CLIENT_HINTS"
  }
}
O que fazer com o status da tarefa retornado
O que fazer com o status da tarefa retornado
StatusPróxima ação
pending ou solvingGuarde o id retornado e consulte a mesma tarefa. Ainda não há uma solução utilizável; não crie uma tarefa substituta.
readyPare de consultar e leia solution.token, solution.userAgent e solution.secChUa.
failedPare de consultar e inspecione errorCode e error. Resoluções com falha são reembolsadas. Corrija a causa antes de iniciar outra tarefa.

Para uma resposta em estado não terminal, defina TASK_ID no seu ambiente com o id retornado e, em seguida, consulte a tarefa:

API de tarefas · consultar uma tarefa existente
curl --fail-with-body --max-time 30 \
  "https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY"

Este GET espera até 15 segundos por um resultado, com um tempo limite HTTP de 30 segundos. Sem waitMs, GET retorna sem esperar. Repita o GET apenas enquanto o status for pending ou solving e defina um prazo total no código que faz as chamadas para que o loop de consultas não seja executado indefinidamente.

Se a tarefa falhar, use os detalhes do erro em vez de presumir um problema de saldo. Por exemplo, site-unreachable exige verificar se o destino está acessível, não reenviar cegamente os mesmos dados de entrada.

Envie o token

Use solution.token na requisição ao aplicativo de destino. O id da tarefa serve apenas para consultar a tarefa; ele não é o token do CAPTCHA. O local do token depende do formulário ou da API de destino, portanto não existe um comando universal para enviá-lo.

Use os valores retornados de solution.userAgent e solution.secChUa, junto com o proxy bem-sucedido, ao enviar o token. No exemplo acima com um único proxy, use o mesmo SOLVETHREE_PROXY. Não misture uma identidade de navegador ou URL de destino sem relação com a resolução.

ready significa que o solvethree gerou uma solução. Verifique separadamente a resposta do aplicativo de destino para determinar se ele aceitou sua requisição.

Outras perguntas

Isso é o mesmo que a API siteverify do Google?

Não. O siteverify do Google verifica um token que já existe e exige o segredo de verificação do proprietário do site. A API do solvethree gera uma solução usando a chave de API do seu espaço de trabalho. Não coloque um segredo de verificação do Google na requisição da tarefa.

Execute sua primeira tarefa.

Comece com $5 em créditos no espaço de trabalho.

Criar um espaço de trabalho
Solicite um token reCAPTCHA Enterprise com cURL · solvethree