reCAPTCHA v3
e CapMonster Cloud

Solução de captcha, instalação no site e testes.

Preços da solução reCAPTCHA v3

CAPTCHA
Preço (USD)
$ 0.90
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 v3, 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 v3, 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 v3
O que é o Google reCAPTCHA v3
reCAPTCHA v3 é uma proteção invisível do Google que distingue utilizadores reais de bots sem necessidade da caixa de seleção “Não sou um robô”. Um script oculto é executado na página, analisa o comportamento do visitante e devolve uma pontuação de confiança (score) de 0,0 a 1,0. O programador define um limite abaixo do qual pode ser exigida uma verificação adicional ou até o bloqueio, garantindo proteção sem ações extra por parte do utilizador.

Como resolver o reCAPTCHA v3 através do CapMonster Cloud

Ao testar formulários que incluem reCAPTCHA v3, é 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
Reconhecimento do reCAPTCHA v3 com bibliotecas prontas
O serviço CapMonster Cloud fornece bibliotecas prontas para utilização conveniente com as linguagens Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Resolução, inserção do token e envio do formulário
Exemplo em Node.js para o ciclo completo de reconhecimento do captcha na sua página Web. Abordagens possíveis: utilizar pedidos HTTP para obter o HTML e os parâmetros do captcha, enviar a resposta e processar o resultado; ou, com ferramentas de automatização (por exemplo, Playwright), abrir a página, aguardar o carregamento do captcha, enviar os parâmetros (para testes pode enviar tanto dados corretos como incorretos), obter o resultado através do cliente do CapMonster Cloud, inserir o token no formulário e ver o resultado.
const { chromium } = require('playwright');
const { 
  CapMonsterCloudClientFactory, 
  ClientOptions, 
  RecaptchaV3ProxylessRequest 
} = require('@zennolab_com/capmonstercloud-client');

(async () => {
  const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // URL da sua página com o captcha
  const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
  const API_KEY = 'your_capmonster_cloud_api_key'; // Indique a sua chave de API do CapMonster Cloud

  // Criação do cliente CapMonster
  const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

  // Abrir o navegador
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });

  // Configuração da tarefa do reCAPTCHA v3
  const recaptchaRequest = new RecaptchaV3ProxylessRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    minScore: 0.6,
    pageAction: 'myverify', // correspondência com o action na página
  });

  // Resolver o captcha
  const solution = await cmcClient.Solve(recaptchaRequest);
  const token = solution.solution?.gRecaptchaResponse;

  if (!token) {
    console.error('O token está vazio, verifique sitekey e URL');
    await browser.close();
    return;
  }

  console.log('Token obtido:', token);

  // Inserir o token num campo oculto e simular o clique no botão 
  // Substitua pelos seletores necessários
  await page.evaluate((t) => {
    const input = document.querySelector('#v3_token');
    if (input) input.value = t;

    const form = document.querySelector('#v3_form');
    if (form) form.submit();
  }, token);

  console.log('Token inserido e formulário enviado');

  await page.waitForTimeout(5000);
  await browser.close();
})();
Como ligar o reCAPTCHA v3 ao seu site
Para compreender bem como o captcha funciona no seu site, a lógica de validação e como o voltar a ligar ou reconfigurar, recomendamos que estude esta secção. Nela é descrito o processo de ativação da proteção — isto irá ajudá-lo a perceber rapidamente todos os detalhes.

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

2. Registe um novo site e escolha o tipo de captcha — reCAPTCHA v3

HowTo Connect image 1

3. Obtenha duas chaves:

  • Site key — chave pública (utilizada no frontend);
  • Secret key — chave privada (utilizada no servidor para verificação)

HowTo Connect image 2

Pode abrir as definições, onde, por exemplo, é possível indicar domínios adicionais para utilização do reCAPTCHA ou configurar alertas sobre problemas no site ou aumento de tráfego suspeito.

4. Exemplos de código para o lado do cliente

A forma mais simples de utilizar o reCAPTCHA v3 é ligar a API JavaScript e adicionar atributos a um botão.

Ligação à API:

<script src="https://www.google.com/recaptcha/api.js"></script>

Função de callback para o formulário:

<script>
  function onSubmit(token) {
    document.getElementById("form").submit();
  }
</script>

Botão com atributos do reCAPTCHA:

<button class="g-recaptcha" 
        data-sitekey="reCAPTCHA_sitekey" 
        data-callback='onSubmit' 
        data-action='submit'>Submit</button>

Para controlo total, utilize grecaptcha.execute com o parâmetro render:

Ligação à API com a chave:

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>

Chamada programática:

<script>
  function onClick(e) {
    e.preventDefault();
    grecaptcha.ready(function() {
      grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
          // Envie o token para o servidor para verificação
      });
    });
  }
</script>

O token deve ser enviado de imediato para o servidor para verificação.

Notas importantes:

  • Validade do token: o token recebido do reCAPTCHA v3 é válido durante 2 minutos. Certifique-se de que o envia para o servidor dentro desse período.
  • Verificação no servidor: após receber o token no servidor, envie um pedido POST para https://www.google.com/recaptcha/api/siteverify com os parâmetros:
    – secret: a sua chave secreta
    – response: o token recebido do cliente
    – remoteip (opcional): endereço IP do utilizador
  • O servidor da Google irá devolver uma resposta JSON com informações sobre o resultado da verificação.

5. Agora, do lado do servidor, efetue a verificação da resposta

Exemplo em PHPExemplo em PHP
arrow

Notas:

  • Certifique-se de que, no cliente, o token é enviado num campo oculto do formulário com o nome recaptcha-token:
    • <input type="hidden" name="recaptcha-token" id="recaptcha-token">

      • O limite de score pode ser ajustado consoante o nível de rigor desejado (por exemplo, 0,3–0,7).
      • A verificação de action === 'submit' aumenta a segurança, garantindo que o token foi emitido para a ação correta na página.
Background
Possíveis erros e depuração
Bug Icon
Site ou chave incorretos
O captcha não é carregado ou devolve invalid-input-secret.
Bug Icon
Tempo limite de resolução
O servidor não recebeu a resposta a tempo, aumente o tempo de espera.
Bug Icon
Token vazio
Erro ao passar o resultado para a página.
Bug Icon
Resposta success=false
O token expirou, foi reutilizado ou foi adulterado. Para diagnóstico, ative o registo (log) dos pedidos e verifique o campo error-codes na resposta da Google.
Bug Icon
Score baixo (por exemplo, <0.5)
Pode levar à recusa mesmo com success=true, uma vez que a Google avalia a confiança no utilizador com base no score.
Bug Icon
Verifique o action
Para garantir que o token foi emitido para a ação específica na página
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
Armazene a <span class="font-bold">Secret Key</span> apenas no servidor, não a envie para o lado do cliente.
Registe os códigos de erro (<span class="font-bold">error-codes</span>) e o valor de <span class="font-bold">score</span> para compreender os motivos das rejeições.
<span class="font-bold">Verifique o campo action</span> na resposta da Google para garantir que o token foi emitido para a ação correta na página.
Adicione no final 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>, conforme 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 v3, basta identificar o sistema, analisar o seu comportamento e confirmar que a proteção está a funcionar corretamente. No artigo, mostramos como identificar reCAPTCHA v3 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 v3

O CapMonster Cloud fornece bibliotecas cliente oficiais para Python, JavaScript (Node.js) e C#. Estas bibliotecas simplificam a integração do reCAPTCHA v3 e permitem evitar a implementação manual de pedidos HTTP.

Por exemplo, em Node.js pode usar o pacote @zennolab_com/capmonstercloud-client, que permite obter um token e injetá-lo num formulário em apenas algumas linhas de código.

Se não existir uma biblioteca dedicada para a sua linguagem, use a API REST universal (createTask / getTaskResult). Funciona com qualquer cliente HTTP, incluindo curl, requests, axios e outros.

A estrutura completa do pedido está disponível na documentação da API.

O parâmetro minScore aceita valores de 0.1 a 0.9 e indica ao CapMonster Cloud a pontuação de confiança mínima que o token devolvido deve ter. 0.7 é um ponto de partida razoável. Um valor demasiado alto (ex.: 0.9) aumenta a probabilidade de falhas na resolução; um valor demasiado baixo pode devolver tokens com uma pontuação que o limiar do servidor deveria rejeitar de qualquer forma. Ajuste o valor com base nas taxas de rejeição reais no seu ambiente de teste.

Um token recebido do reCAPTCHA v3 é válido durante aproximadamente 2 minutos. O seu pipeline de automação deve enviar o token ao servidor dentro desse prazo; após expirar, o endpoint siteverify do Google devolve success: false. Mantenha o passo de resolução o mais próximo possível do envio do formulário e evite colocar tokens em cache entre pedidos.

Para injetar um token reCAPTCHA v3, encontre o campo de resposta oculto (geralmente um textarea ou input com o ID g-recaptcha-response) e insira o token obtido do serviço de resolução CAPTCHA. Eis como fazê-lo nos três frameworks de automação.

Playwright / Puppeteer (Node.js)

const token = "YOUR_TOKEN";
await page.evaluate((t) => {
  document.getElementById('g-recaptcha-response').value = t;
}, token);
await page.click('#submit-btn');

Selenium (Python)

token = "YOUR_TOKEN"
driver.execute_script(f"document.getElementById('g-recaptcha-response').value = '{token}';")
driver.find_element("id", "submit-btn").click()

Alguns sites usam funções callback para validar o token. Se o formulário não for enviado, encontre o nome da função na consola (___grecaptcha_cfg.clients) e chame-a manualmente:

// Example of calling a callback in Playwright/Puppeteer
await page.evaluate((t) => { window.onSuccessCallback(t); }, token);

Uma resposta success: true do Google significa apenas que o token é válido. O seu backend ainda pode rejeitar o pedido se a pontuação do token estiver abaixo do limiar configurado.

Outro problema comum é uma incompatibilidade de action. O token deve ser verificado com o mesmo valor action usado ao criar a tarefa.

Para diagnosticar o problema:

  • verifique o campo score na resposta siteverify;
  • confirme que o valor action corresponde;
  • inspecione error-codes quando success for false.

Se success for true, o array error-codes costuma estar vazio — score e action são os campos principais a verificar.