ReCaptchaV2: resolvendo reCAPTCHA v2
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
Se você não souber como definir os parâmetros, use a Extensão CapSolver para obter automaticamente os parâmetros necessários.
- Artigo de referência: Como detectar qualquer Captcha e extrair seus parâmetros
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.
- Artigo de referência: Como resolver reCAPTCHA v2, invisible v2, v3, v3 Enterprise ≥0.9 score)
Propriedades | Tipo | Obrigatório | Descrição |
---|---|---|---|
type | String | Obrigatório | ReCaptchaV2TaskProxyLess ReCaptchaV2EnterpriseTask ReCaptchaV2EnterpriseTaskProxyLess |
websiteURL | String | Obrigatório | A URL da página web alvo que carrega o captcha. É melhor enviar a URL completa em vez de apenas o host. |
websiteKey | String | Obrigatório | Chave do site Recaptcha. |
proxy | String | Opcional | Saiba Usando proxies. |
pageAction | String | Opcional | Para ReCaptchaV2, se houver um parâmetro sa no payload do endpoint /anchor , por favor, envie seu valor. |
recaptchaDataSValue | String | Opcional | Para a versão normal do ReCaptchaV2, se houver um parâmetro s no payload do endpoint /anchor , por favor, envie seu valor. |
enterprisePayload | Object | Opcional | Para a versão empresarial do ReCaptchaV2, se houver um parâmetro s no payload do endpoint /anchor , por favor, envie seu valor. |
isInvisible | Bool | Opcional | Passe 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. |
isSession | Bool | Opcional | Modo 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. |
apiDomain | String | Opcional | O 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)