Llevo mucho tiempo probando plugins de WordPress, para evitar el spam que me generan los bots desde el formulario de comentarios. La actividad es elevada, unos 50 al día.

Inicialmente, lo dejaba todo en manos de Akismet, pero el problema es que entonces se me movían al spam, y tenía que ir repasándolos para evitar que se colasen falsos positivos. La idea de estos plugins antispam, es que se centran en detectar la actividad procedente de bots, y directamente eliminarlos. Los que no son de bots, es decir, que son de personas que cobran por manualmente introducir spam en páginas web, son analizados ahora si por Akismet, que entonces los intenta discriminar.

Plugins antispam hay de varios tipos, el más conocido, es el que intenta determinar que quien efectivamente está publicando el comentario es un humano, para ello se plantea un CAPTCHA, que puede ser tan sencillo como marcar un checkbox, realizar una simple suma, etc. Al final, es una actividad que resulta molesta para una persona, así que los más interesantes, son los que operan de manera inversa, es decir, intentan discriminar que el que ha publicado el comentario es una máquina. De este tipos son GoodBye Captcha, WP-SpamShield Anti-Spam o Anti-Spam by CleanTalk.

Discernir si el comentario viene de un bot, o de una persona, tiene diferentes enfoques. Desde utilizar servicios externos, para por ejemplo consultar IP baneadas, hasta hacerlo localmente. Huelga decir, que siendo autónomo, es mucho más meritorio.

Como decía al principio, he tenido muchos problemas, que afectaban a usuarios legítimos, es decir, se perdían comentarios de usuarios. Así que desde aquí, mis disculpas. Así fue, hasta que encontré En mi caso, me ha sorprendido notablemente Anti-spam.

Parece mentira que el plugin más diminuto de todos, apenas un ZIP de 7 Kb., se haya comportado de manera tan eficaz, y no haya dado problemas. Pero, ¿cómo lo hace?

Es relativamente sencillo, ya que presupone comportamientos de los bots tontos de spam:
– No interpretan Javascript: Por tanto, si hacemos que el formulario depende de Javascript, será inaccesible para los bots. El problema es que el 1% de los usuarios, navegan sin Javascript, de modo que Anti-spam, calcula el año actual en Javascript, y si no lo tienes activo, te hace que lo rellenes tu a mano, como si fuera un CAPTCHA, pero que aplica sólo a un pequeño porcentaje de los usuarios.
– Rellenan todos los campos, signifiquen lo que signifiquen: De modo que se crea un campo trampa. Uno que es invisible para los usuarios, y que si se rellena, detecta al bot, y no le publica el comentario.

Hay otras técnicas como controlar el tiempo que ha tardado en escribirse el comentario, ya que asumimos que un bot, lo hace al instante, o que un humano, hace copiar y pegar. No obstante, el autor del plugin, webvitaly, cuenta que hizo pruebas, y añadir esta técnica no era más eficaz, y causaba problemas con usuarios reales. Personalmente creo que es una medida eficaz, y que ayudaría a frenar el spam de humanos que copian y pegan, que también es tedioso. De manera similar, se puede controlar la longitud del comentario, y si es muy corto o muy largo rechazarlo, cotejarlo con palabras bloqueadas, ver si tiene muchas URL, o usar un sistema de penalizaciones como hace la versión de pago Anti-spam Pro.

Como digo, un plugin que funciona muy bien, a pesar de carecer de características avanzadas. No tiene opciones más que un par que se editan en el propio PHP, no tiene un panel de control, no permite consultar los emails descartados y recuperarlos, …

Tanto me gustó el plugin, que decidí colaborar en eliminar su dependencia con jQuery. Y es que un plugin que es por defecto sencillo y simple, no debería necesitar los 99 Kb. de esta librería. Fue dicho y hecho.

Sin embargo, cuando lo tuve terminado, y a raíz de profundizar más, hice otro descubrimiento. Si sustituimos los cuadros de texto de comentario de nuestro tema, que en mi caso eran así:

<input type="text" name="email" id="email" ... />
<input type="text" name="url" id="url" ... />

Por las alternativas HTML5, específicas para cada uno, es decir así:

<input type="email" name="email" id="email" ... />
<input type="url" name="url" id="url" ... />

De inmediato se redujo la cantidad de spam recibido. Es decir, los bots, buscan campos de tipo text, pero no email, url, search, range, date, time o color.

No es necesario ningún fallback, ni ningún hack para navegadores que no soportan estos nuevos tipo de campos, ya que por defecto, todos los convierten a text en caso de no estar soportados. Es decir, los navegadores que soporten HTML5, usaran los nuevos campos, mientras que los que no, usarán el antiguo.

Moraleja, asegúrate que los campos de tu tema WordPress, son del tipo “moderno”, e instálate el plugin Anti-spam.