Migre uma integração reCAPTCHA do 2Captcha para a solvethree
Não se trata apenas de uma mudança de endpoint. Substitua o envelope clientKey/task por uma requisição sem aninhamento autenticada por uma chave Bearer, configure o site de destino no solvethree e forneça um proxy. Mantenha os IDs de tarefas existentes do 2Captcha separados das novas tarefas do solvethree.
Nesta página
Verifique a tarefa que você está migrando
Esta migração abrange reCAPTCHA v3 Enterprise pela API v2 do 2Captcha. Ela não descreve a API legada in.php/res.php. Além disso, a versão da API do 2Captcha não é a versão do CAPTCHA: o solvethree não oferece suporte a reCAPTCHA v2.
A requisição inicial usa o envelope documentado em createTask do 2Captcha: credenciais fora de um objeto de tarefa específico do provedor.
{
"clientKey": "TWO_CAPTCHA_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://accounts.example.com/login",
"websiteKey": "PUBLIC_SITE_KEY",
"minScore": 0.7,
"pageAction": "login",
"isEnterprise": true
}
}Não leve esse objeto para a nova API sem alterações. Em particular, o tipo de tarefa sem proxy e minScore não têm lugar na requisição do solvethree abaixo.
Configure o site e substitua a requisição
Primeiro, configure o site de destino no console da solvethree. Seu workspace precisa de um perfil de site ativo antes de poder resolver solicitações para esse hostname. Enviar um hostname e uma ação não cria um perfil.
Crie novas tarefas com POST /v1/tasks em https://api.solvethree.com, usando Authorization: Bearer com a chave de API do seu workspace. Mantenha essa chave no servidor. O contrato de criação de tarefas usa um corpo JSON plano, em vez de um objeto task aninhado.
| Entrada da API v2 do 2Captcha | Equivalente na solvethree |
|---|---|
| clientKey | Chave de API do workspace no cabeçalho Authorization, não no corpo JSON. |
| Objeto contêiner task | Remova-o; envie os campos da tarefa no nível superior. |
| type: RecaptchaV3TaskProxyless | Omita type. Forneça exatamente um dos campos: proxy ou proxyCandidates. |
| websiteURL | Use site apenas com o hostname: accounts.example.com. Não envie url. |
| websiteKey | Configure o perfil do site de destino no console, em vez de copiar esse campo para a tarefa. |
| pageAction | Use action com o valor de ação do destino, como login. |
| isEnterprise | Omita-o; o valor padrão de recaptchaType é enterprise-v3. |
| minScore | Omita-o; não o copie para a requisição à solvethree. |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}Substitua o hostname, a ação e o proxy do exemplo pelos valores do seu destino. Escolha requestId antes de enviar a requisição e guarde-o para recuperação em caso de timeout; use um novo valor para cada nova tarefa lógica.
O exemplo usa um proxy. Como alternativa, proxyCandidates aceita no máximo doze URLs de proxy HTTP ou HTTPS distintas, sem caminhos, consultas ou fragmentos. Envie um campo ou o outro, nunca ambos. Os candidatos permitem que o serviço tente saídas alternativas; eles não garantem um proxy funcional.
Substitua o polling e o tratamento de timeouts
Mantenha as tarefas do 2Captcha em andamento no fluxo getTaskResult dele, usando suas credenciais, IDs de tarefa e política de polling documentada. Um ID de tarefa de outro serviço não é um identificador de tarefa da solvethree.
- 1.
Trate a resposta de criação
Verifique se a resposta HTTP indica sucesso antes de ler um payload de sucesso. A criação de reCAPTCHA espera até 15 segundos por padrão, mas pode retornar uma tarefa em estado não terminal. Se ela já estiver em ready, use a solução sem iniciar um loop de polling.
- 2.
Faça polling apenas de tarefas não concluídas
Consulte a tarefa da solvethree com GET /v1/tasks/:id. Substitua a antiga verificação de processing por pending e solving; ambos indicam que a tarefa não foi concluída. Apenas ready contém uma solução utilizável.
- 3.
Defina a espera na URL
O polling com GET não espera por padrão. Para long polling, defina o parâmetro de consulta waitMs na URL como no máximo 15000, não como um campo JSON. No timeout do seu cliente HTTP, inclua a espera solicitada mais o tempo adicional de rede.
- 4.
Pare ao receber failed
Leia errorCode e error e pare de fazer polling dessa tarefa. Resoluções com falha são reembolsadas. Um erro como site-unreachable precisa ser investigado; não presuma que toda falha seja um problema de créditos nem continue reenviando entradas inválidas sem alterações.
Um timeout de conexão não comprova que a criação falhou. Se você recebeu o ID da tarefa, consulte essa tarefa. Se não recebeu, repita a mesma requisição com o mesmo requestId para recuperar a tarefa existente, em vez de criar outra resolução. Alterar os dados de entrada da tarefa e reutilizar esse requestId causa um conflito.
Mantenha os erros HTTP separados das falhas terminais de tarefas no seu adaptador. O contrato de polling e o tratamento de falhas descrevem esses dois caminhos; não reutilize o parser de payloads de erro do 2Captcha.
Atualize a extração e o envio do token
Substitua a busca de token do adaptador antigo por solution.token de uma tarefa da solvethree em ready. Envie esse token onde o destino espera o valor de reCAPTCHA — não o ID da tarefa nem o objeto solution inteiro.
Use a identidade de navegador retornada em userAgent e secChUa, junto com o proxy que funcionou, ao enviar o token. Se você forneceu proxyCandidates, use o proxy que funcionou, em vez de escolher outro candidato para o envio.
Uma tarefa em ready significa que uma solução foi gerada, não que o site aceitou a requisição da sua aplicação. Se o destino a rejeitar, inspecione o token enviado, a ação, a URL de destino, o proxy e a identidade do navegador antes de pagar por outra resolução.
Fontes e referência da API
Execute sua primeira tarefa.
Comece com $5 em créditos no espaço de trabalho.