Guias
Encontrar os parâmetros do reCAPTCHA
Esta página foi traduzida automaticamente da versão em chinês e pode conter erros. Prevalece a versão em chinês.
Para criar uma tarefa de reCAPTCHA, você precisa do websiteURL (endereço da página onde aparece o captcha) e do websiteKey (chave do site); o v3 também exige pageAction. Ao simular o envio com ferramentas como o Selenium, você também precisa conhecer a função de callback. Tudo isso pode ser encontrado nas ferramentas do desenvolvedor do navegador (F12).
O jeito mais rápido: script de busca automática
Seção intitulada “O jeito mais rápido: script de busca automática”Abra a página onde aparece o captcha, pressione F12 para abrir o Console, cole o script abaixo e execute:
// 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();No resultado, sitekey é o websiteKey, pageurl é o websiteURL, version indica se é v2 ou v3, e function e callback correspondem à função de callback:
[ { "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" }]Um array vazio significa que a página ainda não carregou o reCAPTCHA; execute novamente depois que o captcha aparecer.
websiteKey e websiteURL
Seção intitulada “websiteKey e websiteURL”No painel Network, pesquise por anchor e encontre uma requisição como esta:
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=...&hl=en&size=normal- O valor depois de
k=é owebsiteKey. - Em
websiteURL, informe o endereço completo da página onde aparece o captcha (normalmente é oRefererdessa requisição).
Você também pode pesquisar data-sitekey no código-fonte da página.
pageAction (v3)
Seção intitulada “pageAction (v3)”pageAction é o action que a página passa ao chamar grecaptcha.execute(chave do site, {action: '...'}), e deve ser igual ao da página.
Método 1: pesquisar no código-fonte. No painel Sources das ferramentas do desenvolvedor, clique com o botão direito e escolha “Search in all files”. Para o v3 comum, pesquise .execute(; para o v3 Enterprise, pesquise .enterprise.execute; depois veja o action que vem a seguir:
grecaptcha.ready(function () { grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l', { action: 'login' }).then(function (token) { // ... });});Aqui o pageAction é login.
Método 2: ponto de interrupção. Se o código estiver ofuscado e a pesquisa não encontrar nada, execute debug(grecaptcha.execute) no console (debug(grecaptcha.enterprise.execute) para o Enterprise) e, em seguida, faça na página a ação que dispara a verificação (por exemplo, clicar em login). Quando a execução parar no ponto de interrupção, veja o valor de action em Scope, à direita.
Um site pode usar action diferentes em etapas diferentes (por exemplo, no cadastro, primeiro signup/submit_email e depois signup/success); use o valor da etapa que você precisa passar. Pressione F8 para continuar a execução e ver o próximo action.
Função de callback
Seção intitulada “Função de callback”Ao preencher o token no navegador com Selenium ou ferramentas semelhantes, depois de preencher é preciso chamar a função de callback da página para avisar que a verificação foi concluída:
- No painel Elements, pesquise
data-callback; o valor é o nome da função de callback, por exemplodata-callback="onSuccess". - Ou pesquise
grecaptcha.rendere veja ocallbacknos parâmetros. - Ou consulte
___grecaptcha_cfg.clientsno console, ou use o script de busca automática acima.
Como chamar:
driver.execute_script("onSuccess(arguments[0])", g_recaptcha_response)Algumas páginas não têm função de callback; nesse caso, preencha o token na caixa de texto g-recaptcha-response e envie o formulário diretamente. Veja o fluxo completo em Concluir o reCAPTCHA com um token.