Como implementar CAPTCHA em HTML: um guia simples para desenvolvedores
Adicionar um CAPTCHA ao seu formulário HTML é uma das primeiras linhas de defesa mais eficazes contra bots, envios de spam e abuso automatizado. Seja para proteger uma página de login, um formulário de contato ou um fluxo de checkout, o CAPTCHA certo — e a implementação correta — pode fazer uma diferença significativa.
Este guia mostra, passo a passo, como adicionar código de captcha html ao seu projeto, cobrindo quatro opções populares: reCAPTCHA v2 (Checkbox e Invisible), Cloudflare Turnstile, Prosopo Procaptcha e Altcha. Para cada uma delas, você verá uma explicação completa, exemplos funcionais de código HTML e orientações sobre verificação no backend, testes locais e solução de problemas.
Comece agora e automatize sua solução reCAPTCHA v2
Toda solução de CAPTCHA normalmente funciona em torno do mesmo conceito central: você registra seu site com um provedor, recebe um par de captcha key (uma site key pública e uma secret key privada) e usa essas chaves para incorporar o widget e verificar as respostas.
Veja onde registrar cada provedor antes de escrever uma única linha de HTML:
Durante o registro, será solicitado que você informe seu nome de domínio. Para desenvolvimento local, adicione localhost à lista de domínios permitidos (mais sobre isso na seção de testes).
reCAPTCHA v2 Checkbox — passo a passo
A caixa de seleção clássica ("I'm not a robot") é o widget de captcha html mais amplamente reconhecido. Ela exibe uma caixa de seleção visível e, quando necessário, um desafio visual com imagens.
Etapa 1: registre-se e obtenha sua captcha key
Acesse google.com/recaptcha/admin e selecione reCAPTCHA v2 → "I'm not a robot" Checkbox. Adicione seu domínio (incluindo localhost para testes locais) e salve. Você receberá uma Site Key e uma Secret Key.
Etapa 2: adicione o script da API do reCAPTCHA
Coloque a seguinte tag <script> no <head> do seu HTML ou antes da tag de fechamento </body>:
Quando o usuário conclui o desafio e envia o formulário, o script do Google adiciona automaticamente um campo oculto chamado g-recaptcha-response aos dados do formulário. Seu backend lê esse token e o envia para a API de verificação do Google junto com sua secret key.
reCAPTCHA v2 Invisible — passo a passo
O Invisible reCAPTCHA remove totalmente a caixa de seleção visível. Em vez disso, ele executa uma análise de risco em segundo plano e só aciona um desafio visual se um comportamento suspeito for detectado — resultando em uma UX mais fluida para a maioria dos usuários.
Etapa 1: registre-se com o tipo correto
No console de administração do Google reCAPTCHA, selecione reCAPTCHA v2 → Invisible reCAPTCHA badge. Isso gera uma site key diferente da variante com checkbox — não reutilize chaves entre tipos diferentes.
Etapa 2: carregue o script da API
Use a mesma tag de script da variante com checkbox:
Em vez de usar uma <div> separada, você aplica os atributos do CAPTCHA diretamente ao <button> de envio, especificando um callback em JavaScript para ser executado quando o desafio for concluído.
Defina uma função de callback que envie o formulário de forma programática após a verificação ser aprovada.
Quando o botão é clicado, o reCAPTCHA executa sua análise em segundo plano, chama onSubmit(token) com um token de resposta, e seu callback envia o formulário. O token é incluído como g-recaptcha-response no corpo do POST.
Cloudflare Turnstile — passo a passo
O Cloudflare Turnstile é uma alternativa de CAPTCHA com foco em privacidade que não rastreia usuários, não define cookies de perfilamento e não exibe quebra-cabeças com imagens. Ele oferece três modos de widget:
Managed: o widget decide se deve mostrar um desafio com base em sinais do navegador)
Non-interactive: aprova sem exigir interação do usuário para a maioria dos visitantes
Invisible: executa totalmente em segundo plano
Etapa 1: crie um widget no Painel da Cloudflare
Faça login na sua conta Cloudflare, navegue até Segurança de aplicativos → Turnstile, clique em Add widget, insira seu domínio e selecione um tipo de widget. Copie a Site Key e anote sua Secret Key.
O Turnstile injeta automaticamente um input oculto chamado cf-turnstile-response no formulário. Nenhum JavaScript extra é necessário para o envio padrão do formulário.
O modo Managed do Turnstile determinará — com base em sinais do navegador — se deve mostrar uma interação ou aprovar silenciosamente. Para testes, a Cloudflare fornece dummy site keys especiais (abordadas na seção de testes).
Prosopo Procaptcha — passo a passo
O Prosopo Procaptcha é um CAPTCHA nativo de Web3, com foco em privacidade, projetado como um substituto direto e plug-and-play para o reCAPTCHA. Ele não depende da infraestrutura do Google e foi criado tendo a privacidade do usuário como princípio central de design.
Etapa 1: obtenha sua captcha key da Prosopo
Registre-se em prosopo.io e crie um novo site para receber sua Site Key.
No envio do formulário, o Procaptcha injeta um campo oculto chamado procaptcha-response no seu formulário. Envie esse token para a API de verificação da Prosopo junto com sua secret key no backend.
Altcha — passo a passo
O Altcha é um CAPTCHA totalmente open source e auto-hospedado que usa um mecanismo de proof-of-work — o navegador do usuário executa uma pequena tarefa computacional em vez de resolver um quebra-cabeça visual. Ele não coleta dados do usuário, não define cookies de rastreamento e está totalmente em conformidade com o GDPR. Como é auto-hospedado, não há dependência de terceiros.
Etapa 1: carregue o widget do Altcha
Não é necessário registro. Carregue o script do elemento personalizado:
O Altcha exige um endpoint no servidor que gere um challenge criptográfico (usando uma HMAC secret key definida por você). Esse endpoint é chamado pelo widget antes do envio para buscar um challenge novo. A biblioteca de servidor do Altcha no seu framework cuida disso. A URL do endpoint é passada ao widget por meio do atributo challengeurl.
Depois que o proof-of-work é concluído, o Altcha preenche um input oculto chamado altcha com uma carga codificada em base64. Seu backend verifica essa carga com base no seu segredo HMAC — nenhuma chamada de API externa é necessária.
Comece agora e automatize sua solução reCAPTCHA v2
Independentemente do CAPTCHA que você usar, o padrão de verificação no lado do servidor é o mesmo:
Extraia o token do corpo da requisição POST usando o nome do campo específico de cada provedor (g-recaptcha-response, cf-turnstile-response, procaptcha-response ou altcha).
Envie o token para o endpoint de verificação do provedor — uma requisição POST que inclui sua secret key e o token do usuário (e, opcionalmente, o endereço IP do usuário no caso do reCAPTCHA).
Faça o parse da resposta JSON — os provedores retornam um indicador de sucesso/falha na resposta. reCAPTCHA e Turnstile usam um campo success: true/false; a Prosopo usa verified: true/false; o Altcha é verificado localmente com base no seu segredo HMAC. Alguns provedores também retornam hostname e timestamp do challenge.
Aceite ou rejeite o envio — se a verificação falhar, retorne um erro ao usuário e não processe os dados do formulário. Se passar, prossiga normalmente.
Altcha: Local — verificado com base no seu próprio segredo HMAC, sem necessidade de chamada externa
⚠️ Nunca use sua site key para verificação no backend — sempre use a secret key. Confundir as duas é um dos erros de integração mais comuns.
Testando seu CAPTCHA HTML em um servidor local
Testar CAPTCHA localmente exige alguns passos extras, já que a maioria dos provedores valida nomes de domínio.
reCAPTCHA v2: Adicione localhost à lista de domínios permitidos no console de administração do Google reCAPTCHA. O widget será renderizado e funcionará normalmente em http://localhost.
Cloudflare Turnstile: Use as test site keys oficiais da Cloudflare. A chave 1x00000000000000000000AA sempre produz um resultado de aprovação; a 2x00000000000000000000AB sempre falha. Você também pode combinar a site key de aprovação (1x00000000000000000000AA) com a secret key 3x0000000000000000000000000000000AA no backend para simular um erro "timeout-or-duplicate". Troque todas as chaves de teste pelas suas chaves reais de produção antes de fazer o deploy.
Prosopo Procaptcha:localhost é compatível por padrão durante o desenvolvimento — nenhuma configuração extra é necessária.
Altcha: Como ele é auto-hospedado, localhost funciona nativamente. Apenas certifique-se de que seu endpoint de challenge também esteja rodando localmente.
Use o DevTools → aba Network do navegador para confirmar que o script da API do CAPTCHA foi carregado (HTTP 200) e que o POST do formulário inclui o campo de token esperado.
Solução de problemas comuns
O widget CAPTCHA não é renderizado
Verifique novamente se a site key corresponde ao tipo de CAPTCHA que você registrou (chaves de checkbox não funcionam para o modo invisible, e vice-versa).
Confirme se a tag <script> da API está presente e é carregada sem erro 404 ou CORS no DevTools.
Garanta que o domínio no seu registro corresponda ao domínio de onde você está servindo o conteúdo, inclusive com ou sem www..
O token está ausente no POST do formulário
O input oculto só é injetado depois que o challenge é concluído. Se o usuário enviar antes de ele estar pronto, nenhum token será enviado.
Para o Invisible reCAPTCHA, certifique-se de que o callback onSubmit acione form.submit()depois que o token estiver disponível, e não antes.
Para o Altcha, confirme que seu endpoint de challenge está acessível e retornando um challenge válido.
A verificação no backend retorna uma resposta de falha
Verifique se você está enviando a secret key (e não a site key) para o endpoint de verificação.
Os tokens normalmente são de uso único — se você estiver tentando novamente o mesmo POST nos testes, gere um token novo a cada vez.
Verifique se há dessincronização de relógio: alguns provedores (especialmente o Altcha) rejeitam challenges antigos demais.
Erro de "Invalid domain" ou incompatibilidade de sitekey
Em localhost, certifique-se de que localhost (e não 127.0.0.1) está na sua lista de domínios permitidos.
Para o Turnstile, mude para a test site key durante o desenvolvimento local.
Widget oculto ou sobreposto a outros elementos
Os widgets CAPTCHA são renderizados em iframes com z-index fixo. Se outro elemento (um modal, cabeçalho fixo etc.) tiver um z-index maior, ele poderá encobrir o widget.
Defina um z-index explícito no contêiner pai ou verifique se há overflow: hidden em elementos ancestrais cortando o iframe.
Nota de acessibilidade: Todos os quatro provedores deste guia oferecem alternativas acessíveis. reCAPTCHA e Turnstile fornecem desafios de áudio; Prosopo e Altcha são projetados para minimizar o incômodo ao usuário por padrão, reduzindo totalmente a dependência de quebra-cabeças visuais.
Automatizando e testando a resolução de CAPTCHA com CapMonster Cloud
Quando sua implementação de CAPTCHA estiver em produção, talvez você precise testá-la programaticamente — para pipelines de QA, testes de integração ou monitoramento automatizado. Resolver CAPTCHAs manualmente toda vez que um teste roda não é viável em escala.
CapMonster Cloud é um serviço automatizado de resolução de CAPTCHA com tecnologia de IA que oferece suporte aos quatro tipos de CAPTCHA abordados neste guia: reCAPTCHA v2 (checkbox e invisible), Cloudflare Turnstile, Prosopo Procaptcha e Altcha. Ele funciona expondo uma API simples: você envia uma tarefa com a URL da página de destino e a site key, e o serviço retorna um token resolvido pronto para ser injetado no seu formulário.
Como ele se encaixa no fluxo de trabalho de um desenvolvedor:
Testes de integração automatizados: execute testes end-to-end em formulários protegidos por CAPTCHA em pipelines de CI/CD sem interação manual.
Verificação de QA: confirme que seu backend valida e rejeita tokens corretamente em diferentes condições.
Pipelines de coleta de dados em que a interação com páginas protegidas por CAPTCHA faz parte de um fluxo autorizado.
O CapMonster Cloud é compatível com a interface de API amplamente usada, o que significa que ele se integra a muitos frameworks de automação existentes com configuração mínima. Você envia uma tarefa contendo a URL da página e a site key, consulta o resultado e recebe o token — que então injeta como o valor apropriado de campo oculto no formulário.
Conclusão
Implementar uma solução de captcha html não exige infraestrutura complexa — apenas uma tag de script, um elemento de widget, o par correto de captcha key e uma verificação de token no lado do servidor. Cada opção deste guia tem seus próprios pontos fortes: o reCAPTCHA v2 é testado em batalha e amplamente confiável; o Turnstile minimiza o incômodo ao usuário e é amigável à privacidade; a Prosopo oferece uma alternativa nativa de Web3 sem dependência do Google; e o Altcha oferece controle total com uma infraestrutura auto-hospedada e open source.
Pronto para começar? Escolha o CAPTCHA que melhor se adapta às suas exigências de privacidade, UX e infraestrutura, registre sua site key e use os exemplos de código acima para adicioná-lo ao seu formulário em minutos. Se você precisar automatizar testes ou QA nos seus formulários protegidos, CapMonster Cloud oferece suporte aos quatro provedores e se integra diretamente aos seus pipelines existentes.
NB: Por favor, observe que o produto é destinado à automação de testes exclusivamente em seus próprios sites e em recursos para os quais você possui autorização legal de acesso.
Web scraping em Python em 2026: automação eficiente da coleta de dados
A linguagem mais conveniente e popular para escrever raspadores da Web é Python, embora quase qualquer linguagem possa ser usada para essa finalidade. Veja a seguir como coletar dados com o CapMonster Cloud em Python.