2011-12-07 21 views
6

Estoy buscando artículos sobre cómo filtrar el spam. Cuando busco todo lo que sigo encontrando es Wordpress, las formas de filtrar malas palabras, etc. que no es lo que estoy buscando. Estoy buscando formas de escribir tu propio sistema de filtro y mejores prácticas.Filtro Comentario Spam? PHP

Cualquier enlace tutorial de cualquier persona que haya hecho esto antes, sería apreciado.

Sólo buen artículo que puedo hasta ahora es http://snook.ca/archives/other/effective_blog_comment_spam_blocker

Respuesta

11

Al escribir su propio método, tendrá que emplear una combinación de heurística.

Por ejemplo, es muy común que los comentarios de spam tengan 2 o más enlaces URL.

me gustaría comenzar a escribir su filtro como tal, el uso de un diccionario de palabras de activación y tienen que recorrer y las usará para determinar la probabilidad:

function spamProbability($text){ 
    $probability = 0; 
    $text = strtolower($text); // lowercase it to speed up the loop 
    $myDict = array("http","penis","pills","sale","cheapest"); 
    foreach($myDict as $word){ 
     $count = substr_count($text, $word); 
     $probability += .2 * $count; 
    } 
    return $probability; 
} 

Tenga en cuenta que este método dará lugar a muchos falsos positivos, dependiendo de tu conjunto de palabras; podría tener su sitio "indicador" para la moderación (pero se activa inmediatamente) aquellos con probabilidad> .3 y < .6, haga que requiera esos> .6 y < .9 ingrese una cola para la moderación (donde no aparecen) hasta que se apruebe), y todo lo que sea mayor de 1 es simplemente rechazado.

Obviamente, estos son todos los valores que tendrá que modificar los umbrales, pero esto debería comenzar con un sistema bastante básico. Se puede añadir a la misma varios otros calificadores para aumentar/disminuir la probabilidad de correo no deseado, como la comprobación de la relación de malas palabras a las palabras, los cambios de peso de las palabras, etc.

+1

espere un momento ... no puede hacer cada vez un strtolower ($ text) por cada palabra. – dynamic

+1

¿Por qué no? De esta forma detecta variaciones en el caso. No estamos produciendo la nueva cadena en minúscula, solo la estamos comparando y librándonos de ella. – Tim

+0

A menos que quiera decir que la eficiencia es mala, que sí, lo es, esto es solo un ejemplo conceptual. – Tim

1

¿Está buscando una manera de detener el spam y los robots de este tipo? Si es así, siempre puede agregar un CAPTCHA: http://en.wikipedia.org/wiki/CAPTCHA Debe ser lo suficientemente fácil para poner en cualquier proyecto si esto es lo que está tratando de hacer. De lo contrario, no estoy seguro de lo que dices en términos de filtrado de spam.

+0

bien un código de imagen es una manera pero no va a evitar que las personas que escriben manualmente comentarios de spam. Realmente, estoy buscando una función o funciones que puedan tomar un comentario y generar una probabilidad de spam. –

+0

No parece ser algo que puedas hacer fácilmente. Predecir spam creado por humanos es como publicar un comentario de todos modos. Si se están tomando el tiempo para enviar correos no deseados a mano, entonces encontrarán formas de enviar correo basura de todos modos. El único bloqueo para algo así podría ser un bloqueo de IP si nota que el correo no deseado proviene de ciertas direcciones IP. – Hudspeth

+0

En mi pregunta, publiqué una forma de lograr esto, pero estaba buscando diferentes sistemas/métodos. El bloqueo de IP no es efectivo, ya que los denominados spammers de comentarios "nocivos" usarán proxies para rechazar solicitudes, por lo tanto, bloquear las direcciones de IP les hará perder visitantes a largo plazo. –

2

Me sorprende que nadie haya mencionado Akismet. Nunca he tenido un mensaje marcado como incorrecto (ya sea spam o legítimo). Mi instalación de WordPress vino con eso. Todo lo que tenía que hacer era presionar Habilitar.

0

supongo The war with spam comment este artículo le puede dar algunas pistas. Por supuesto, hoy en día algunos bots son lo suficientemente inteligentes, por lo que es posible que también necesites agregar CAPTCHA.

0

espero que esto ayuda a detectar la escritura & proteger el spam

<?php 
function isspam($text) 
{ 
$sfil[0] = "link"; 
$sfil[1] = "http"; 
$sfil[2] = "www"; 
$sfil[3] = "any slang"; 
$sfil[4] = "any word"; 
$sfil[5] = "any website"; 
$text = str_replace(" ", "", $text); 
$text = strtolower($text); 
for($i=0;$i<count($sfil);$i++) 
{ 

$nosf = substr_count($text,$sfil[$i]); 
if($nosf>0) 
{ 
return true; 
} 
} 

return false; 
} 
?> 

Create spam filter in PHP Details

Cuestiones relacionadas