WordPress 如何有效攔截和過濾垃圾迴響

WordPress垃圾迴響一直都是比較煩人的,如果你沒有采用有效的攔截方式,你會發現,僅僅一天時間,你的WordPress站點就會有數以萬計的垃圾迴響!那麼,如何有效地攔截過濾垃圾迴響?

spam-comments-wpdaxue_com

之前已經介紹瞭不少方法,一起回顧一下:

WordPress代碼將垃圾迴響拒之門外

這是一直在用的方法,可以過濾絕大多數垃圾迴響,當然,是不是會有幾個漏網之魚,推薦使用。

WordPress自動拒絕包含特定關鍵詞的垃圾迴響

WordPress防垃圾迴響外掛:Akismet

Akismet雖然很強大,效果很好,但是會寫入很多數據庫信息,而且很好 CPU 資源,所以很早前就不用瞭。

WordPress 迴響過濾外掛:wp-itluren-comment-filter

WordPress垃圾迴響過濾可以以昵稱 IP 郵箱 網址 內容片斷為根據指定迴響人員黑名單,並阻止他們提交迴響。同時,迴響次數超過設定的范圍就會暫時禁止迴響。當然,還將全英文、全部復制文章內容作為內容的迴響進行過濾。最後為瞭安全起見,還提供瞭禁止特定IP用戶訪問站點!

WordPress 驗證碼外掛:SI CAPTCHA Anti-Spam

WordPress 文章迴響滑動解鎖外掛:myQaptcha

使用驗證碼過濾迴響也是一種不錯的方法,但是不太利於用戶體驗。

由於絕大多數的垃圾迴響都是英文的,所以國內不少朋友在使用 Some Chinese Please 外掛,它可以有效地攔截內容中不帶有中文字的comment和trackback(pingback),不寫入數據庫中,可有效地減小spam對blog服務器的無謂使用。雖然已經 2 年多沒有更新,但還是可用的。

其實還可以簡化下,直接將下面的代碼添加到主題的 functions.php 文件,效果與使用 Some Chinese Please 外掛相同:

1
2
3
4
5
6
7
8
9
/* refused spam */  
function refused_spam_comments( $comment_data ) {  
$pattern = '/[一-龥]/u';  
if(!preg_match($pattern,$comment_data['comment_content'])) {  
err('迴響必須含中文!');  
}  
return( $comment_data );  
}  
add_filter('preprocess_comment','refused_spam_comments');

/* refused spam */
function refused_spam_comments( $comment_data ) {
$pattern = ‘/[一-龥]/u’;
if(!preg_match($pattern,$comment_data[‘comment_content’])) {
err(‘迴響必須含中文!’);
}
return( $comment_data );
}
add_filter(‘preprocess_comment’,’refused_spam_comments’);

源代碼:http://www.kuqin.com/zhanz/20120326/319460.html,原代碼使用wp_die函數顯示錯誤HTML信息,會造成模版錯位,由 @知更鳥 http://zmingcx.com/refused-spam.html 稍改進。

@Teddysun http://teddysun.com/ 經過實測反饋,Wordpress中並沒有err這個函數(這個函數也許是存在於 @知更鳥 的主題裡)。因此不會有提示信息出現。最好還是用wp_die函數,這樣就會有提示信息。所以,上面的代碼如果不生效,可以使用以下代碼:

1
2
3
4
5
6
7
8
9
/* refused spam */  
function refused_spam_comments( $comment_data ) {  
$pattern = '/[一-龥]/u';  
if(!preg_match($pattern,$comment_data['comment_content'])) {  
wp_die('迴響必須含中文!');  
}  
return( $comment_data );  
}  
add_filter('preprocess_comment','refused_spam_comments');

/* refused spam */
function refused_spam_comments( $comment_data ) {
$pattern = ‘/[一-龥]/u’;
if(!preg_match($pattern,$comment_data[‘comment_content’])) {
wp_die(‘迴響必須含中文!’);
}
return( $comment_data );
}
add_filter(‘preprocess_comment’,’refused_spam_comments’);

方法進階:WordPress迴響中禁止或必須包含指定內容

針對那些使用技術手段,比如GET、POST等方式不填寫前臺表單,直接讀取後臺程式文件的spam,隻有屏蔽IP才能緩解瘋狗一樣的攻勢,其它什麼驗證碼、滑動解鎖等等都沒用。

可以在.htaccess文件中添加:

1
2
3
Order Deny,Allow  
Deny from xxx.xxx.xxx.xx  
Deny from xxx.xxx.xxx.xx

Order Deny,Allow
Deny from xxx.xxx.xxx.xx
Deny from xxx.xxx.xxx.xx

禁止某些IP訪問。

好瞭,希望本文能為你提供幫助,如果你還知道其他更有效的方法,歡迎和我們一起分享!

發佈留言