Glossário

O que é um honeypot? Proteção antispam sem CAPTCHA

20 de maio de 2026

Um honeypot em formulários web é um campo de entrada invisível, escondido aos utilizadores humanos via CSS mas visível para bots automatizados que analisam o HTML. Como utilizadores reais nunca veem (nem preenchem) o campo, qualquer submissão com honeypot preenchido é rejeitada como spam. A técnica popularizou-se por volta de 2007 com blogs antispam e o plugin WordPress "Honeypot for Contact Form 7", sendo a alternativa amigável à privacidade aos CAPTCHAs como o Google reCAPTCHA — sem scripts de terceiros, sem cookies, sem problemas de acessibilidade, sem perda de conversão.

Como funciona um honeypot?

O servidor adiciona um campo extra (frequentemente website, url, email_confirm). É escondido via display: none, visibility: hidden, position: absolute; left: -9999px, <label> vazio ou tabindex="-1" autocomplete="off". Bots preenchem todos os campos que encontram — incluindo a armadilha. No envio o servidor verifica:

  1. Campo vazio → humano, processar.
  2. Campo preenchido → bot, descartar em silêncio ou devolver 200 OK sem guardar.

Honeypot vs CAPTCHA: qual é melhor?

CritérioHoneypotCAPTCHA (reCAPTCHA)
Fricção para o utilizadorNenhumaMédia–alta
Acessibilidade (WCAG 2.2)ConformeNecessita áudio
Privacidade / RGPDSem chamadas a terceirosScripts Google, requer consentimento
Performance~0 KB~200 KB JS
Deteção de bots~95 % spam básico~99 % incluindo bots avançados
Impacto na conversãoNenhum3–29 % de queda

Para a maioria dos sites WordPress, honeypot + verificação de tempo bloqueia spam suficiente — sem o custo legal e de UX de um CAPTCHA.

Como adicionar um honeypot a um formulário WordPress?

Contact Form 7

Instala o plugin grátis "Honeypot for Contact Form 7" (mais de 1 milhão de instalações ativas) e adiciona o tag [honeypot website].

WPForms / Gravity Forms / Fluent Forms

Os três têm opção de honeypot embutida — ativa com um clique.

Formulário WordPress próprio

<p style="position:absolute;left:-9999px;" aria-hidden="true">
  <label for="website">Deixe este campo vazio</label>
  <input type="text" name="website" id="website" tabindex="-1" autocomplete="off">
</p>
if ( ! empty( $_POST['website'] ) ) {
    wp_die( 'Spam detetado', 'Erro', array( 'response' => 200 ) );
}

Boas práticas para honeypots

  • Nomes plausíveis como website, url, company.
  • Esconder via CSS, não type="hidden".
  • tabindex="-1" + autocomplete="off".
  • aria-hidden="true" para leitores de ecrã.
  • Combinar com verificação de tempo — rejeitar sob 2–3 s.
  • Devolver 200 OK para não revelar a armadilha.

Quando o honeypot não chega?

Bots avançados que executam JS e respeitam visibilidade CSS (Puppeteer / headless Chrome) saltam o honeypot. Para alvos de alto valor (login, pagamento, lead-gen com prémio) combina honeypot + tempo + Cloudflare Turnstile ou rate limiting. O outro significado de "honeypot" — um servidor deliberadamente vulnerável para estudar atacantes — é um conceito de cibersegurança distinto.

O que o InspectWP verifica

O InspectWP analisa cada formulário na página rastreada e sinaliza ausência de proteção antispam em formulários de contacto e login. Também deteta scripts Google reCAPTCHA na secção RGPD.

Verifique seu site WordPress agora

O InspectWP analisa seu site WordPress em busca de problemas de segurança, problemas de SEO, conformidade com GDPR e desempenho — gratuitamente.

Analise seu site grátis