﻿# 介紹好用工具：Stop Forum Spam (有效阻擋垃圾訊息入侵)

我的部落格偶而會遭受廣告機器人攻擊，常常有一些奇怪的英文廣告被發表在文章的回應裡，每次看來源 IP 都是從美國/加拿大來的居多，我想大多是透過機器人自動攻擊的，由於時常要刪除這些廣告留言也覺得蠻煩的，上網找到一個 [Stop Forum Spam](http://www.stopforumspam.com/) 網站，這裡記錄了許多全世界到處在論壇散佈廣告訊息的 IP 位址、常用的帳號、Email 等，有趣的是來我這發表廣告的 IP 位址都會出現在這裡，此網站提供簡易的 API 方便透過程式整合，所以就寫了個小程式保護我的部落格留言機制。

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e968690d7ee3aea7b695-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/183f669084c310d7d78c-image.png)

若要透過線上的 API 查詢來源是否為惡意 IP 位址可以到 [https://www.stopforumspam.com/usage](https://www.stopforumspam.com/usage "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 類別](http://msdn.microsoft.com/zh-tw/library/system.net.webclient.aspx)撰寫的簡易程式碼：

```csharp
// 檢查是否為惡意 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);
    }
}
```

夠簡單吧，短短幾行就能保護網站免於廣告訊息的殘害。

**相關連結**

-   [Stop Forum Spam](http://www.stopforumspam.com/)
-   [WebClient 類別 (System.Net)](http://msdn.microsoft.com/zh-tw/library/system.net.webclient.aspx)
