ボットを見分けるには(見分けやすいボット)
アクセスの中からボットを見分けるために、まず最初に注目すべきなのはそのユーザーエージェント情報です。第3回でも触れたように、多くのボットは独自らのユーザーエージェント情報を送ってくるので、それを使って、ブラウザかボットかを見分けることができます。
代表的なものが検索エンジンのクローラーです。第3回前編、第3回後編でも紹介していますが、もう一度見ておきましょう。
- Google Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- Yahoo! Mozilla/5.0 (compatible; Yahoo! Slurp/3.0;http://help.yahoo.com/help/us/ysearch/slurp)
- Bing msnbot/2.0b (+http://search.msn.com/msnbot.htm)
- Baidu Baiduspider+ (+http://www.baidu.jp/spider/)
- NAVER Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)
これらのクローラーは、基本的に「Googlebot」や「Slurp」と言った特定のキーワードが含まれていますし、自分が何者か、と言うことを記したURLも記述されています。これらの情報を調べれば、何を目的としたアクセスなのか、ということもわかります。
もちろん、検索エンジンの勢力はどんどんと変化していますし、送信してくるユーザーエージェント情報も常に同じであるとは限りません。
また、特にモバイル検索向けのユーザーエージェントは、サイトのキャリア判別に適切に判断してもらって目的のページをクロールするため、携帯機種のユーザーエージェント情報をベースにしたものになっています。
しかし、携帯の機種は変化が激しいため、ユーザーエージェント情報も適宜アップデートされたり、新しい機種をベースにしたものが登場したりしています。例えばGoogleのモバイル検索向けのクローラーは、Nokiaとdocomoの機種類似のものが多いのですが、ほかにもBlackBerryをベースにしたものなども存在しています。
そのほかにも、ユーザーエージェント情報から、明らかにブラウザではないことがわかるアクセスもたくさんあります。その代表的なものは、各種プログラム言語で標準的に使われているWebページ取得用機能ライブラリのユーザーエージェントです。まずは例を示します。
- Perl libwww-perl/5.833
- Java Java/1.6.0_17
- Python Python-urllib/2.6
誰かがあなたのページの内容をスクレイプしたいと思ったとき、つまりWebページにアクセスしてそのデータを取得して、そこからデータを抽出して利用したいと考えた場合に、こうしたユーザーエージェントでアクセスが行われる場合があります(もちろんこうしたユーザーエージェントが残ることが、必ずしもそういったケースとは限りません。例えば、ユーザーエージェントをほかの名前に変えている場合もあります)。
例えば、ある天気予報サイトに掲載されている、ある地域の天気情報を毎時間取得して、それを自分のメールアドレスに送るプログラムを書いた人がいたとします。するとそのプログラムは、毎時間その天気予報サイトの特定のURLに自動的にアクセスしてHTMLのデータを取得して、その中から目的の情報を取得するようなものになるでしょう。
その結果、そのページのアクセスログには毎時間そのプログラムからのアクセスのログが残ります。こうしたスクレイプを行うプログラムは、世の中にあるプログラミング言語では簡単に書くことができます。
なぜなら、現在存在するプログラム言語のほとんどは、URLを指定してWebページにアクセスし、その内容を取ってくるという機能があらかじめ用意されているからです。
そして、そうした機能を利用した場合、ユーザーエージェントをプログラムの中で指定すれば、そのユーザーエージェント名が使われますが、何も指定しなかった場合はそれぞれの標準のユーザーエージェント名が使われるのです。こうしたユーザーエージェント情報でのアクセスは、ほぼ間違いなくブラウザでのアクセスではありません。
ちなみに世の中にはボットもブラウザも非常にたくさんあるので、見ただけでは見分けづらい場合もあります。
そういったときに便利な情報源としてBots vs Browsersというサイトがあります。これはさまざまなユーザーエージェント情報を収集しているサイトで、41万ものユーザーエージェント情報が「ボットかどうか」という情報と共に掲載されているので、知らないユーザーエージェント情報があったら、調べてみるとよいでしょう。
また、ユーザーエージェント以外にも、ボットを見分ける方法があります。それはIPアドレスです。
例えば、モバイル検索向けのクローラーは、基本的にどのIPアドレスからアクセスが行われるかということは、それぞれの検索サイト上で公開されています。これは、多くのモバイルサイトがIPアドレスで実際の携帯電話以外のアクセスをブロックしているためで、クローラーを特別視してブロックを解除してもらうためにこうしたことをしているわけですが、その情報はアクセス解析にも利用できます。
ただし、IPアドレスを公開しているようなボットはほぼ間違いなくユーザーエージェント情報からも判断ができるほか、そうしたIP公開は「ボットがそのIPからアクセスをする」ことを述べているだけで、その「IPからのアクセスが全てボットである」という保証はありません。
こういう方法が使える場合もある、というくらいに覚えておいた方がよいかもしれません。むしろIPアドレスでの判断は、次回解説する見分けづらいボットの判断で有効な方法です。