WordPress Anti-Spam, toma 1

Bueno, como prometí, una explicación de cómo he modificado mi WordPress para eliminar comentarios de los spammers. En principio, creo que las modificaciones que he hecho van a hacer que no tenga más comentarios spam, pero voy a dejar un tiempo de confianza para probar. Lo primero que he hecho es localizar en la distribución de WP dónde se mostraba el diálogo (form) para introducir los comentarios. En el fichero wp-comments.php. Ahí me he encontrado con:

form action=".../wp-comments-post.php" ...


(con lo que la página que recoge los datos del formulario es wp-comments-post.php. Para hacer el formulario diferente a lo que los spammers tendrán registrado de esta versión, he añadido un nuevo campo "hidden":

input type="hidden" name="checkpoint" value="spammers_go_home"


Lo siguiente es fácil: Modificar el fichero wp-comments-post.php para que si no existe ese campo y no tiene exactamente ese valor, aborte el programa:

if ('spammers_go_home' != trim(strip_tags($_POST['checkpoint'])) )
die( "Spammer, go home" );


Si no existe ese campo exactamente con ese valor, no emite el comentario.

¿Por qué funciona esto? Bien, como es de esperar, los spammers no son personas que están sentadas y "pulsan" el botón "enviar comentario", sino que son programas que envían peticiones HTTP POST pre-formateadas. Para ello han estudiado el código fuente de WP (si, hay gente que hace eso, aunque parezca extraño) y han obtenido el formato de esa petición de publicación de comentario. Así pueden poner programas que automáticamente envían comentarios spam. Añadiendo el nuevo campo oculto y comprobándolo en el fichero que recibe los datos hace que un usuario que realmente pulse el botón sí que pueda publicar el comentario, mientras que un programa, que no tendrá este nuevo campo, no pueda. Esperemos que funcione.

Actualización: He escrito un plugin más sofisticado para tratar el spam. Está aquí.

Actualización: He estado buscando en Google porque es casi seguro que ya se han preocupado de esto. Es increíble la cantidad de soluciones que se dan en la que parece ser la página especializada en combatir el spam para WordPress. Casi ninguna de ellas (salvo quizá la que genera un gráfico para obligar a que una persona lo lea e interprete) es tan eficaz como la que propongo, y desde luego, ninguna tan sencilla. En el sitio web de WP también se explica, pero se limita a decir las opciones del programa, que como ya he explicado, no son suficientes... En fin...

Actualización 2: En esta entrada describo el proceso más detalladamente, ya que hay varias personas que me han preguntado exactamente cómo hacerlo. No lo especifiqué mucho, porque en principio no esperaba que tuviera tanto éxito esta solución anti-spam... ¡¡Que aproveche y abajo el spam!!

Actualización 3: Sería interesnte que los que implementaran la solución cambiaran en su sitio web el "name" y el "value" de la variable oculta. Así cada sitio Web tendría un valor distinto para esta variable de comprobación, y obligaría a los spammers a tener que analizar la página antes de enviar un comentario spam.

blog comments powered by Disqus