2011-12-07 161 views
6

我正在尋找關於過濾垃圾郵件的方法的文章。當我搜索周圍的所有東西時,我一直在尋找的是Wordpress,如何過濾發誓的單詞等,這不是我正在尋找的。我正在尋找方法來編寫自己的過濾系統和最佳實踐。過濾評論垃圾郵件? PHP

以前任何人都可以獲得任何教程鏈接,不勝感激。

只有好文章,我可以迄今http://snook.ca/archives/other/effective_blog_comment_spam_blocker

回答

11

在編寫自己的方法時,必須使用啓發式的組合。

例如,垃圾評論有兩個或多個URL鏈接是很常見的。

我開始寫你的過濾器像這樣,使用的觸發字的字典,並讓它循環並用這些來確定概率:

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

注意,此方法會導致許多誤報,取決於你的單詞集;您可以讓您的站點「標誌」進行審覈(但立即生效),概率> .3和< .6的站點需要那些> .6和< .9進入審覈隊列(如果它們沒有出現直到被批准爲止),然後任何超過> 1的情況都被拒絕。

顯然,這些都是你必須調整閾值的所有值,但這應該從一個非常基本的系統開始。您可以添加到它的其他幾個預選賽增加/減少垃圾郵件的可能性,如檢查的不好的話來話的比例,改變詞的權重,等等

+1

等一下......你無法每次都爲每個單詞做一個strtolower($ text)。 – dynamic

+1

爲什麼不呢?這樣它就可以捕捉到大小寫變化。我們不會輸出新的小寫字符串,我們只是比較它並擺脫它。 – Tim

+0

除非你的意思是效率不好,否則,這只是一個概念的例子。 – Tim

1

您是否正在尋找一種方式來從機器人和這樣的阻止垃圾郵件?如果是這樣,你可以隨時添加一個驗證碼:http://en.wikipedia.org/wiki/CAPTCHA如果這是你正在做的事情,應該很容易地把任何項目。否則,我不確定您在過濾垃圾郵件方面所說的話。

+0

嘛驗證碼是一種方式,但它不會阻止人們誰手動編寫垃圾評論。真的,我正在尋找一個或多個可以發表評論並輸出垃圾郵件概率的函數。 –

+0

看起來不像你可以輕易做的事情。無論如何,預測人類創建的垃圾郵件就像發表評論一樣。如果他們花時間手動發送垃圾郵件,那麼他們會想方設法發送垃圾郵件。如果您發現垃圾郵件來自特定IP地址,則阻止這種情況的唯一方法可能是阻止某些IP。 – Hudspeth

+0

在我的問題中,我發佈了一種可以實現的方式,但我一直在尋找不同的系統/方法。因爲所謂的「硬核」評論垃圾郵件發送者,IP阻止不起作用,它將使用代理來反彈請求,因此,從長遠來看,阻止IP地址會使訪問者失去。 –

2

我很驚訝沒有人提到Akismet。我從來沒有標明錯誤的信息(無論是垃圾郵件還是合法的)。我的WordPress安裝附帶它。我所要做的就是擊中啓用。

0

我希望這個腳本幫助您檢測&保護垃圾郵件

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