Thu 1 Jun 2006
Wordpress 有個叫 spam karma2 的 plugin,好是好用,但是面對一天數百近千的 Trackback(TB) + Comment(CMT) 的 spams,想要在裏面把正常的 comment 挖出來,覺得真不是人該做的事情。
幫裏有人提倡「發正念除spam」,不過我想我的正念一定是不夠強,spams 不但未見減少,反而還有增加的趨勢,道消魔長,這種事情也不是第一天了。雖然最近有人「見證」說發正念可以連跑完的汽油都能加滿,不過我還是寧願回到技術面來解決這件事情。
在議事堂(?)詢問了一下「Spam karma2 可不可以在符合某種條件下就把 spam 砍掉?」得到的回答是不行。還好廖董提供了幾種方法來把這些有的沒的spam砍掉,也就是這篇《用 htaccess 擋 spam》。一用之下,的確少了很多 Trackback 的 spam。
但怪的是如果全部都用在綠島上,就是… 會慢一些。最終,我只用了廖董說的第一招 SpamHuntress:
<Files trackback> <Limit POST> SetEnvIf User-Agent "Mozilla" trackers SetEnvIf User-Agent ^$ trackers Order allow,deny Allow from all Deny from env=trackers </Limit> </Files>
光是如此,就已經少掉不少 spam。可是… 還是有些 Trackback spam 可以進來。查了一下 access.log,像這樣的 spam 還是會溜進來:
"POST /wp/2005/08/12/233/trackback/ HTTP/1.1" 200 16 "" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
因此回頭又去查了.htaccess的用法,本來想要用<LocationMatch>之類的東西來擋,無奈這類指令裡面不是不能在 htaccess 裡面用,就是裡面不可以包含 <Limit>這樣的東西。
(如果各位有可以直接寫在 htaccess的方法還請不吝告知,感謝)
想來想去,還是用 SpamHuntress 的想法,去修改 Wordpress。我在 wp-trackback.php 裡面加了一段 code:
(放在這兩行的後面:
// trackback is done by a POST
$request_array = ‘HTTP_POST_VARS’;
)
$my_TBspam_block_flag = false; if ( preg_match("/Mozilla/i",$_SERVER['HTTP_USER_AGENT'])) $my_TBspam_block_flag= true; if ( preg_match("/Opera/i",$_SERVER['HTTP_USER_AGENT'])) $my_TBspam_block_flag= true; if ( $_SERVER['HTTP_USER_AGENT'] = "" ) $my_TBspam_block_flag= true; if ($my_TBspam_block_flag && ($_SERVER['REQUEST_METHOD']=="POST") ) exit;
這樣就可以擋住前面說的狀況。
如果願意,可以把 my_TBspam_block_flag=true 的情況多加一些,像是 HTTP_USER_AGENT 是 “-” 的等等。不過現在這樣已經可以讓 TB spam 少去很多了。
萬一 spammers 如果用正常會看到的 trackback 的 HTTP_USER_AGENT 的話,那就真的是麻煩了。
One Response to “Wordpress: spam TB 別來了”
Comments
Trackbacks
- The Dukedom of Aberdeen 香港仔公國 » Blog Archive » 留言受襲
[...] 對付方法參考:Wordpress: spam TB 別來了 [...]