検索ロボット(クローラ)拒否で負荷軽減

レンタルサーバーで、案外、負荷がかかりやすいのが検索ロボットです。
特に悪評高い「百度」(Baidu)は、やたらとサイト情報を採取しに来ます。
サイトの大きさに比例して「百度」(Baidu)のアクセス数も増えてくるのが知られています。
もし、あなたのサイトが、中国に一切関係ないのであれば、拒否するのも一つの案かもしれません。
特にWordPress,Joomla!などPHPで動的にページを作成する場合は、負荷の軽減が望まれるでしょう。

今回は、その方法を説明してみます。

robots.txtを使ったクロール拒否

普通のクローラは、robots.txtの設定に従ってくれます。

robots.txtには、以下の情報を設定します。
User-Agent:ユーザエージェント名
Disallow: 拒否するディレクトリ名

以下は、その設定例です。

1
2
3
4
5
6
7
8
User-Agent: Baiduspider
Disallow: /
User-Agent: Baiduspider+
Disallow: /
User-Agent: BaiduImagespider
Disallow: /
User-Agent: BaiduMobaider
Disallow: /
筆者は、この設定を行って、1週間経ちましたが、ユーザエージェントを変え、IPアドレスを変えながら、アクセスは、全く止まることはありませんでした。
つまり、「百度」(Baidu)は、表面的に従っているふりはしますが、全くアクセスを止めることはありません。残念ながら。 ;( 悲しすぎる・・・。

.htaccessを使ったクロール拒否

ある意味では、.htaccessを使える共有レンタルサーバーの環境では、最後の手段になります。

.htaccessファイルは、このファイルを置いたディレクトリとその配下のサブディレクトリのアクセス制限を設定することができます。
ほとんどの場合、httpd.confで設定できるディレクトリのアクセス制限が、そのまま、.htaccessファイルに記述することができます。

以下は、その設定例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# BEGIN crawler
SetEnvIf User-Agent "[Bb]aidu" deny_ref
SetEnvIf User-Agent "[Yy]eti" deny_ref
SetEnvIf Referer "^http://www\.baidu\.jp" deny_ref
SetEnvIf Referer "^http://www\.baidu\.com" deny_ref
SetEnvIf Referer "^http://help\.naver\.com" deny_ref
SetEnvIf Remote_Host "\.baidu\.jp" deny_ref
SetEnvIf Remote_Host "\.baidu\.com" deny_ref
SetEnvIf Remote_Host "\.hinet\.net" deny_ref
SetEnvIf Remote_Host "\.naver\.com" deny_ref
 
order allow,deny
allow from all
deny from env=deny_ref
 
##############
# robots.txt #
##############
<Files robots.txt>
    allow from all
</Files> 
# END crawler

SetEnvIf は、以降に記述する条件に一致した場合、env(グローバル変数のようなもの)に指定された値を設定します。

2行目は、 User-Agentの名前が、Baidu あるいは baidu を含んでいるならdeny_refenvに設定します。
3行目は、 User-Agentの名前が、Yeti あるいは yeti を含んでいるならdeny_refenvに設定します。
4行目は、 Refererの名前が、http://www.baidu.jpで始まる場合deny_refenvに設定します。
5行目は、 Refererの名前が、http://www.baidu.comで始まる場合deny_refenvに設定します。
6行目は、 Refererの名前が、http://help.naver.comで始まる場合deny_refenvに設定します。
— これは、NHN Corp.という「百度」(Baidu)とは異なりますが、韓国系の検索エンジンのクローラです。これまた、かなり頻繁にクロールしに来ます。ここで同じように拒否してみます。
7行目は、 Remote_Hostの名前が、baidu.jpドメインからのアクセスの場合deny_refenvに設定します。
8行目は、 Remote_Hostの名前が、baidu.comドメインからのアクセスの場合deny_refenvに設定します。
9行目は、 Remote_Hostの名前が、hinet.netドメインからのアクセスの場合deny_refenvに設定します。
12行目は、 ここからアクセス規制を許可(allow)、拒否で指定します。(deny)
13行目は、 まず、すべてのアクセスを許可します。
14行目は、 アクセスの中で、envdeny_refを設定されるようなアクセスの場合、そのアクセスを拒否します。
19-21行目は、 robots.txtファイルだけは、だれでもアクセスできるようにします。
通常、この設定を行うと拒否された情報が、エラーロギングへ設定されます。
また、通常のアクセスロギングには、403で拒否された情報が残ります。

[エラーロギング]

[Sat May 08 15:41:01 2010] [error] [client 119.63.198.26] client denied by server configuration: /var/www/html/wordpress/

[アクセスロギング]

119.63.198.26 - - [08/May/2010:15:41:01 +0900] "GET / HTTP/1.1" 403 214 "-" "Baiduspider+(+http://www.baidu.jp/spider/)"

この設定で、負荷が大きくてアクセスエラー(500,503)がでているような場合は、その頻度が減ると思います。
少なくとも筆者は、データベースアクセスエラーは、減りました。
どうしても共有レンタルサーバーの場合は、データベースへの同時接続できる数には、限界があります。「百度」(Baidu)などのクローラがデータベースへのアクセスリソースを占有してしまっている場合もあります。

一度、試されるのも有りだと思います。 (Y)

独自ドメインが使える格安レンタルサーバーなら


がおすすめです。
このお値段でMySQLもphpも動かせますから、とりあえず、自分のサイトを作ってみたい方には、おすすめです。

この記事を読んだ人は次の記事も読んでいます:

口コミ・評判

口コミ・評価を投稿 :

お名前 *

メールアドレス *
(口コミ・評価欄には、表示されませんが入力が必要です。)

サイトアドレス

phpとmysql が使えるおすすめ格安レンタルサーバーをご紹介します。もちろん、Joomla!,WordPress,Mobile Typeなどの有名なCMSも使える格安、割安感のあるレンタルサーバーを厳選して、比較紹介します。
新型コンピュータウィルス「JSRedir-R(通称:Gumblar・GENOウィルス)」の亜種が、2009年末より猛威を振るっており、 現在もウィルスによって、FTP接続パスワードが抜き取られる事象が多発しております。

このサイトでは、ランキング情報には、すべてのレンタルサーバーの情報が表示されますが、 おすすめ情報には、SFTP/FTPSに対応していないレンタルサーバーをおすすめはしないようにしております。
お気に入り(BookMark) : はてなdel.icio.usLivedoor ClipYahoo!FC2Nifty ClipPOOKMARK. AirlinesBuzzurl(バザール)Choixnewsing















サーバー1年目総額最安値

※1年目総額とは、初期設定費用+月額使用料1年分の総額です。

ドメイン1年目最安値

※1年目最安値とは、新規登録料金1年契約料金の最安値です。