Supongo que se percataron que al intentar escribir algunas cosas "malas" en los comentarios, tipo: viagra, poker, casino y algunas otras que comúnmente son utilizados por spamers, el comentario rebota con un mensajito que contiene estas hermosas palabras : "eat your shit". Si todavía no tuviste la oportunidad de verlo en acción, escribe un comentario que contenga la palabra "viagra" y verás lo que pasa.
Esto es producto de la combinación de un método anti-spam con una especie de filtro para los comentarios, invento de dos genios: Armonth y Gafeman respectivamente. Este método es extremadamente bueno, por lo que me atrevería a decir que tiene 99.8% de efectividad. Desde que lo implementé en el blog hace algunos meses, me olvidé del spam casi por completo. Antes de echarlo a funcionar recibía una verdadera abalancha spam (más de 50 comentarios spam por día!).
Lo que hace el filtro es comprobar si en el mensaje se encuentra en una lista de "palabras prohibidas"; en caso de encontrar coincidencias, devuelve al spammer el mensaje: "eat your shit" juntamente con todo lo que envió. La combinación de estos métodos reduce considerablemente la carga del servidor, debido a que ya no realiza las acostumbradas consultas a la base de datos; es más, ni si quiera se registrará el comentario como spam, sino que rebotará como ya lo mencioné, ahorrando mucho trabajo a Akismet.
¿Cómo implementarlo?
Primero haremos copia de seguridad de los siguientes ficheros:
- /wp-comment-post.php
- /ruta-a-tu-plantilla/comments.php
Una vez hecho esto, abrimos el fichero comments.php de nuestra plantilla y buscaremos las siguientes instrucciones:
-
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" tabindex="1" />
Duplicaremos esa línea y en la primera quitaremos el contenido de value="" y lo dejamos como “author” añadiendo la clase hid y en la segunda cambiando “author” por “nombre”, lo cual debe quedar así:
-
<input type="text" name="author" id="author" class="hid" value="author" tabindex="1" />
-
<input type="text" name="nombre" id="nombre" value="<?php echo $comment_author; ?>" tabindex="2" />
Abrimos nuestro fichero de estilos (style.css) y crearemos la clase “hid”:
-
.hid { display: none; }
Abrimos el fichero wp-comments-post.php (se encuentra en la raiz del blog), y reemplazamos todo el contenido por lo siguiente:
-
<?php
-
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
-
exit;
-
}
-
-
-
$totc=$comment_content.$comment_author;
-
-
if( eregi('payday|vanessa|hairy|breast|buy|backgammon|ringtone|bingo|blackjack|booty|credit|card |casino|free|dollar|bonus|cash|poker|ringtones|teen|christmas|sex|great site|interesting|Nice|Sorry|Cool|casino|mariah carey|notem6715|madonna|poker|girl|playboy|fucking|nacked|commission|jokes|blowjob|pills|porn|lesbian|viagra',$totc) )die( '<b>eat your shit:</b><br/>'.$totc );
-
-
-
-
nocache_headers();
-
-
$comment_post_ID = (int) $_POST['comment_post_ID'];
-
-
$status = $wpdb->get_row("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = '$comment_post_ID'");
-
-
do_action('comment_id_not_found', $comment_post_ID);
-
exit;
-
} elseif ( !comments_open($comment_post_ID) ) {
-
do_action('comment_closed', $comment_post_ID);
-
wp_die( __('Sorry, comments are closed for this item.') );
-
do_action('comment_on_draft', $comment_post_ID);
-
exit;
-
}
-
-
// If the user is logged in
-
$user = wp_get_current_user();
-
if ( $user->ID ) {
-
$comment_fake_author='author';
-
$comment_author = $wpdb->escape($user->display_name);
-
$comment_author_email = $wpdb->escape($user->user_email);
-
$comment_author_url = $wpdb->escape($user->user_url);
-
if ( current_user_can('unfiltered_html') ) {
-
if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
-
kses_remove_filters(); // start with a clean slate
-
kses_init_filters(); // set up the filters
-
}
-
}
-
} else {
-
if ( get_option('comment_registration') )
-
wp_die( __('Sorry, you must be logged in to post a comment.') );
-
}
-
-
$comment_type = '';
-
-
if ( get_option('require_name_email') && !$user->ID ) {
-
wp_die( __('Error: please fill the required fields (name, email).') );
-
elseif ( !is_email($comment_author_email))
-
wp_die( __('Error: please enter a valid email address.') );
-
}
-
-
if ( '' == $comment_content )
-
wp_die( __('Error: please type a comment.') );
-
-
-
if ( 'author' != $comment_fake_author ) // Es spam
-
-
$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'user_ID');
-
-
$comment_id = wp_new_comment( $commentdata );
-
-
$comment = get_comment($comment_id);
-
if ( !$user->ID ) {
-
}
-
-
$location = ( empty($_POST['redirect_to']) ? get_permalink($comment_post_ID) : $_POST['redirect_to'] ) . '#comment-' . $comment_id;
-
$location = apply_filters('comment_post_redirect', $location, $comment);
-
-
wp_redirect($location);
-
-
?>
Si te fijas en el contenido de wp-comments-post.php, contiene una lista de "palabras prohibidas", la cual puedes modificar (adicionar o borrar) de acuerdo a tus necesidades.
Listo!!. Es lo único que debemos hacer para tener en nuestro blog el mejor método anti-spam que probé hasta hoy.
Desde que lo implementé, a lo mucho recibo dos comentarios spam cada dos días


















John Zárate escribió,
Fecha/Hora: Junio 13, 2008 @ 2:51
excelente… aunque por ahi lei que AKistemt y el rival de akistmet no recuerdo cuanto eran impenetrables…
Yo solo uso Akismet y me ha ido bien… una vez creo se le pasaron unos 5 comentarios
carlos escribió,
Fecha/Hora: Junio 13, 2008 @ 4:11
O como diría Torrente “la vinagra”
Binary Ant escribió,
Fecha/Hora: Junio 13, 2008 @ 6:19
Jeje, yo una vez no se que palabra prohibida escribí y al salirme el mensajito de eat your shit pensé que te habían hackeado el blog
Dogguie escribió,
Fecha/Hora: Junio 13, 2008 @ 8:57
@John Zárate: con este método Akismet casi no trabaja
gabriux escribió,
Fecha/Hora: Junio 13, 2008 @ 10:51
Lo aplico pero ya… recibi demasiado spam, sera que esa es la razon de mi suba de visitas? son todos robots que quieren venderme viagr* que todavia no necesito?
o si (¿?)
hahaha.. Un abrazo!
Dogguie escribió,
Fecha/Hora: Junio 13, 2008 @ 10:55
@gabriux: jajajaja… qué wenaaaa jaja
aldols escribió,
Fecha/Hora: Junio 13, 2008 @ 11:56
muy bien… habra que aplicar este metodo… gracias..
VSTYDS escribió,
Fecha/Hora: Junio 13, 2008 @ 11:57
hey es cierto!!!
comenté “viarg*” (si no me va a rebotar el mensaje” y dice “eat your shit” la verdad muy bueno, porque así recibís menos SPAM, y más comentarios útiles.
roqui escribió,
Fecha/Hora: Junio 13, 2008 @ 12:27
cada vez mejorrr
raulroc escribió,
Fecha/Hora: Junio 13, 2008 @ 13:17
yo creo q todo lo q salga nuevo no servirá de mucho. puede ser efectivo con mákinas pero no con personas. si no echa un vistazo a sto: http://www.quierounamotocicleta.com
jorge escribió,
Fecha/Hora: Junio 13, 2008 @ 15:24
casin0 es una mala palabra???????
Dogguie escribió,
Fecha/Hora: Junio 13, 2008 @ 15:38
@jorge: obviamente no… pero esa palabra encanta a los spammers
D escribió,
Fecha/Hora: Junio 13, 2008 @ 17:29
en verdad funciona !!!
John Zárate escribió,
Fecha/Hora: Junio 13, 2008 @ 18:19
en la primera parte era los dos fusionados
TocaPelotas escribió,
Fecha/Hora: Junio 14, 2008 @ 11:38
V i a g r a!!! Compren aquí sus pastillitas!!!
V i a g r a!!! Pidan aquí sus endurece penes!!!.
Saludos.
Dogguie escribió,
Fecha/Hora: Junio 14, 2008 @ 12:30
@TocaPelotas, @Juliam: gracias por ayudar a ENGROSAR mi lista negra de palabras
asdsadas escribió,
Fecha/Hora: Junio 15, 2008 @ 0:53
banned?
author escribió,
Fecha/Hora: Junio 16, 2008 @ 12:17
eat ur shit me habia salido a mi cuando te comento jajaj y yo
WTF pero nada investigue y me di cuenta de k se trataba deun plugin pense k era algo k habia echo para los comentadores
Jonathan escribió,
Fecha/Hora: Junio 17, 2008 @ 21:53
Pero a los spamer siempre se les ocurre como meter su publicidad
Dogguie escribió,
Fecha/Hora: Junio 18, 2008 @ 8:46
@Jonathan: es cierto… pero este método es el más efectivo de los que he probado. Tal como lo dije, de 50 comentarios spam por día, ahora recibo 2 como máximo.
David escribió,
Fecha/Hora: Julio 28, 2008 @ 0:16
Gracias x tu comentario en amointernet… disculpame la demora en responderte.
Muy buena opcion la que ofreces aca… voy a analizarla para una proxima oportunidad… por el momento mi blog esta bastante abandonado.
Nos vemos… David
David escribió,
Fecha/Hora: Julio 28, 2008 @ 0:31
Igual… puedo probar??
jeje, despues de un rato se me ocurrio ver que pasa si pongo cosas como: C asino, V1agra! S E X!!!!
jejeje, solo para molestar
mañana un spammer podria hacerlo!
fede escribió,
Fecha/Hora: Septiembre 20, 2008 @ 16:33
pero esto no hace que algunos comentarios de personas que no son bots reboten?