Tipos de tarefa
reCAPTCHA v2
Esta página foi traduzida automaticamente da versão em chinês e pode conter erros. Prevalece a versão em chinês.
Uma tarefa do reCAPTCHA v2 retorna um token (gRecaptchaResponse) que você envia ao site de destino para passar na verificação, sem clicar em nenhuma imagem. O tipo mais usado, NoCaptchaTaskProxyless, custa 15 pontos (≈ US$2.25 / 1k) por tarefa e é assíncrono: crie a tarefa com createTask e depois chame getTaskResult a cada 5 segundos para obter o resultado. Tarefas que falham ou expiram têm os pontos reembolsados automaticamente.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint ChinaO corpo da requisição é JSON e a autenticação usa a sua clientKey (copie no painel de yescaptcha.com). Consulte o resultado no mesmo endpoint em que criou a tarefa.
Quando usar
Seção intitulada “Quando usar”- A página mostra a caixa “Não sou um robô” (I’m not a robot): versão com checkbox.
- Não há checkbox e o desafio de imagens só aparece depois de clicar no botão de envio: versão invisível. Adicione
"isInvisible": true. - A página carrega
recaptcha/enterprise.js, ou os endereços das requisições contêmenterprise: reCAPTCHA Enterprise. Use um tipo comEnterpriseno nome.
Se não tiver certeza de qual é o seu caso, veja Identificar o tipo de captcha. Se a taxa de aprovação dos tokens não for boa, experimente o reconhecimento de imagem do reCAPTCHA v2: a API indica quais imagens clicar, e você clica nelas no navegador.
Tipos e preços
Seção intitulada “Tipos e preços”| Tipo de tarefa | Preço | Modo | Observações |
|---|---|---|---|
NoCaptchaTaskProxyless | US$2.25 / 1k; 15 pontos/tarefa · ¥15 / 1k | Assíncrono | |
RecaptchaV2TaskProxyless | US$3.00 / 1k; 20 pontos/tarefa · ¥20 / 1k | Assíncrono | Mesmos parâmetros de NoCaptchaTaskProxyless, mas em outra rota; use qualquer um como alternativa |
NoCaptchaTask | US$2.25 / 1k; 15 pontos/tarefa · ¥15 / 1k | Assíncrono | Proxy próprio |
RecaptchaV2EnterpriseTaskProxyless | US$3.00 / 1k; 20 pontos/tarefa · ¥20 / 1k | Assíncrono | |
RecaptchaV2EnterpriseTask | US$3.00 / 1k; 20 pontos/tarefa · ¥20 / 1k | Assíncrono | Proxy próprio |
Os preços em dólares americanos são estimativas com base em US$1 ≈ ¥6.67; as tarefas são cobradas em pontos.
NoCaptchaTaskProxylesseRecaptchaV2TaskProxylesstêm os mesmos parâmetros, mas usam rotas diferentes. Se um deles não tiver boa taxa de aprovação, experimente o outro.- Os tipos sem
Proxylessno nome (NoCaptchaTask,RecaptchaV2EnterpriseTask) carregam o captcha pelo seu próprio proxy e exigemproxyType,proxyAddress,proxyPorte campos relacionados. Use-os quando o site de destino verifica o IP do visitante.
Parâmetros da requisição
Seção intitulada “Parâmetros da requisição”Campos do objeto task em createTask:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | Tipo de tarefa; veja "Tipos de tarefa e preços" nesta página |
websiteURL | string | Sim | URL completa da página que exibe o captcha. Use o site em que você vê o captcha, não o domínio do fornecedor do captcha |
websiteKey | string | Sim | A chave do site (sitekey), encontrada no código-fonte da página ou nas requisições de rede; normalmente não muda |
isInvisible | boolean | Não | Defina como true para a variante invisível; caso contrário, omita |
proxyType | string | Alguns tipos | Protocolo do proxy: http, https, socks4 ou socks5 (Obrigatório para NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyAddress | string | Alguns tipos | Endereço IP ou nome de host do proxy. Endereços locais ou privados, como 127.0.0.1 ou 192.168.x.x, não funcionam porque nossos servidores não conseguem acessá-los (Obrigatório para NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyPort | integer | Alguns tipos | Porta do proxy (Obrigatório para NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyLogin | string | Não | Nome de usuário do proxy, se o proxy exigir autenticação (somente NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyPassword | string | Não | Senha do proxy, se o proxy exigir autenticação (somente NoCaptchaTask, RecaptchaV2EnterpriseTask) |
userAgent | string | Não | User-Agent do navegador. Se o resultado contiver um userAgent, use esse valor ao enviar o token (somente NoCaptchaTask, RecaptchaV2EnterpriseTask) |
enterprisePayload | object | Não | Parâmetros extras da versão Enterprise, como o valor s do reCAPTCHA Enterprise: {"s": "..."}. Omita se a página não o usar (somente RecaptchaV2EnterpriseTaskProxyless, RecaptchaV2EnterpriseTask) |
Para saber como encontrar websiteURL e websiteKey, veja Encontrar os parâmetros do reCAPTCHA.
Exemplo de requisição
Seção intitulada “Exemplo de requisição”Usando a página de demonstração oficial do Google:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}Código completo que cria a tarefa, consulta a cada 5 segundos e imprime o token. Antes de executar, coloque a sua clientKey na variável de ambiente YESCAPTCHA_CLIENT_KEY:
curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",});console.log(solution.gRecaptchaResponse);Para o reCAPTCHA Enterprise, se a página enviar um valor s ao reCAPTCHA, coloque-o em enterprisePayload:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV2EnterpriseTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "enterprisePayload": { "s": "S_VALUE_FROM_THE_PAGE" } }}Com o seu próprio proxy:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTask", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "proxyType": "http", "proxyAddress": "proxy.example.com", "proxyPort": 8080, "proxyLogin": "user", "proxyPassword": "pass" }}Resultado
Seção intitulada “Resultado”createTask retorna o ID da tarefa:
{ "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"}Use-o para chamar getTaskResult. Enquanto a tarefa ainda está em processamento, a resposta é {"errorId": 0, "status": "processing"}; consulte novamente após 5 segundos. Quando concluída:
{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| Campo | Tipo | Descrição |
|---|---|---|
gRecaptchaResponse | string | O token a ser enviado ao site de destino. Uso único, válido por cerca de 120 segundos; use-o em até 60 segundos |
Uma tarefa é processada por no máximo cerca de 110 segundos; depois disso retorna ERROR_TASK_TIMEOUT e os pontos são reembolsados. Em caso de erro, errorId é 1; trate-o pelo errorCode, conforme Códigos de erro. Para saber como enviar o token, veja Enviar um token do reCAPTCHA.
Perguntas frequentes
Seção intitulada “Perguntas frequentes”Por que os tokens do mesmo site às vezes passam e às vezes não?
Seção intitulada “Por que os tokens do mesmo site às vezes passam e às vezes não?”Quem decide é o site de destino. Ele atribui uma pontuação a cada verificação e define um limite que pode mudar a qualquer momento, por isso a taxa de aprovação varia de site para site e nem todo token passa. Você pode comparar a taxa de aprovação com outro tipo de tarefa do mesmo captcha ou mudar para o reconhecimento de imagem.
Por quanto tempo um token é válido?
Seção intitulada “Por quanto tempo um token é válido?”É de uso único e válido por cerca de 120 segundos; recomendamos enviá-lo em até 60 segundos após recebê-lo. O prazo de validade é definido pelo Google.
Sou cobrado quando a resolução falha?
Seção intitulada “Sou cobrado quando a resolução falha?”Não. Tarefas que retornam ERROR_CAPTCHA_UNSOLVABLE ou que expiram têm os pontos reembolsados automaticamente. Veja Cobrança e reembolso de pontos.