Skip to main contentSkip to footer
Guías de plugins

Honeypot de formularios en WordPress: frena bots sin captcha

Actualizado Patrick Schlesinger
ReportedIP Hive form honeypot guide cover showing a +6 score for a filled honeypot, a spam threshold of 4, and a four-way execution-proof verdict

Un honeypot de formulario atrapa bots de spam en WordPress con un campo que las personas nunca ven y los bots siempre rellenan, y ReportedIP Hive lo combina con una prueba de que el formulario se mostró de verdad en un navegador. Esta guía explica las dos capas, qué pasa con un envío rechazado y qué formularios quedan protegidos en cada plan, sin un solo captcha.

¿Qué es un honeypot de formulario?

Un honeypot es un campo de formulario adicional oculto para las personas. Está fuera de la pantalla, el teclado lo salta, el autocompletado lo ignora y los lectores de pantalla no lo ven. Una persona nunca lo toca. Un bot de spam que rellena cada campo que encuentra también rellena este, y eso basta para saber que el envío no viene de una persona.

La ventaja frente a un captcha es que nadie tiene que resolver nada. No hay imagen distorsionada, ni puzzle de semáforos, ni script de terceros que rastree a los visitantes. El límite es igual de claro: un bot escrito para un sitio concreto puede aprender a dejar el campo vacío. Por eso Hive no se fía solo del honeypot. La interfaz de Hive está en inglés, así que las etiquetas y los mensajes citados en esta guía también lo están.

Por qué un honeypot solo no basta

Muchos scripts de spam ni siquiera cargan el formulario. Envían sus datos directamente a la dirección que procesa comentarios o registros, por ejemplo wp-comments-post.php. Un script así nunca ve el honeypot, no puede rellenarlo y supera una comprobación que solo busca un campo relleno.

Por eso Hive añade la Form execution proof. El servidor coloca un campo ancla oculto en el formulario, y un pequeño script en el navegador añade un segundo campo cuyo nombre es distinto en cada instalación. Un script que envía directamente a la dirección nunca ha ejecutado ese código, así que le falta el segundo campo. La página es igual para todos los visitantes, de modo que las cachés de página siguen funcionando.

Los cuatro veredictos de cada envío

A partir de los dos campos, Hive llega a uno de cuatro veredictos:

VeredictoQué llegóQué significa
ProbadoHoneypot vacío, prueba presenteUn navegador mostró el formulario y una persona lo envió.
ActivadoHoneypot rellenoUn bot rellenó cada campo que encontró.
FallidoCampo ancla presente, falta la pruebaLa página se cargó, pero el script del navegador nunca se ejecutó.
AusenteNingún campoEl formulario no tenía campos de protección, por ejemplo por una página antigua en caché o un tema con su propio marcado de comentarios.

«Ausente» se trata con indulgencia, porque tiene causas inofensivas. Un tema que escribe su propio formulario de comentarios sin los hooks habituales de WordPress nunca se trata como un bot.

Qué pasa con un envío rechazado

  • Honeypot relleno: el envío se rechaza con «Your submission was not accepted. Please reload the page and try again.». Hive lo registra, lo suma de inmediato a la escalera de bloqueo progresivo y, en modo Community Network, informa de la dirección a la comunidad. Las direcciones de la lista blanca y los usuarios que pueden editar entradas quedan exentos.
  • Falta la prueba en un comentario: el comentario se rechaza con «This form needs JavaScript to be submitted. Switch it on and try again.». La dirección se registra, pero nunca se cuenta ni se bloquea, porque un lector sin JavaScript no es un atacante.
  • Falta la prueba en el registro o en el restablecimiento de contraseña: el formulario rechaza el envío y explica por qué. El mensaje del restablecimiento remite además a otro administrador o a WP-CLI, por si alguien ya se ha quedado fuera.
  • Todo lo demás: los comentarios pasan además por el filtro de spam de comentarios, que se fija en enlaces, nombres y otras señales de spam. Qué pasa con un comentario marcado se decide en Action on a comment scored as spam: marcar como spam (por defecto), bloquear o desactivado.

Cada rechazo aparece en el Event Log de ReportedIP Hive > Activity, así que en todo momento ves qué dirección se detuvo y por qué.

Event Log de ReportedIP Hive con un evento Comment Honeypot y un evento Form Spam para la misma dirección en el formulario de comentarios
Un bot que rellenó el honeypot del formulario de comentarios, tal como aparece en el Event Log.

Qué formularios se protegen en cada plan

FormulariosPlan
Formulario de comentarios, registro de WordPress y WooCommerce, restablecimiento de contraseñaTodos los planes, también Free
Contact Form 7Todos los planes, también Free
Comprobación de cálculo además de la pruebaDesde Professional
Gravity Forms, WPForms, Forminator, Formidable Forms, Elementor Forms, Ultimate MemberDesde Business

La comprobación de cálculo cierra un hueco que deja abierto la prueba simple: un script que lee el nombre del campo en la página y lo devuelve. Con ella, el navegador tiene que resolver una pequeña tarea firmada de tu propio sitio antes de enviar el formulario, y cada tarea solo se acepta una vez. Los detalles de cada plugin de formularios están en las guías de Gravity Forms y de WPForms y Forminator.

Cómo activar la protección

Abre ReportedIP Hive > Protection y la tarjeta Form Protection. En una instalación nueva, Comment honeypot, Form execution proof y el interruptor de Contact Form 7 ya están activados. El campo honeypot solo aparece en el formulario mientras Form execution proof esté activado, así que deja los dos activados juntos.

Tarjeta Form Protection de ReportedIP Hive con el honeypot de comentarios, la prueba de ejecución y Contact Form 7 activados, y los interruptores de otros plugins de formularios marcados como Business
La tarjeta Form Protection en un sitio con plan Professional: las capas básicas están activas y los interruptores de los plugins muestran el plan que necesitan.

Con el Expert mode activado, la tarjeta muestra además Apply the proof to sign-up and password reset, Computation check on forms y Action on a comment scored as spam. Si quieres observar antes de rechazar, activa Report-only mode en la tarjeta Blocking & Escalation: Hive registra entonces cada rechazo y no rechaza nada. Para probar la protección, Tools > Diagnostics (visible en Expert mode) hace tres pasadas con tu propio navegador, como un visitante, como el mismo visitante dos veces y como un bot, sin enviar ningún formulario real.

Accesibilidad, caché y privacidad

El honeypot está hecho para que ninguna persona tropiece con él. Lleva aria-hidden="true", que lo oculta a los lectores de pantalla según WAI-ARIA, está fuera del orden de tabulación y excluido del autocompletado, y su etiqueta oculta dice «Leave this field empty».

Nada específico de la petición llega al HTML, así que las cachés de página completa como WP Rocket, LiteSpeed o una CDN siguen sirviendo la misma página. El script mide además cuánto tiempo estuvo el formulario en pantalla y envía los segundos; ese valor se registra junto con un rechazo. No hay cookies, ni huellas digitales, ni peticiones a terceros. En modo Local Shield nada sale de tu sitio. En modo Community Network, la dirección de un bot que rellenó el honeypot se comunica a reportedip.com, y con Community threat check on forms activado, la dirección del visitante se comprueba allí antes de aceptar un comentario, un registro o un restablecimiento de contraseña. La guía de privacidad explica los dos modos en detalle.

Preguntas sobre el honeypot de formularios de WordPress

¿Puede el honeypot bloquear a un visitante real?

Un visitante real nunca ve el honeypot, así que una persona no puede rellenarlo por error. Solo notan algo los lectores con JavaScript desactivado: su comentario se rechaza con un mensaje claro que les pide activarlo. Su dirección nunca cuenta para un bloqueo, porque la falta de JavaScript por sí sola no se considera un ataque.

¿Sigo necesitando un captcha con el honeypot de Hive?

La mayoría de los sitios ya no necesitan captcha. El honeypot atrapa a los bots que rellenan todos los campos, la prueba de ejecución atrapa a los scripts que envían directamente a la dirección del formulario y la comprobación de cálculo, desde Professional, detiene también a los scripts que copian los nombres de los campos. Un captcha solo tiene sentido en formularios que atacan personas a mano.

¿Funciona el honeypot con la caché de páginas?

El honeypot funciona con la caché de páginas porque el marcado del formulario es igual para todos los visitantes. El campo de prueba lo añade un script en el navegador, no el servidor, así que una página en caché sigue siendo válida. Tras una actualización del plugin o al activar un plugin de formularios, Hive da un periodo de gracia a las páginas en caché para que nadie sea rechazado por una copia antigua.

Sigue leyendo

La documentación de Hive explica en detalle la detección de bots y el spam de comentarios y la caché y la compatibilidad. El resto de funciones está en las guías de ReportedIP Hive.

Consigue ReportedIP Hive para WordPress

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar