我很喜歡 Jalenack 的 AJAX Shoutbox, 但是Spammer快把我搞瘋, 我不管換什麼版本, 裝了Bad Behavior, 這些Spam從沒有遠離過我, 當然Ellen也是受害者.
我一直觀察這些Spammer的行為, 從早期沒有Referer, 到後來會隨機挑一個你的頁面來當Referer, 在.htaccess或是httpd.conf裡頭檔Referer只是暫時止痛, 隔幾個小時Spammer又會再度出現, 好好的快樂小字報被Spam淹沒實在是一件很糟糕的事情.
我想過把SecureImage掛到Shoutbox上, 可能是我對WordPress的coding style不瞭解, 加上一直也沒專心去看, 所以一直找不到頭緒, 今天下午趁著等fsck的時間試著裝新版的Wordspew跟Bad Behavior, 結果沒隔幾個小時, Spam又來了.
這會兒我怒了!!
愛因斯坦說: 「忍無可忍就無須再忍!」, 所以我改寫了一部份, 首先是讓Wordspew能記錄ip, 然後提供一個額外的table去記錄spammer ip, 當你發現你的Wordspew中出現了spam, 只要簡單的在管理介面按下”Spam”按鈕, 就可以把該死的Spam跟他該死的IP給丟進黑名單中, 然後你再也不用煩惱這個IP的Spammer了.
缺點是: 必須看到就殺, 殺久了Spam就會越來越少.
注意事項是, 若你原本就有Wordspew的Table, 看是要手動自己加上欄位, 或是清掉重新安裝一次都可以. 以下是建table用的SQL
CREATE TABLE `wp_liveshoutbox` (
`id` mediumint(7) NOT NULL auto_increment,
`time` bigint(11) NOT NULL default ‘0’,
`name` tinytext NOT NULL,
`text` text NOT NULL,
`url` text NOT NULL,
`ipaddr` varchar(16) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `wp_liveshoutbox_spam` (
`ipaddr` varchar(16) NOT NULL,
`lastupdate` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
UNIQUE KEY `ipaddr` (`ipaddr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
希望對大家有幫助, 有抓回去用的留個Comment通知一下吧! 當然有問題也歡迎發問.
[…] 繼上一篇改寫過後, 相繼檔掉了一些Spammer’s IP, 但是慢慢發現了幾個小困擾. 首先是一個人收集Spammer’s IP很緩慢, 以為已經檔掉了大多數的Spammer, 但是可能過幾天又跑出一些, 這是第一個問題; 第二個問題是, 我”管理”的Word Press其實有兩份, 每次都要下指令把我這邊的Spammer’s IP跟Ellen的做Sync就覺得很煩人, 所以才有了這個版本的誕生. […]
[…] 分類於 Life — roidtw @ 09:14 加上了 nekobe 前輩的 patch, 雖然我不認識你, […]