Blogot - 旅とF1と車と男の嗜み

旅とF1と車と男の嗜みをテーマとした後藤康成のブログ。

訪れたユーザーの足跡を解析する

僕が、Japan.Internet.com 連載中の新シリーズ「訪れたユーザーの足跡を解析する」を blogot でも紹介します。

WWW にアクセスするためのしくみである HTTP プロトコルと Web サーバーに残されるアクセスログのしくみについて見てみいきましょう。多くのアクセス解析ソフトウェアはこのアクセスログから Web サイトを訪れたユーザーの足跡を探っていきます。

■WWWの歴史

まずはじめに WWW (World Wide Web) の歴史を振り返るとともに、みなさんお馴染みのブラウザで URL を入力する際の"http://" のルーツを見ていきましょう。

WWW は CERN (セルン:ヨーロッパ原子核研究機関)の論文閲覧システムとして開発したものが原点となっています。CERN の研究者達は、それまでは統一されていなかった報告書のフォーマットを統一し研究報告書を書き上げました。この研究報告書のフォーマットが HTML (Hypertext Markup Language) であり、この HTML を簡単に入手できるしくみが URI (Uniform Resource Identifiers) および HTTP (Hypertext Transfar Protocol) です。

CERN の物理学者 Tim Berners-Lee が WWW を提案したのが1989年3月であり、その時に HTTP や HTML の原型もできました。それらを広めたのは 1993年2月にイリノイ大学の NCSA(国立スーパーコンピュータ応用センター)が発表した Mosaic と呼ばれる Web ブラウザでした。

HTTP はバージョン 0.9から一般に公開されており、その後 1.0, 1.1 と辿ってきています。HTTP/1.0 は RFC 1945 で定義され、HTTP/1.1 は RFC 2616 で定義されています。ここでは、最新の HTTP/1.1 仕様に基づき説明します。なお、RFC (Request For Comments) についてはメール配送の仕組み(2)で説明しています。

■簡単HTTP

HTTP プロトコルは、HTTP クライアントソフトウェアから Web サーバーへの「リクエスト」と、「レスポンス」に対する Web サーバーからの「レスポンス」の送受信によって成立しています。

リクエストを送信する HTTP クライアントソフトウェアはユーザーエージェントと呼ばれます。ユーザーエージェントとして最もよく知られるプログラムは Microsoft Internet ExplorerNetscape 等の Web ブラウザや、サーチエンジン等が利用しているロボットやクローラーです。Web ブラウザは、HTTP サーバーに対してリクエストとして URL を送信しレスポンスとして返される HTML を HTML の言語仕様に基づき表示します。

ご存じ Web ページを表示するための言語である HTML は、この HTTP を通じて Web サーバーからブラウザに送られるわけです。

■足跡を追う仕組み

HTTP プロトコルについては多くの書籍や Web サイトで紹介されていますので、ここではHTMLをブラウザに表示させるための基本的なリクエストとレスポンスの仕組みを簡単に見ていきましょう。

リクエストは Request-Line と request-header から呼ばれる情報の単位から構成され、必要に応じて message-body が付加されます。

Request-Line は Method、Request-URI、HTTP-Version で構成され、静的な Web ページを表示する場合は Method に"GET"を指定します。

requeat-header には Host、User-Agent、Referer などの情報が格納されます。

Host はリクエストする Web サイトのホスト名とポート番号が格納されます。Host の後にポート番号の情報が無ければ、暗黙的にリクエストされるサービスのデフォルトポート (すなわち HTTP URL の場合は"80" です) を使用することを意味します。

User-Agent にはブラウザからのリクエストの場合、ブラウザを識別する文字列が含まれます。

Google ロボットの User-Agent】

Googlebot/2.1 (+http://www.googlebot.com/bot.html

Microsoft Internet Explorer の User-Agent】

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Referer参照元の Web サイトを示します。すなわちリンクされている元の URL(URI) 情報を格納します。リンクではなくブラウザにて URL を入力した場合やメールに記載されている URL を入力した場合、 Referer はリクエストに含まれません。

例えば、melpod の製品紹介ページ "http://www.melpod.com/product/Product.html"にリクエストをする場合は以下のようになります。

GET /product/Product.html HTTP/1.1

Host: www.melpod.com

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

それではメール配送の仕組み(2)で説明した telnet コマンドを使って実際にリクエストとレスポンスを確認してみましょう。例として melpod のトップページである "http://www.melpod.com" にリクエストを送信してみます。

$ telnet www.melpod.com 80

Trying 192.168.0.25...

Connected to www.melpod.com.

Escape character is ’^]’.

GET / HTTP/1.1 <-入力後 Enter

host: www.melpod.com <-入力後 Enter

User-Agent: Tera Term <-入力後 Enterを2回

HTTP/1.1 200 OK <-ここからレスポンスが表示されます

Date: Tue, 11 Nov 2003 06:26:23 GMT

P3P: policyref="http://www.melpod.com/p3p/w3c/user.xml", CP="NOI CURa ADMa DEVaTAIa OUR DELa BUS IND ONL UNI PUR COM NAV STA"

Last-Modified: Fri, 07 Nov 2003 08:17:05 GMT

ETag: "6880d9-b670-3fab5501"

Accept-Ranges: bytes

Content-Length: 46704

Content-Type: text/html

この後には message-body(HTML 本文)が表示されますが省略します。

Connection closed by foreign host.

さて、上記のリクエストに対して、Web サーバーのアクセスログファイルを覗いてみると User-Agent に"Tera Term" が残っています。

2003/11/11 15:27:16 192.168.0.25 - - "GET / HTTP/1.1" 200 46704 "-" "Tera Term"

また、今回のテーマはレスポンスは大きく関係しませんが、レスポンスについて簡単に触れておきますと、レスポンスはリクエストに対する Web サーバーの処理状態を示す Status-Line と general-header, responce-header などの情報および HTML 本文などの message-body から構成されます。

このように ブラウザ(ユーザーエージェント)からのリクエストを、サイトを訪れるユーザーの足跡として Web サーバーのアクセスログファイルに保存しておくことによりサイトのアクセス解析に利用できます。現在多くのアクセス解析を行うパッケージソフトウェアや Web での ASP サービスは、このアクセスログを基に様々なグラフィカルな解析情報を表示しています。次回はこのアクセスログの内容と解析にについて詳しく説明します。

*1 Apache Jakarta Project

http://jakarta.apache.org/

インターネットテクノロジー探訪