我的部落格偶而會遭受廣告機器人攻擊,常常有一些奇怪的英文廣告被發表在文章的回應裡,每次看來源 IP 都是從美國/加拿大來的居多,我想大多是透過機器人自動攻擊的,由於時常要刪除這些廣告留言也覺得蠻煩的,上網找到一個 Stop Forum Spam 網站,這裡記錄了許多全世界到處在論壇散佈廣告訊息的 IP 位址、常用的帳號、Email 等,有趣的是來我這發表廣告的 IP 位址都會出現在這裡,此網站提供簡易的 API 方便透過程式整合,所以就寫了個小程式保護我的部落格留言機制。
若要透過線上的 API 查詢來源是否為惡意 IP 位址可以到 http://www.stopforumspam.com/apis 查詢 API 的用法,你只要簡單的透過 HTTP GET 就可以取回一個 XML 內容,內容格式如下:
<response success="true">
<type>ip</type>
<appears>yes</appears>
<lastseen>2007-09-18 05:48:53</lastseen>
<frequency>2</frequency>
</response>
只要收到的資料的 appears 標籤內容為 yes 就代表這個 IP 可能是廣告 IP 來源,就可以進一步阻擋該 IP 留言的動作,以下是我利用 WebClient 類別撰寫的簡易程式碼:
// 檢查是否為惡意 IP
using(System.Net.WebClient wc = new System.Net.WebClient())
{
string strXML = wc.DownloadString(
"http://www.stopforumspam.com/api?ip=" + Request.UserHostAddress);
if (strXML.Contains(@"<appears>yes</appears>"))
{
Response.Redirect(Post.RelativeLink.ToString(), true);
}
}
夠簡單吧,短短幾行就能保護網站免於廣告訊息的殘害。
相關連結