2011-12-07 10 views
6

Sto cercando articoli su come filtrare lo spam. Quando cerco in giro tutto quello che continuo a trovare è Wordpress, modi per filtrare parolacce ecc. Che non è quello che sto cercando. Sto cercando modi per scrivere il tuo sistema di filtri e le migliori pratiche.Filtro commento Spam? PHP

Qualsiasi link di tutorial da parte di chiunque lo abbia già fatto, sarebbe apprezzato.

solo buon articolo che posso finora è http://snook.ca/archives/other/effective_blog_comment_spam_blocker

risposta

11

Quando si scrive il proprio metodo, è necessario utilizzare una combinazione di euristica.

Ad esempio, è molto comune che i commenti spam contengano 2 o più collegamenti URL.

mi piacerebbe cominciare a scrivere il filtro in questo modo, usando un dizionario di parole grilletto e lo hanno loop through e usare quelli per determinare la probabilità:

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; 
} 

Nota che questo metodo si tradurrà in molti falsi positivi, a seconda del set di parole; potresti avere il tuo sito "flag" per la moderazione (ma diventa disponibile immediatamente) quelli con probabilità> .3 e < .6, hanno bisogno di quelli> .6 e < .9 inserire una coda per la moderazione (dove non appaiono fino all'approvazione), quindi qualsiasi cosa oltre> 1 viene semplicemente rifiutata.

Ovviamente questi sono tutti i valori che dovrete modificare le soglie, ma questo dovrebbe iniziare con un sistema piuttosto semplice. È possibile aggiungere ad esso diverse altre qualificazioni per aumentare/diminuire la probabilità di spam, come ad esempio il controllo del rapporto di cattive parole con le parole, cambiando i pesi di parole, ecc

+1

aspetta un attimo ... non puoi fare ogni volta un testo strtol ($) per ogni parola. – dynamic

+1

Perché no? In questo modo prende le variazioni sul caso. Non stiamo emettendo la nuova stringa minuscola, la stiamo solo confrontando e eliminandola. – Tim

+0

A meno che non si intenda dire che l'efficienza è negativa, che sì, lo è, questo è solo un esempio di concetto. – Tim

1

Siete alla ricerca di un modo per fermare lo spam da bot e come? Se è così puoi sempre aggiungere un CAPTCHA: http://en.wikipedia.org/wiki/CAPTCHA Dovrebbe essere abbastanza facile da mettere su qualsiasi progetto se questo è quello che stai cercando di fare. Altrimenti non sono sicuro di cosa stai dicendo in termini di filtraggio dello spam.

+0

Beh un captcha è un modo, ma non si fermerà le persone che scrivono manualmente commenti spam. In realtà, sto cercando una funzione o funzioni che potrebbero richiedere un commento e generare una probabilità di spam. –

+0

Non sembra qualcosa che potresti facilmente fare. Prevedere lo spam creato dall'uomo è come postare comunque un commento. Se si prendono il tempo di inviarti spam manualmente, troveranno comunque dei modi per inviarti spam. L'unico blocco a qualcosa di simile potrebbe essere un blocco IP se si nota che lo spam proviene da determinati indirizzi IP. – Hudspeth

+0

Nella mia domanda ho pubblicato un modo per ottenerlo, ma stavo cercando diversi sistemi/metodi. Il blocco IP non è efficace in quanto i cosiddetti spammer "hardcore" di commento, utilizzeranno i proxy per rimbalzare le richieste, quindi il blocco degli indirizzi IP, a lungo termine, perderà i visitatori. –

2

Sono sorpreso che nessuno abbia menzionato Akismet. Non ho mai avuto un messaggio contrassegnato come sbagliato (sia esso spam o legit). La mia installazione di WordPress è stata inclusa. Tutto quello che dovevo fare era abilitare.

0

Credo che questo articolo The war with spam comment può dare qualche suggerimento. Ovviamente oggigiorno alcuni robot sono abbastanza intelligenti, quindi potrebbe essere necessario aggiungere anche CAPTCHA.

0

Spero che questo aiuto lo script di rilevare lo spam & proteggere

<?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