用 Apache 拒絕網路流氓的騷擾

Google, Yahoo 的搜尋引擎之所以可以搜尋到很多資料,是因為他們時時刻刻都派著 “robot” 在網路上巡邏,Google 的叫 googlebot, MSN 叫 msnbot, Yahoo! 叫 Yahoo Slurp 等等,任務就是捉新的網頁或更新的網頁回去資料中心. 為了隱私之類的原因,國際組織訂有規則,規範 robot 的行為 — 基本上是 robot 要先參考網站根目錄的一個 robots.txt 的檔案,內容寫著 robot 的名稱及禁止捉取的目錄或檔案,例如:

User-agent: abc
Disallow: /not_for_abc/
User-agent: *
Disallow: /secret/

意思是禁止 abc 這個 robot 捉 /not_for_abc/ 目錄,及禁止所有的 robots 捉 /secret/ 目錄. 網站管理者理論上可以將不喜歡的 robot,或是禁止 robot 捉取的目錄或檔案,寫在這個檔案中.

但是這個只防君子不防小人,碰到網路流氓就沒轍了,有些搜尋引擎的 robot 根本不看網站的 robots.txt,就一路抓下去,實在另人髮指. 網路流氓是什麼,就是這些不遵守遊戲規則,到處亂捉別人網站的內容的壞蛋,這樣會造成網站的流量增加,也就是費用的增加,或是不想被搜尋的資料也被捉走了,侵犯網站的隱私. 很可惡是吧. 下面是幾個例子:
iaskspider 是「愛問」屬於中國新浪網的 robot,完全不管 robots.txt

60.28.164.87 - - [06/Jan/2007:06:28:47 +0800] "GET /wp/archives/2005/08/13/12/46/48/ HTTP/1.0" 200 20969 "-" "Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)"
60.28.164.87 - - [06/Jan/2007:06:29:34 +0800] "GET /wp/archives/2005/08/13/21/28/00/ HTTP/1.0" 200 19601 "-" "Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)"
60.28.164.87 - - [06/Jan/2007:06:31:45 +0800] "GET /wp/archives/2005/07/06/22/47/17/ HTTP/1.0" 200 39200 "-" "Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)"

QihooBot,也是來自中國的「奇虎網」,也是垃圾一個,浪費一堆頻寬,來源 IP 有很多個:

220.181.34.162 - - [03/Jan/2007:11:36:27 +0800] "GET /wp/feed/ HTTP/1.1" 200 21947 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.170 - - [03/Jan/2007:11:38:14 +0800] "GET /wp/archives/2006/12/ HTTP/1.1" 200 5373 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"
220.181.34.177 - - [03/Jan/2007:11:38:30 +0800] "GET /wp/archives/category/childtalking/ HTTP/1.1" 200 6554 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)"

另有 larbin,iearthworm,yodaoice,lanshanbot,Outfoxbot 等等一堆,到網路上徵信一下,這些通通不是什麼好東西,還有一個 WebClipping.com 不知是好人壞人…

碰到這種網路流氓,說實在的也沒什麼積極的辦法,不能叫網路警察把它捉起來...不過消極的辦法還是有的,把網站門戶看好 — Apache 可以擋住特定 IP,但因為 robots 大多有多重 IP,過濾壞蛋的姓名比較有效,可以用 BrowserMatchNoCase 來過濾,用法像是:


Order allow,deny
Allow from all
BrowserMatchNoCase "iaskspider" badguy
BrowserMatchNoCase "QihooBot" badguy
BrowserMatchNoCase "larbin" badguy
deny from env=badguy


如此,它們就會收到 Apache 丟回 403 碼:Forbidden

但是,有些更沒品的還會隱姓埋名,不敢用真面目見人的…

(Visited 8,291 times, 1 visits today)

別人也看了:

Apache 防制 DoS 攻擊的 mod_dosevasive 模組 吃燒餅沒有不掉芝麻的,而開網站的沒有不被攻擊的... 奇怪了,世界上還真多無聊人士,吃飽就想如何攻擊別人的網站,不知道是什麼心態. 一種常見的攻擊是貼廣告或是莫名其妙的留言,這些都是要廣告特定的 UR...
使用 cronolog 作 Apache log 的分割處理 使用 Apache, 它的 log 檔 default 是叫 access.log, 是一個連續且不斷長大的檔案, 只要 log 不是關閉狀態, 凡是用戶連向你的網站, 就會有像這樣的一筆記在 log...
Apache log 分割處理用的 mod_log_rotate 今天是 2006 最後一天,新年快樂! 以前提過使用 cronolog 作 Apache log 的分割處理,它是使用外部的程式去分割,但是今天在測試 Apache 2.2.3 的時候發現問題,...
Apache2 使用 mod_deflate 增進傳輸效能 在前篇提過使用 mod_gzip 增進傳輸效能,但似乎有些地方有問題,如果加上mod_gzip_item_include mime application/x-httpd-php,照理說應該會把 ph...
Apache2 與 php5 / php4 安裝 本 WordPress 的 blog 之前已經由 IIS 換成 Win32 Apache, 今天又把 php 4.3 換成 php 5, 記錄一下修改的地方, 其實也蠻簡單的. 自己架設部落格的伺服器...
分享:

“用 Apache 拒絕網路流氓的騷擾” 有 7 則迴響.

  1. 我也試過各種不同的方法,mod_rewrite、php preload… 可是發現不管什麼法方,都是難練易破(童子功?)所以現在只擋幾個惡性重大的了。專心擋垃圾和盜連圖檔的就算了。

  2. 擋有名字的當然是有效了。我是用 mod_rewrite 來擋,還可以用 grep,一行擋一群。 🙂 只是有的根本沒名字,或是三不五時換,這個名單就愈來愈長…Apache 比對這些東西也不是不要錢的。

    偷圖的是最討厭了。偷我們的作品還用我的頻寬。現在都在我的 404 ErrorDocument 裡把它們轉去看「有趣」的圖。哈哈。

  3. 看看我們網站這個月前6名搜尋網站的流量,可怕喔!
    BaiDuSpider –1.92 GB
    Unknown robot (identified by ‘spider’) –7.41 GB
    Inktomi Slurp –5.74 GB
    Googlebot — 1.29 GB
    Google AdSense –530.33 MB
    Unknown robot (identified by ‘robot’) –154.19 MB
    MSNBot — 148.81 MB

發表迴響