プロ・クリエータの実践ウェブテクニック集

ログイン状態
お気軽にどうぞ、PCサポート。
         メール・Skype・リモート操作でサポートします。


検索ロボット(クローラ)の拒否とアクセス禁止

インターネットに於けるウェブサイトの目的は「コンテンツを世界中に公開する」ことにあります。
そういう意味では、基本的にいかなるアクセスも拒否すべきではありません。

しかしながら、検索サイトのクローラの中には "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" の書き方と設置

  1. 拒否したい "User-agent: Badbot" を、 "Disallow: /" (全てのファイル収集を拒否)にします。
    ※"#" は、コメント文であることを意味します。("//" は、コメント文に使えません)
    ※大文字小文字は区別しません。
     ただし、"User-agent:" と "Disallow:" の項目名については、最初の文字だけを大文字にしておいたほうが良いようです。
    ※一組ずつ必ず空白行を挟んで記述します。
  2. 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?
  3. 必ず、 "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/" へリダイレクトします。