Evitando el spam (II)
Vaya, parece que funciona. He puesto en práctica la idea del post anterior y no va mal. Configuré el asunto para que cuando un bot caiga en la trampa se me envíe un e-mail, y en cuatro minutos de reloj van 29 avisos (¿y a que no véis ningún anuncio de online poker?). O estáis comentando como locos y esto funciona mal, o funciona realmente bien :)
Al final resultó en un par de cambios muy sencillitos, fácilmente adaptables a cualquier sistema de publicación de contenidos. Estos son los cambios que yo he hecho en el WordPress 1.2.2 (no sé si valdrá para otras versiones, pero si no, la diferencia será mínima):
-
En el archivo
wp-comments.phpdebemos añadir untextareamás, para engañar al bot atontado. Para ello, si en el formulario de comentarios tenemos por ejemplo esto:<textarea name="comment" id="comment" cols="60" rows="8"></textarea>Bastará con que añadamos otro campo similar, pero con otro
namey otroid(que será el que realmente usemos, quedando el original como atrapabots), quedando así la cosa:<textarea name="antispam" id="antispam" cols="60" rows="8"></textarea>
<textarea name="comment" id="comment" cols="60" rows="8"></textarea> - En el archivo
wp-comments-post.phphay que ingeniárselas mejor. Al principio del archivo, justo después del<?php(esto es importante), dejamos caer estas líneas:
if(strlen($_POST['comment']) > 3) {
header("Location: http://www.google.co.kr");
mail("aqui@tu.email", "Un spambot atontado", "Un spambot se ha metido en el agujero.Ha dicho:\n\n" . $_POST['comment']);
exit;
}Además hay que cambiar
$comment = trim($_POST['comment']);por$comment = trim($_POST['antispam']);.Ojo con esto. En la primera línea se comprueba si el campo
comment(recordemos: campo que antes era utilizado para enviar los comentarios) tiene más de 3 caracteres. Si el bot ha rellenado el campocomment(como es lógico que hará, porque así está programado), lo mandaremos a Google Corea. Esto es a voluntad de cada uno :). Con la siguiente línea estamos enviándonos un e-mail de aviso de cada bot que ha intentado colárnosla. Recomiendo quitarla una vez que comprobemos que el sistema funciona. Por cierto, hay que poner el e-mail propio substituyendo lo de aqui@tu.email, obviamente. - Ahora sólo queda editar nuestros estilos CSS, añadiendo la siguiente declaración:
#comment {
display: none;
visibility: hidden;
position: absolute;
margin-left: -1000px;
}Todas esas propiedades son para asegurarnos que realmente el campo-trampa se oculta al usuario. Y ya está.
Sólo recomiendo esta solución a quienes sepan lo que hacen, pues esto no es código de copiar y pegar, hay que entender lo que se hace, pues podemos cargarnos algo. Ya diréis si funciona o no.
En lo que tardé en escribir el post ya tengo 62 avisos de spam… debe funcionar, sí…