Pular para o conteúdo
StatusPainel

Guias

Identificar o tipo de captcha

Esta página foi traduzida automaticamente da versão em chinês e pode conter erros. Prevalece a versão em chinês.

O primeiro passo para escolher o tipo de tarefa certo é reconhecer o captcha. A forma mais confiável é abrir as ferramentas de desenvolvedor do navegador (F12) e ver, no painel Network (Rede), qual script de captcha a página carrega; também dá para identificar pela aparência.

Como cada captcha aparece na página (ilustrações animadas, não capturas de tela); clique em um cartão para abrir a página do tipo de tarefa. Se a aparência não for suficiente, confirme com a referência rápida e o painel Network abaixo.

O que você vê O que é Tipo de tarefa
Uma caixa de seleção “Não sou um robô” / “I’m not a robot” reCAPTCHA v2 reCAPTCHA v2
Sem caixa de seleção; o desafio de imagens aparece só depois de clicar em enviar; um pequeno selo do reCAPTCHA no canto inferior direito reCAPTCHA v2 invisível (ou v3) Veja “Versões do reCAPTCHA” abaixo
Nenhuma interação; só o selo do reCAPTCHA no canto inferior direito reCAPTCHA v3 reCAPTCHA v3
Uma caixa de seleção “Sou humano”; desafios de imagens com a marca hCaptcha hCaptcha hCaptcha
Uma caixa de verificação do Cloudflare dentro de um formulário; a página não muda depois de marcar Cloudflare Turnstile Turnstile
A página inteira mostra “Aguarde… / Verificando sua conexão” e redireciona sozinha Página de desafio do Cloudflare Página de desafio do Cloudflare
Quebra-cabeças ou desafios de imagens da Arkose Labs (como “escolha a imagem virada para o lado certo”) FunCaptcha Reconhecimento de imagem do FunCaptcha
Uma imagem com letras e números distorcidos Captcha de caracteres Imagem para texto

Procure api.js ou enterprise.js no painel Network:

Script carregado Versão
recaptcha/api.js, sem o parâmetro render ou com render=explicit v2 padrão
Igual ao anterior, e a URL da requisição anchor contém size=invisible v2 invisível: adicione "isInvisible": true à tarefa
recaptcha/api.js?render=CHAVE_DO_SITE (render diferente de explicit) v3 padrão
recaptcha/enterprise.js, sem o parâmetro render ou com render=explicit v2 Enterprise
recaptcha/enterprise.js?render=CHAVE_DO_SITE v3 Enterprise

Exemplos:

https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit → v2
https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696 → v3
https://www.google.com/recaptcha/enterprise.js?render=explicit → v2 Enterprise

A v2 invisível às vezes só passa com o tipo da v3; teste os dois.

Você também pode executar o código abaixo no Console do navegador. Ele lista todos os reCAPTCHAs da página com versão, chave do site, URL da página e função de callback:

find-recaptcha-clients.js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
if (typeof ___grecaptcha_cfg === 'undefined') return [];
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(
([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
);
if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
if (found) {
const [sublevelKey, sublevel] = found;
data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
findRecaptchaClients();

Exemplo de resultado:

[
{
"id": "0",
"version": "V2",
"sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"function": "onSuccess",
"callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
"pageurl": "https://www.google.com/recaptcha/api2/demo"
}
]

As páginas de demonstração oficiais do Google servem para comparação: v2 padrão https://www.google.com/recaptcha/api2/demo, v2 invisível https://www.google.com/recaptcha/api2/demo?invisible=true.

Os dois vêm do Cloudflare, mas não são a mesma coisa:

  • Turnstile é uma caixa de verificação embutida no formulário da página. Concluída a verificação, aparece um sinal de marcado e a própria página não muda. A página carrega challenges.cloudflare.com/turnstile/v0/api.js. Use Turnstile.
  • A página de desafio do Cloudflare substitui a página inteira pela tela de verificação do Cloudflare, que mostra “Aguarde…” e “xx.com precisa verificar a segurança da sua conexão antes de continuar”; ela também pode conter uma caixa de verificação. Depois de passar, redireciona para a página real. O código-fonte contém __cf_chl_rt_tk ou cdn-cgi/challenge-platform. Use Página de desafio do Cloudflare.

Se uma requisição feita por programa recebe 403 com “Just a moment…”, mas o navegador abre a página normalmente, provavelmente só a impressão digital TLS está sendo bloqueada. Use uma biblioteca que imite a impressão digital TLS de um navegador (como curl_cffi); isso resolve a requisição e não é preciso passar pelo desafio.