検索ロボット(クローラ)の拒否とアクセス禁止
インターネットに於けるウェブサイトの目的は「コンテンツを世界中に公開する」ことにあります。
そういう意味では、基本的にいかなるアクセスも拒否すべきではありません。
しかしながら、検索サイトのクローラの中には "robots.txt" を遵守しなかったり、短時間にアクセスを集中して相手のサーバに対して多大の負担を掛けるものが存在します。
此処では、"robots.txt" と ".htaccess" を併用して、悪質クローラの拒否とアクセス禁止を効率的に実現してみます。
問題のあるクローラ一覧
Nationality |
User-Agent |
Name |
URL |
概要 |
robots.txt |
問題点 |
USA |
ia_archiver |
Alexa |
alexa.com |
サイトのアーカイブ。 過去のページを収集・保存しているサイト。 |
遵守 |
非公開ページへのアクセス。
ia_archiver
|
China |
Baiduspider |
百度 |
www.baidu.com www.baidu.jp |
中国最大の検索サイト。 |
一部遵守 |
robots.txt 無視。短時間に大量アクセス。
Baiduspider
御詫びと対処法? 17.Mar.2007
依然として robots.txt 無視、短時間に大量アクセス 24.Mar.2008
|
China |
BaiduImagespider |
百度 |
www.baidu.com www.baidu.jp |
中国最大の検索サイトの画像収集ロボット。 |
一部遵守 |
robots.txt 無視。短時間に大量アクセス。
baidu アクセス
|
China |
yodaobot |
有道 |
www.yodao.com |
中国の検索サイト。 |
遵守 |
短時間に大量アクセス。
yodaobot
|
Koria |
NaverBot |
Naver |
www.naver.com |
韓国の検索サイト。 |
一部遵守 |
短時間に大量アクセス。Googlebot の名称を偽装(GoogleBot)。
NaverBot
~26/Mar/2007 停止?
現在も活動中。 06/Apr/2008
|
Koria |
Yeti |
Naver |
www.naver.com |
韓国の検索サイト。 |
一部遵守? |
短時間に大量アクセス。NaverBot から名称変更。 29/Mar/2007
Yeti Naver
|
robots.txt で拒否する
クローラは、一番最初に "/robots.txt" を見に行くルールになっています。
従って、拒否したいクローラがあれば、先ずこのファイルに記述します。
"/robots.txt" を無視する(または無視する可能性のある)クローラも敢えて此処に記述しておきます。
そうすることによって、".htaccess" によるアクセス禁止が効率良く実行され、またサーバの負荷を必要最小限に押さえることが出来ます。
*注 どのクローラを拒否するかは、ご自分のサイトのアクセス情報を良く分析して、ご自分の判断で行ってください。
"robots.txt" の書き方と設置
-
拒否したい "User-agent: Badbot" を、 "Disallow: /" (全てのファイル収集を拒否)にします。
※"#" は、コメント文であることを意味します。("//" は、コメント文に使えません)
※大文字小文字は区別しません。
ただし、"User-agent:" と "Disallow:" の項目名については、最初の文字だけを大文字にしておいたほうが良いようです。
※一組ずつ必ず空白行を挟んで記述します。
User-agent: ia_archiver
Disallow: /
#USA Alexa : alexa.com/
User-agent: Baiduspider
Disallow: /
#China Baidu : www.baidu.com, www.baidu.jp
User-agent: BaiduImagespider
Disallow: /
#China Baidu : www.baidu.com, www.baidu.jp
User-agent: yodaobot
Disallow: /
#China Yodao : www.yodao.com
User-agent: Yeti
Disallow: /
#Korea Naver : www.naver.com 29/Mar/2007~
User-agent: NaverBot
Disallow: /
#Korea Naver : www.naver.com ~26/Mar/2007?
-
必ず、 "robots.txt" の名称でサイトの root 直下に置きます。
ディレクトリを意識して書けば、 "/robots.txt" となります。
【参照】
The Web Robots Pages :
http://www.robotstxt.org/
robots.txt チェックツール :
http://tool.motoricerca.info/robots-checker.phtml
.htaccess によるアクセス制限
"robots.txt" の設置が完了したら、それを無視するクローラのアクセスを禁止します。
◇特定のクローラに対して、 "robots.txt" 以外のアクセスを禁止する
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC, OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider [NC, OR]
RewriteCond %{HTTP_USER_AGENT} yodaobot [NC, OR]
RewriteCond %{HTTP_USER_AGENT} NaverBot [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Yeti [NC]
RewriteRule !^robots\.txt$ - [F]
RewriteEngine off
この処理によって、悪意のあるクローラを効率的に禁止することができます。
※ "\" は、日本語環境では半角の円マーク(¥)です。
※ ".htaccess" によるアクセス制限の詳細は、
URL の書き換え Rewrite
を参考にしてください。
「防御だけでは飽き足らない!! 一矢報いたい!? かと言ってSPAM行為はしたくないし、、、」
という方は、「究極のロボット対策 ミラー防御」をどうぞ。
.htaccess による究極のロボット対策 ミラー防御
特定のクローラに対して、 "robots.txt" 以外のアクセスを跳ね返します。
-
"robots.txt" を除く、全てのアクセスを相手のサイトに跳ね返します。
※おろかな行為を自覚してくれるかもしれません。
-
更に、ステータスコードを "R=301" にしておくと、「自分のサイト」にURL変更します。
※自爆攻撃が始まるかもしれません。
*注
必ず先に、 "robots.txt" でそのクローラの収集作業を拒否しておいて下さい。
なぜなら、そのクローラが「ロボット法」?を遵守する紳士的なクローラであれば、この "RewriteRule" が適用されずに済みますから。
*注
同じクローラに迷惑をこうむっている、不特定多数の被害者がこの設定をしたら、いかに大手の検索サイトと言えども、サーバダウンしてしまうかもしれません。
くれぐれも、悪意の転用はしないでください。
基本的な書式
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Badbot [NC]
RewriteRule !^robots\.txt$ http://www.bad.com/ [R=301,L]
RewriteEngine off
【解説】 "HTTP_USER_AGENT" に、 "Badbot" の文字(文字の大小を区別しない)を含むリクエストに対して、 "robots.txt" 以外のアクセスを全て "http://www.bad.com/" へリダイレクトし、ファイルが永久に移転したことを通知します。
Baid(中国・百度)のクローラからのアクセスを跳ね返す
RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider [NC]
RewriteRule !^robots\.txt$ http://www.baidu.jp/ [R=301,L]
【解説】百度のクローラ、 "Baiduspider" と "BaiduImagespider"(画像収集)に対して、 "robots.txt" 以外のアクセスを全て "http://www.baidu.jp/" へリダイレクトします。
Naver(韓国)のクローラからのアクセスを跳ね返す
RewriteCond %{HTTP_USER_AGENT} NaverBot [NC,OR] # ~26/Mar/2007?
RewriteCond %{HTTP_USER_AGENT} Yeti [NC] # 29/Mar/2007~
RewriteRule !^robots\.txt$ http://www.naver.com/ [R=301,L]
【解説】Naver のクローラ、 "NaverBot" と "Yeti" に対して、 "robots.txt" 以外のアクセスを全て "http://www.naver.com/" へリダイレクトします。