アクセス解析作ろうYO!

第四回 『ログデータの取得(サーバースクリプト)』

さてさて。今回はサーバーサイドで動くスクリプトのお話。 データは主に『環境変数』という仕組みから取得します。 「環境変数」とはスクリプトからリクエストして サーバーやブラウザがレスポンスとして返す値。

環境変数のキーワードはある程度決まっていて、 プログラム言語に依存しないちょっと変わった仕組みです。 例えばUA(ブラウザ)を知りたい時はPerlでもPHPでも 「HTTP_USER_AGENT」というキーワードで取得します。 自分が知る限り30種類以上有るんですが、 アクセス解析に使うのは少ないです。

【サーバーサイドスクリプトで取得出来る主なデータ】

【OS&UA (HTTP_USER_AGENT)】

まず、OSとUAですね。これは先述の通り環境変数「HTTP_USER_AGENT」 で取得します。といっても取得データをそのままだと以下の例の如く くっついた文字列になっています。

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

この文字列を一定の法則に従って分割し(正規表現といいます)、 OSとUAを判定するわけです。「Windows」という文字が含まれていれば OSは「Windows」、「MSIE」という文字が含まれていればUAは「IE」という感じです。 その後に続く文字列、数字を判別しバージョンも判定可能です。

【IPアドレス&リモートホスト(REMOTE_ADDR)】

まず、IPアドレスは環境変数「REMOTE_ADDR」で取得するだけ。 値をそのまま使用出来ます。で次にリモートホスト。 環境変数「REMOTE_HOST」から取得出来ます、 この情報からアクセスした人の利用しているISPが分かります。

リモートホストの取得に関してはもう一つ方法があります。 「REMOTE_ADDR」で取得したIPアドレスを スクリプトでリモートホストに変換して取得する方法です。 最近のISPは「REMOTE_HOST」の値を返さないところが多いし、 IPアドレスはほぼ確実に取得出来ますので、こっちの方が無難です。

【検索語】

検索語はJavaScriptで取得したリファラ(リンク元)を解析し取得します。 まず、検索エンジンからアクセスしてきた場合、 リファラのURLになにやら暗号のような英数字の文字列が付いてきます。 実はこの部分が検索語。

英語の検索語の場合はそのままの文字列になるんですが、 日本語(2バイト文字)の検索語の場合、文字化け回避の為にある法則に従って 英数字に変換(URLエンコード)してるんです。

検索語はこの英数字の部分を正規表現で切り出し、 日本語に復元(URLデコード)し、 さらに検索エンジン毎にバラバラな文字コードを統一(変換) してよーやく取得出来ます。

【アクセス時刻】

アクセス時刻は現在時刻を使用します。サーバーのローカル時刻でもいいんですが、 海外サーバーを利用する可能性も視野に入れて、 グリニッジ標準時から日本時間を算出する方がいいと思います。 時刻は後で加工しやすいように日付(年/月/日)、曜日、時間(時:分:秒) と3つに分けて保存する事をお勧めします(好みの問題ですけどね)。

<< 第三回     目次     第五回 >>