[WordPress Plugin] NoSpamNX 阻擋機器人發送廣告、垃圾留言的最佳利器

分類: 技術分享 作者: daniel

8 4 月 2009

部落格似乎已經成為現代人的基本配備;如同手機、Email 一般,與大家的生活密不可分。不論是紀錄生活點滴、抒發個人情緒或是交流最新的知識技術,透過部落格這樣的平台,任何人都可以發表對不同人事物的各種觀點與看法;而身為 Web 2.0 時代中最發燒的新星,與網路上其他使用者互動的要素當然絕對不能少!對部落格作者發表文章的回應,或是針對作者個人的留言,透過這些方式,達到社群分享的最終目的。

然而因為部落格的興起,訊息交流的便利,一些我們不需要的廣告與垃圾留言就開始充斥在部落格中;各個部落格平台無不絞盡腦汁,使出各種招數,跟這些沒有生命的廣告機器人大鬥法,因此演生出 CAPTCHA 這種辨識機器人與真人的驗證碼模式。但是「道高一呎,魔高一丈」,很快的新的廣告機器人學會了如何識別簡單的驗證碼,導致後期的驗證碼愈來愈希奇古怪;弄得廣告機器人沒阻擋成功,一般真正想要參予討論,交流經驗的使用者,看到這些五花八門的驗證碼後反而打起退堂鼓。這不是因噎廢食嗎?

WordPress 這個廣受歡迎而且開放原始碼的部落格平台,當然也有碰到廣告機器人肆虐的問題;同時他也知道 CAPTCHA 對使用者造成的不便。所以廣大網海中的許多前輩們(鄉民?)就為他開發了許多便利的外掛程式。其中 NoSpamNX 就是一種不需要透過 CAPTCHA,卻同樣達到有效阻擋廣告機器人的外掛程式!

NoSpamNX 其實就是 Yawasp 的最新版,之前曾經因為 Neo 的介紹而研究過這一個外掛程式。Yawasp 主要的運作方式,是透過動態更換留言樣表單中,輸入框的欄位名稱,讓廣告機器人找不到固定的欄位填值,使其無法成功留言。不過因為這個外掛程式會修改到留言樣版的原始碼,可能會造成某些非官方的樣板模組發生問題,所以作者在改版成 NoSpamNX 後,採用另外一種方式;在留言區塊的 </textarea> 之後,增加二個隱藏欄位,名稱與值皆使用 MD5 編碼,同時故意將其中一個欄位的數值留空(因為廣告機器人通常會將所有欄位值填滿),當作判斷時的陷阱;這二個欄位的順序也會隨機更換。

nospamnx949

經過以下五個步驟判斷,準確辨識是否為廣告機器人;同時將疑似廣告機器人的 IP,加入黑名單中:

1. 檢查 ip 是否在黑名單中;在黑名單中=機器人
2. 檢查 POST 過來的資料中,是否有 'nospamnx-1' 產生的 MD5 Name;不存在=機器人
3. 檢查 POST 過來的 'nospamnx-1' MD5 Name,其值是否為零;不為零=機器人
4. 檢查 POST 過來的資料中,是否有 'nospamnx-2' 產生的 MD5 Name;不存在=機器人
5. 檢查 POST 過來的 'nospamnx-2' MD5 Name,其值是否為 'nospamnx-2' MD5 Value;不相等=機器人

如此一來,就可以達到不使用 CAPTCHA,同時又能辨識廣告機器人的目的,雖然對於「真人」的廣告、垃圾留言發送還是無法百分之百的排除,不過應該可以阻擋大部分的無生命機器人。適當的利用各種外掛程式,就可以得到乾淨的版面,與友善的使用者輸入介面,真的要感謝熱心的網路上的前輩們囉!

參考資料:NoSpamNX 阻擋SPAM機器人與廣告、垃圾留言(WordPress外掛)

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。