Reducir el Spam al 99%
jueves, 3 de agosto de 2006Los filtros de WordPress para controlar el spam (akismet) en los comentarios son muy efectivos y teniendolos medianamente bien configurados funcionan a la perfección, pero tienen un problema: no eliminan los mensajes sino que los pasan a «moderación». Mas tarde el administrador del sitio (en este caso yo mismo) debe borrarlos a mano (tras comprobar que el comentario es efectivamente spam).
Desde hace una temporada, todos los dias, lo primero que hago hacía por las mañanas al conectarme es borrar los 3-4 comentarios diarios de spam del area de administración. Nada del otro mundo, pero bastante cansado para un tipo aburrido como yo (ó era al reves¿?).
Me propuse fervientemente idear algún sistema que me permitiese seguir haciendo nada mientras me tomo el café, veamos ¿que diferencia un comentario escrito por un bots del escrito por una persona?
Facil ¿no?: Los comentarios escritos por un bot (ro-bot informático) son escritos sin pulsar el teclado. Pues ya tienes la solución: bastaría con decirle a WordPress que directamente ignore aquellos comentarios cuyo numero de pulsaciones en el cajón de texto sea menor de 1 (p. ejem). Los que sepais de Javascript ya os imaginais el resto. A continuación las modificaciones que hay que hacer en 2 ficheros PHP de WordPress para olvidarte de la moderación en los comentarios.
Modificar el fichero de comentarios
En la carpeta del tema en uso de WordPress tienes un fichero llamado «comments.php«, editalo y hacia el final verás el formulario que se le presenta a tus visitas para que dejen sus comentarios.
Algo como esto (linea 93) :<p>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
</p>
<p>
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
Lo que haremos es introducir un nuevo input oculto que aumente su valor por cada pulsación de teclas en el cajón de texto ( textarea ). Para eso situate antes del input name = comment_post_ID y añade:<input type="hidden" name="pulsaciones" value=0 />
A continuación modificamos el textarea en introducimos un javascript que aumente el valor de este campo, dejandolo así:<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown=pulsaciones.value=eval(pulsaciones.value)+1;> </textarea>
Listo, cada vez que una tecla sea pulsada, el campo name=pulsaciones aumenta su valor en 1 unidad. En conjunto queda así:<p>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown=pulsaciones.value=eval(pulsaciones.value)+1;> </textarea>
</p>
<p>
<input name="submit" type="submit" id="submit" tabindex="5" value="Enviar" />
<input type="hidden" name="pulsaciones" value=0 />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
Modificar la función de comentarios
Pues bien, ahora solo falta filtrar y continuar si el campo «pulsaciones» es mayor de 1. En la carpeta raiz donde tengas instalado WordPress tendrás un fichero llamado wp-comments-post.php, editalo añadiendo la lineas situadas entre «nueva linea START» y «nueva linea END», a la altura del renglon 27 $comment_author = trim($_POST['author']);
$comment_author_email = trim($_POST['email']);
$comment_author_url = trim($_POST['url']);
$comment_content = trim($_POST['comment']);
// nueva linea START
$comment_pulsa = trim($_POST['pulsaciones']);
if( '' == $comment_pulsa || $comment_pulsa < 3 ){
header("Location: http://www.hazteoir.org");
exit;}
//nueva linea END
Hecho. En adelante tu trabajo como moderador de spam se verá muy notablemente reducido. Al menos en mi caso, desde que activé este sistema no he tenido que borrar ni un solo mensaje de spambots, con lo que además puedo desactivar el plugin Akismet y aligerar el sistema.
Observaciones:
– Evidentemente esto no detiene el span «manual». La estupidez humana no tiene cura, ó como dice Murphy «Nunca diseñes a prueba de estupidos, los estupidos son muy ingeniosos!«
– Existe otra modalidad de spambots que NO usa los formularios para hacer comentarios. Son (afortunadamente) bastante más raros y dificiles de parar.
– Ojo con lo que haces si no tienes ni idea de PHP ó HTML, puedes inutilizar el sistema de comentarios. Haz siempre copia de seguridad de los ficheros modificados.
Problemas
– El principal problema es que sí el «filtro» dá un falso positivo no hay manera de enterarse. Si alguno observa algo raro, ó simplemente no le deja comentar que lo comunique…. por email
– Teoricamente el sistema impediría tambien hacer COPY-PASTE en los comentarios sin escribir nada… pero esto no tengo claro que sea un «problema»!! :D
kamaria-holmes23
#1/ 03 de August/2006 a 18:13:48
Otros comentarios de «kamaria-holmes23»
Reducir el Spam al 99%
nice..
Sr. XX Terror
#2/ 03 de August/2006 a 23:20:16
Otros comentarios de «Sr. XX Terror»
Buen intento pero la validación de formularios con javascript es basicamente ineficaz. Al bot le bastaría enviar un campo pulsaciones con valor >=3 para saltarse tu sistema (el 3 lo deduzco del código que copi-pasteas, pero es sencillo ver el codigo fuente de la página y analizar lo que estás enviando en ese campo).
¿que diferencia un comentario escrito por un bots del escrito por una persona? La respuesta es nada. El protocolo que lleva los comentarios ( en nuestro caso HTTP ) es el mismo en ambos casos.
La única solución realmente segura pasa por el farragoso uso de claves.
Trebol-A
#3/ 04 de August/2006 a 04:21:32
Otros comentarios de «Trebol-A»
Hombre claro, al bot le bastaría con enviar un valor > 3, o lo que es lo mismo "leer" los campos del formulario, averiguar que "pulsaciones" es un campo numérico y validarlo... algo que, cuando menos tardará en pasar... espero!!
En este sentido, probablemente tendría el mismo efecto haber renombrado cualquiera de los campos del formulario, por ejemplo de "input name=yourname" a "name=tu-nombrecico-cojones", pero no estoy seguro de que lugares se hace uso del formulario y de sus variables, y el follón podría ser mayor. Mejor añadir algo NUEVO y cambiarlo cuando lo "pillen".
La opción del Catpcha (o como se escribe) sea probablemente igual ó más eficáz, pero esta opción me resulta muy antipatica... manias personales.....
Percewall
#4/ 04 de August/2006 a 04:31:47
Otros comentarios de «Percewall»
Yo por suerte, o desgracia, que nunca se sabe, no tengo apenas spam, 1 o dos al mes a lo sumo.
Tu solucion me gusta bastante mas que el sistema de claves... que como tu odio bastante.
Pedro
#5/ 12 de February/2007 a 20:19:18
Otros comentarios de «Pedro»
Buen artículo!!
18 de December, 2024 @ 12:13