Glosario

¿Qué es un honeypot? Protección antispam sin CAPTCHA

20 de mayo de 2026

Un honeypot en formularios web es un campo de entrada invisible, oculto a los usuarios humanos mediante CSS pero visible para los bots automatizados que parsean el HTML. Como los usuarios legítimos nunca ven (ni rellenan) el campo, cualquier envío con un honeypot no vacío se rechaza como spam. La técnica se popularizó hacia 2007 a través de blogs antispam y el plugin de WordPress "Honeypot for Contact Form 7", y es la alternativa respetuosa con la privacidad a CAPTCHAs como Google reCAPTCHA: sin scripts de terceros, sin cookies, sin problemas de accesibilidad ni pérdida de conversión.

¿Cómo funciona un honeypot?

El servidor añade un campo extra al formulario (a menudo website, url, email_confirm, etc.). El campo se oculta con display: none, visibility: hidden, position: absolute; left: -9999px, un <label> vacío o un envoltorio con tabindex="-1" autocomplete="off". Los bots rellenan indiscriminadamente todos los campos, incluido el cebo. En el envío el servidor comprueba:

  1. Campo vacío → humano, procesar.
  2. Campo lleno → bot, descartar silenciosamente o devolver 200 OK sin guardar.

Honeypot vs CAPTCHA: ¿cuál es mejor?

CriterioHoneypotCAPTCHA (reCAPTCHA)
Fricción para el usuarioNingunaMedia–alta
Accesibilidad (WCAG 2.2)ConformeNecesita alternativa audio
Privacidad / RGPDSin llamadas a tercerosCarga scripts Google, requiere consentimiento
Rendimiento~0 KB~200 KB JS
Detección de bots~95 % spam básico~99 % incluso bots inteligentes
Impacto en conversiónNinguno3–29 % caída

Para la mayoría de sitios WordPress, un honeypot más una comprobación de tiempo bloquea suficiente spam — sin el coste legal ni de UX de un CAPTCHA.

¿Cómo añado un honeypot a un formulario WordPress?

Contact Form 7

Instala el plugin gratuito "Honeypot for Contact Form 7" (más de 1 millón de instalaciones activas) y añade el tag [honeypot website] a tu formulario.

WPForms / Gravity Forms / Fluent Forms

Los tres incluyen opción de honeypot integrada — actívala con un clic.

Formulario WordPress propio

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

Buenas prácticas para honeypots

  • Nombres plausibles como website, url, company — nunca honeypot.
  • Ocultar con CSS, no con type="hidden".
  • tabindex="-1" y autocomplete="off" para usuarios de teclado y gestores de contraseñas.
  • aria-hidden="true" para lectores de pantalla.
  • Combinar con control de tiempo — rechazar envíos en menos de 2–3 s.
  • Devolver 200 OK al rechazar para que los bots no aprendan a esquivar.

¿Cuándo no basta un honeypot?

Bots avanzados que ejecutan JS y respetan la visibilidad CSS (Puppeteer / headless Chrome) saltan el honeypot. Para objetivos de alto valor (login, pago, lead-gen con recompensa) combina honeypot + tiempo + Cloudflare Turnstile o rate limiting. El otro significado de "honeypot" — un servidor deliberadamente vulnerable para estudiar atacantes — es un concepto de ciberseguridad distinto, no relacionado con formularios.

Qué comprueba InspectWP

InspectWP analiza cada formulario en la página rastreada y marca la falta de protección antispam en formularios de contacto y login. También detecta scripts de Google reCAPTCHA bajo RGPD, para comparar uso de honeypot vs CAPTCHA en tu sitio.

Analiza tu sitio de WordPress ahora

InspectWP analiza tu sitio de WordPress en busca de problemas de seguridad, SEO, cumplimiento del RGPD y rendimiento, gratis.

Analiza tu sitio gratis