我正在尋找關於過濾垃圾郵件的方法的文章。當我搜索周圍的所有東西時,我一直在尋找的是Wordpress,如何過濾發誓的單詞等,這不是我正在尋找的。我正在尋找方法來編寫自己的過濾系統和最佳實踐。過濾評論垃圾郵件? PHP
以前任何人都可以獲得任何教程鏈接,不勝感激。
只有好文章,我可以迄今http://snook.ca/archives/other/effective_blog_comment_spam_blocker
我正在尋找關於過濾垃圾郵件的方法的文章。當我搜索周圍的所有東西時,我一直在尋找的是Wordpress,如何過濾發誓的單詞等,這不是我正在尋找的。我正在尋找方法來編寫自己的過濾系統和最佳實踐。過濾評論垃圾郵件? PHP
以前任何人都可以獲得任何教程鏈接,不勝感激。
只有好文章,我可以迄今http://snook.ca/archives/other/effective_blog_comment_spam_blocker
在編寫自己的方法時,必須使用啓發式的組合。
例如,垃圾評論有兩個或多個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的情況都被拒絕。
顯然,這些都是你必須調整閾值的所有值,但這應該從一個非常基本的系統開始。您可以添加到它的其他幾個預選賽增加/減少垃圾郵件的可能性,如檢查的不好的話來話的比例,改變詞的權重,等等
您是否正在尋找一種方式來從機器人和這樣的阻止垃圾郵件?如果是這樣,你可以隨時添加一個驗證碼:http://en.wikipedia.org/wiki/CAPTCHA如果這是你正在做的事情,應該很容易地把任何項目。否則,我不確定您在過濾垃圾郵件方面所說的話。
嘛驗證碼是一種方式,但它不會阻止人們誰手動編寫垃圾評論。真的,我正在尋找一個或多個可以發表評論並輸出垃圾郵件概率的函數。 –
看起來不像你可以輕易做的事情。無論如何,預測人類創建的垃圾郵件就像發表評論一樣。如果他們花時間手動發送垃圾郵件,那麼他們會想方設法發送垃圾郵件。如果您發現垃圾郵件來自特定IP地址,則阻止這種情況的唯一方法可能是阻止某些IP。 – Hudspeth
在我的問題中,我發佈了一種可以實現的方式,但我一直在尋找不同的系統/方法。因爲所謂的「硬核」評論垃圾郵件發送者,IP阻止不起作用,它將使用代理來反彈請求,因此,從長遠來看,阻止IP地址會使訪問者失去。 –
這裏是另一個很好的教程有關處理垃圾郵件,有修建垃圾...:
How To Stop Manual Comment Spammers
這裏是一個很好的相似,所以問題的鏈接:
non-captcha methods for blocking spam on my comments
希望這有助於。
考慮實現驗證碼 - 這裏有一個鏈接 - http://www.google.com/recaptcha 和 http://code.google.com/apis/recaptcha/docs/php.html
我很驚訝沒有人提到Akismet。我從來沒有標明錯誤的信息(無論是垃圾郵件還是合法的)。我的WordPress安裝附帶它。我所要做的就是擊中啓用。
你可以看看在B8垃圾郵件過濾器:http://nasauber.de/opensource/b8/
我想這篇文章The war with spam comment可以給你一些提示。當然,現在有些機器人足夠聰明,所以你可能還需要添加驗證碼。
我希望這個腳本幫助您檢測&保護垃圾郵件
<?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;
}
?>
等一下......你無法每次都爲每個單詞做一個strtolower($ text)。 – dynamic
爲什麼不呢?這樣它就可以捕捉到大小寫變化。我們不會輸出新的小寫字符串,我們只是比較它並擺脫它。 – Tim
除非你的意思是效率不好,否則,這只是一個概念的例子。 – Tim