Solicite um token reCAPTCHA Enterprise com cURL
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_KEYcom a chave de API do seu workspace. Execute estes comandos no servidor; mantenha a chave fora do código do navegador. - Defina
SOLVETHREE_PROXYcom 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.comeloginno 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
# 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.
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| Status | Próxima ação |
|---|---|
| pending ou solving | Guarde o id retornado e consulte a mesma tarefa. Ainda não há uma solução utilizável; não crie uma tarefa substituta. |
| ready | Pare de consultar e leia solution.token, solution.userAgent e solution.secChUa. |
| failed | Pare 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:
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.
Fontes e referência da API
Execute sua primeira tarefa.
Comece com $5 em créditos no espaço de trabalho.