reCAPTCHA v2
e CapMonster Cloud

Resolução de captchas, integração no site e testes ponta a ponta.

Preços da solução reCAPTCHA V2

CAPTCHA
Preço (USD)
$ 0.60
1000 tokens
Herdou um site com captcha ou outra proteção mas sem acesso ao código-fonte? É natural perguntar qual solução está instalada, se está configurada corretamente e como testá-la.

Neste artigo procurámos responder a todas as questões importantes. Para começar a resolver o problema, o primeiro passo é identificar que sistema de proteção está a ser utilizado. Para isso, pode consultar a lista de captchas e sistemas de proteção antibot mais populares, onde encontrará exemplos visuais e sinais principais que ajudam a perceber rapidamente com o que está a lidar.

Se verificar que o seu site utiliza reCAPTCHA V2, o passo seguinte é analisar mais detalhadamente as suas características e o seu funcionamento. Neste mesmo artigo também pode consultar o guia de integração de reCAPTCHA V2, para compreender totalmente como o sistema funciona no seu site. Isto permitirá não só entender a proteção atual, como também planear corretamente a sua manutenção.

O que é o Google reCAPTCHA v2
O que é o Google reCAPTCHA v2
O reCAPTCHA v2 é um sistema de proteção do Google concebido para bloquear spam e outras ações automatizadas que podem prejudicar o site. Ajuda a diferenciar visitantes reais de bots, garantindo segurança e estabilidade ao recurso web.
Background
Exemplos de reCAPTCHA V2
reCAPTCHA v2
reCAPTCHA v2
A captcha clássica com caixa de seleção em que o utilizador confirma que é humano. Por vezes surge uma janela adicional com uma tarefa, como escolher determinadas imagens.
reCAPTCHA v2 Invisible
reCAPTCHA v2 Invisible
Uma versão invisível que faz a validação automaticamente, sem interação do utilizador e sem clicar na caixa.
reCAPTCHA v2 Enterprise
reCAPTCHA v2 Enterprise
Versão Enterprise com controlos e funcionalidades adicionais.

Como resolver o reCAPTCHA v2 com o CapMonster Cloud

Ao testar formulários que incluem reCAPTCHA V2, é comum precisar verificar se a captcha foi integrada e funciona corretamente.

Pode testar manualmente a captcha incorporada no seu site.

  • Abra a página do formulário e confirme que a captcha é apresentada.
  • Tente enviar o formulário sem resolvê-la — o servidor deve devolver um erro.
  • Após uma resolução bem-sucedida, o formulário deve ser enviado sem problemas.

Para resolução automática recorra a ferramentas como o CapMonster Cloud, que recebe os parâmetros da captcha, processa-os nos seus servidores e devolve um token pronto. Basta inseri-lo no formulário para ultrapassar a verificação sem interação do utilizador.

Trabalhar com o CapMonster Cloud através da API normalmente envolve os passos seguintes:

Criação da tarefaCriação da tarefa
arrow
Envio do pedido APIEnvio do pedido API
arrow
Receção do resultadoReceção do resultado
arrow
Aplicação do token na páginaAplicação do token na página
arrow
Resolver reCAPTCHA v2 com bibliotecas prontas
O CapMonster Cloud disponibiliza SDKs para Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Resolver, colocar o token e submeter o formulário
Exemplo em Node.js que cobre todo o ciclo de resolução na sua página. Pode recorrer a pedidos HTTP para obter o HTML e os parâmetros, enviar a resposta e tratar o resultado ou usar ferramentas de automação (por exemplo, Playwright) para abrir a página, aguardar a captcha, enviar parâmetros (válidos ou não), obter o resultado através do cliente CapMonster Cloud, inserir o token no formulário e verificar o resultado.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium


const { chromium } = require('playwright');
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2Request } = require('@zennolab_com/capmonstercloud-client');

(async () => {
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();

  const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high';
  const WEBSITE_KEY = '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd';
  const CMC_API_KEY = 'your_capmonster_cloud_api_key';

  const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CMC_API_KEY }));

  await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });

  // Resolução da captcha
  const solution = await cmc.Solve(new RecaptchaV2Request({ websiteURL: TARGET_URL, websiteKey: WEBSITE_KEY }));
  const token = solution.solution.gRecaptchaResponse;

  // Introduza o token e envie o formulário (substitua pelo seletor pretendido)
  await page.evaluate((t) => {
    const ta = document.querySelector('textarea#g-recaptcha-response');
    if (ta) ta.value = t;
    document.querySelector('form.formular')?.submit();
  }, token);

  console.log('Captcha resolvida e formulário enviado!');
})();
Como ligar o reCAPTCHA v2 ao seu site
Para compreender o funcionamento da captcha, a lógica de validação e como reinstalar ou reconfigurar, consulte esta secção. Ela descreve todo o processo de configuração da proteção.

1. Aceda à página da consola de administração do reCAPTCHA.

2. Registe um novo site.

Escolha o tipo de captcha — reCAPTCHA v2 (checkbox com desafios ou versão invisível).

HowTo Connect image 1

3. Obtenha duas chaves:

  • Site key — chave pública utilizada no front-end;
  • Secret key — chave privada utilizada no servidor.

HowTo Connect image 2

Abra as definições para indicar os domínios autorizados a usar o reCAPTCHA ou o nível de segurança pretendido.

4. Exemplo de código do lado do cliente. Formulário HTML com reCAPTCHA v2 (basta colar no corpo da página):

Formulário HTML com reCAPTCHA v2Formulário HTML com reCAPTCHA v2
arrow

5. Valide a resposta no servidor.

Exemplo em PHPExemplo em PHP
arrow
Background
Possíveis erros e depuração
Bug Icon
Site ou chave inválidos
A captcha não carrega ou devolve invalid-input-secret.
Bug Icon
Tempo limite ao resolver
O servidor não recebeu a resposta a tempo. Aumente o tempo de espera.
Bug Icon
Token vazio
Ocorreu um erro ao enviar o resultado para a página.
Bug Icon
Response success=false
O token expirou, foi reutilizado ou adulterado. Ative o registo de pedidos e verifique o campo error-codes na resposta do Google.
Verificações de robustez
Depois da integração, certifique-se de que o sistema protege efetivamente o site contra ações automatizadas.
Recomendações de segurança e otimização
Guarde a <span class="font-bold">Secret Key</span> apenas no servidor e não a envie para a parte cliente.
Registe os códigos de erro <span class="font-bold">(error-codes)</span> para perceber porque é que determinadas verificações falharam.
Adicione no fundo do formulário ligações para a <span class="font-bold">Política de Privacidade</span> e para os <span class="font-bold">Termos de Utilização da Google</span>, tal como exigido pela licença.
Conclusão

Se herdou um site que já tem um captcha ou outro sistema de proteção instalado e não tem acesso ao código, não há problema! É bastante fácil identificar qual a tecnologia que está a ser utilizada. Para verificar se tudo está a funcionar corretamente, pode usar o serviço de reconhecimento CapMonster Cloud num ambiente de teste isolado, para garantir que o mecanismo de processamento de tokens e a lógica de verificação estão a funcionar corretamente.

No caso de reCAPTCHA V2, basta identificar o sistema, analisar o seu comportamento e confirmar que a proteção está a funcionar corretamente. No artigo, mostramos como identificar reCAPTCHA V2 e onde encontrar instruções para a sua integração ou reconfiguração, para que possa manter a proteção com confiança e controlar o seu funcionamento.

Conclusion

Perguntas frequentes sobre reCAPTCHA v2

Para enviar um pedido de resolução, faça POST com um JSON para https://api.capmonster.cloud/createTask:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV2Task",
    "websiteURL": "[target_page_URL_with_reCAPTCHA]",
    "websiteKey": "[reCAPTCHA_website_key]"
  }
}
  • clientKey — a chave API da sua conta CapMonster Cloud
  • task.type: defina RecaptchaV2Task
  • task.websiteURL: URL da página onde a captcha aparece
  • task.websiteKey: o sitekey público incorporado no HTML da página

Para os próximos passos, consulte a documentação de resolução de reCAPTCHA.

Envie a tarefa com um pedido para https://api.capmonster.cloud/createTask com os parâmetros descritos na pergunta anterior.

Consulte https://api.capmonster.cloud/getTaskResult com o seu clientKey e taskId (devolvido na resposta de createTask).

Quando o campo status for ready, a resposta incluirá a cadeia gRecaptchaResponse — esse é o seu token resolvido.

Envie o token para o site de destino usando um dos seguintes métodos, consoante o tipo de reCAPTCHA v2 e a arquitetura do site:

  • Injeção DOM padrão: para integrações típicas com checkbox, injete o token na área de texto oculta (p. ex., document.getElementById("g-recaptcha-response").innerHTML = token;) usando page.evaluate() do Playwright (ou o equivalente em Puppeteer/Selenium). Depois chame programaticamente form.submit() ou active o botão de envio.
  • Callback JavaScript (reCAPTCHA invisível): se a página usar uma captcha invisível com callback, identifique o nome da função no atributo data-callback e execute-a no seu script de automação, passando o token como argumento (p. ex., onVerifyCallback("TOKEN_STRING")).
  • Pedido HTTP direto: para evitar a renderização no navegador, intercepte o pedido nativo de envio do site e envie o token diretamente para o backend como parte dos dados do formulário (p. ex., g-recaptcha-response=TOKEN_STRING) através do seu cliente HTTP.

O servidor de destino extrai o token do seu envio e valida-o no endpoint siteverify do Google.

O CapMonster Cloud trata ambos os modos com a mesma chamada API. Para o modo invisível, inclua o parâmetro isInvisible: true no pedido createTask. Para confirmar corretamente a solução reCAPTCHA, determine o método que o site usa para enviar o token. Esses métodos estão descritos na pergunta anterior.

A causa mais frequente é um token já utilizado ou expirado — os tokens reCAPTCHA v2 são de uso único e de curta duração, pelo que qualquer atraso ou envio duplicado provocará isto. Comece por registar a resposta HTTP bruta de https://www.google.com/recaptcha/api/siteverify — o array error-codes nessa resposta é o seu principal sinal de diagnóstico.

Outras duas causas comuns: invalid-input-secret significa que foi passada a chave secreta errada no backend, enquanto um campo g-recaptcha-response vazio no servidor geralmente indica que a injeção do token no frontend falhou silenciosamente antes do envio do formulário.

Verifique também se a websiteURL que passou ao CapMonster Cloud corresponde exatamente à origem onde o Google valida o token — uma discrepância produz um erro de vinculação de domínio.

Para utilizadores não técnicos: use a extensão de navegador CapMonster Cloud (Chrome/Firefox). Permite testar o comportamento da captcha diretamente na página e observar o processo de resolução em tempo real. Instale a extensão, adicione a sua chave API e abra a sua página protegida por reCAPTCHA.

Para QA e DevOps: siga um teste simples em três passos:

  1. Envie o formulário sem resolver a captcha — deve devolver success: false.
  2. Envie o formulário com a captcha resolvida — o pedido deve ser bem-sucedido.
  3. Execute testes de carga (k6 ou JMeter, 100+ RPS) e verifique se tokens expirados ou reutilizados são corretamente rejeitados (p. ex., HTTP 403).

Importante: siteverify devolve sempre HTTP 200 — os erros são determinados pelo campo success, e não pelo código de estado HTTP.