php spam spam-prevention honeypot

php - ¿Qué tan efectiva es la técnica de honeypot contra el spam?



spam-prevention (3)

Por "honeypot", me refiero más o menos a esta práctica:

#Register form <style> .hideme{ display:none; visibility: hidden; } </style> <form action="register.php"> Your email: <input type="text" name="u-email" /> Choose a password: <input type="text" name="passwd" /> <div class="hideme"> Please, leave this field blank: <input type="text" name="email" /> #the comment is for text-browser users </div> <input type="submit" value="Register" autocomplete=off /> </form> //register.php <?php if($_POST[''email''] != ''''){ die("You spammer!"); } //otherwise, do the form validation and go on. ?>

Más información here .

Obviamente, los campos reales se nombran con hashes aleatorios, y los campos de honeypot pueden tener diferentes nombres (correo electrónico, usuario, sitio web, página de inicio, etc.) que un spambot suele completar.

Me encanta esta técnica porque no provoca que el usuario se sienta molesto por CAPTCHA.

¿Alguno de ustedes tiene alguna experiencia con esta técnica? ¿Es efectivo?


Con la siguiente técnica, bloqueo el 100% de los spams.

  1. honeypot con display: ninguno. si falla, ejecute un script adicional para recopilar la dirección IP y escríbalo en el archivo .htaccess en deny from line.
  2. Cuenta el número de URL en el campo de comentario. Si falla, advierte solo porque esto puede ser humano.
  3. medir el tiempo para publicar. si es menos de 5 segundos, muestre un mensaje de error y déjelos intentar nuevamente porque el humano puede escribir bastante rápido con el complemento de llenado automático.
  4. recorte el archivo htaccess dailly con crontab, de modo que negar líneas no superará las 30 líneas (ajuste según corresponda).

El acceso denegado con dirección IP es muy efectivo porque los bots siguen intentando colarse con las mismas IPs (si cambian la IP, pongo esa nueva IP en htaccess, así que no hay problema). Recorte el archivo .htaccess diariamente con crontab automáticamente para que el archivo no sea demasiado grande. Ajusté el número de IP para bloquear para que el mismo bot con la misma IP se bloquee durante aproximadamente una semana. Noté que el bot usa la misma IP durante 3 días atacando varias veces.

El primer truco número uno bloquea aproximadamente el 99% y el bloque nº 2 aproximadamente el 1%, y el bot no pasará por esos 2, por lo que el número 3 podría no ser necesario.


Pregunta antigua, pero pensé que iba a intervenir, ya que he estado manteniendo un módulo para Drupal ( Honeypot ), que utiliza el método de prevención de spam Honeypot junto con una protección basada en el tiempo (los usuarios no pueden enviar el formulario en menos de X segundos y X aumenta exponencialmente con cada envío fallido consecutivo). Al usar estos dos métodos, he oído hablar de muchos, muchos sitios ( examples ) que han eliminado casi todo el spam automatizado.

He tenido mejor éxito con Honeypot + timestamp que con cualquier solución basada en CAPTCHA, porque no solo estoy bloqueando a la mayoría de los spammers, tampoco estoy castigando a mis usuarios .


Sin embargo, funciona relativamente bien, si el creador del bot se ocupa de su página, lo verá (o incluso tendrá una configuración de rutina para verificar) y probablemente modificará su bot en consecuencia.

Mi preferencia es usar reCaptcha . Pero lo anterior detendrá algunos bots.