かんたんアクセス解析〔自作CGI/Perlによるアクセス解析方法‐ログ取得~保存~集計〕

JavaScriptで取得できる情報
●リンク元URL
document.referrer
〔リンク元URLから得られる情報〕
リンク元サイト・検索エンジン・検索キーワード
●画面解像度
screen.width screen.height
モニター画面の縦横のサイズ
●画面の色数
screen.colorDepth
何色表示できるか
●滞在時間
Loadされた時間とUnloadされた時間から計算
CGI(Perl)で取得できる情報
●ユーザーエージェント
$ENV{'HTTP_USER_AGENT'}
〔ユーザーエージェントから得られる情報〕
OS・ブラウザ・携帯電話の機種名
●IPアドレス
$ENV{'REMOTE_ADDR'}
〔IPアドレスから得られる情報〕
リモートホスト
〔リモートホストから得られる情報〕
プロバイダ・回線種別・組織(会社・学校・等)・接続元の国
●言語
$ENV{'HTTP_ACCEPT_LANGUAGE'}
〔言語から得られる情報〕
何語が読めるか
●訪問者数
CGIが実行されるごとにカウント(+1)することで訪問者数を計算(アクセスカウンター)
●訪問日時
年・月・日・分・秒・曜日
〔訪問日時から得られる情報〕
時間帯アクセス数・曜日別アクセス数
クッキーで取得できる情報
●訪問回数
クッキーから訪問回数を読み取り、1を加え、またクッキーに保存
〔訪問回数から得られる情報〕
訪問回数・初訪問者数
●前回訪問日時
クッキーに訪問日時を保存し、次回訪問の際に取得
〔前回訪問日時から得られる情報〕
再訪問の期間・重複除外アクセス数
●初回訪問日時
クッキーに初回訪問の日時を保存
〔初回訪問日時から得られる情報〕
初回訪問からの期間
JavaScriptを使った
アクセス解析の特徴
●JavaScriptを使ったアクセス解析では画面の解像度や色数を取得することができます。
画面の解像度と色数はJavaScriptを使わないと取得不可能です。
●JavaScriptに対応しないブラウザでのアクセスも記録できます。
リンク元・解像度・色数は取得できませんが、 <noscript><img … ></noscript>によってアクセスは記録されます。
●CGIの$ENV{'HTTP_REFERER'}ではリンク元は取得できません。
JavaScriptで書き出された<img>タグによってCGIが実行されるため、 CGIのリンク元はアクセス解析をしているページ自体になります。
●画像非表示設定のブラウザでのアクセスは記録できません。
検索エンジンの巡回ロボットのほとんどが画像を表示しません。 巡回ロボットのアクセスを解析したい場合には不向きです。
このエントリーをはてなブックマークに追加
①アクセス解析するページに画像を表示するJavaScriptを追加
<script type="text/javascript">
<!--
	url	= "log.cgi";
	url	+= "?w=" + screen.width;
	url	+= "&h=" + screen.height;
	url	+= "&color=" + screen.colorDepth;
	url	+= "&referer=" + document.referrer;
	document.write('<img src="', url, '">');
//-->
</script>
<noscript><img src="log.cgi"></noscript>
このJavaScriptをアクセス解析したいページ内に追加します。 追加した部分に④で作成する画像が表示されます。 画像を表示させたい部分に追加してください。

≪このJavaScriptの役割≫
リンク元URL解像度色数等を取得。
取得した情報を②で作成するCGIのURLにつなぎ合わせます。
■<img>タグを書き出す。
この<img>タグは、②で作成するCGIを実行し、画像を表示します。 その際、CGIに取得したリンク元URL・解像度・色数を送ります。
<img src="URL?w=解像度(横)&h=解像度(縦)&color=色数&referer=リンク元">の形式で書き出されます。
※JavaScriptに対応していないブラウザでの訪問の場合、リンク元URL・解像度・色数は取得できません。 この場合<noscript>タグ中の<img>タグによってCGIが実行されます。
※リンク元URL・解像度・色数・等を必要としない場合、このJavaScriptは必要ありません。 <img src="log.cgi">のみ追加します。

②アクセスログを保存するCGIを作成
≪このCGIの役割≫
■①のJavaScriptで取得したリンク元URL・解像度・色数の情報を受け取る。
送られてきた情報(フォームデータ)を分割します。
■クッキーから訪問回数前回訪問日時初回訪問日時等を取得。
前回訪問時に保存したクッキーデータを取得します。 訪問回数には1を加えます。
※クッキーに対応していないブラウザでの訪問の場合、クッキーデータは取得できません。 クッキーの有効期限を過ぎてしまった場合やユーザーによって削除された場合もクッキーデータは取得できません。
■クッキーに訪問回数・訪問日時・初回訪問日時・等を保存。
次回訪問時に利用するクッキーデータを保存します。
■アクセスログ保存ファイルから訪問者数を取得。
訪問者数(アクセスカウンター)に1を加えます。
※訪問者数を別ファイルに保存の場合は、訪問者数を読み込み、1を加え保存します。
日付時刻を取得。
timeを取得し、年・月・日・時・分・秒に変換します。
ユーザーエージェントIPアドレス言語等を取得。
環境変数%ENVから取得します。
■③で作成するファイルに取得した情報を保存。
取得した情報を集計・解析しやすい形式に加工し保存します。
■④で作成する画像を表示。
<img>によって画像を出力します。
③アクセスログを保存するファイルを作成
アクセスログ保存用の空のファイルを作成。
②で作成したCGIがこのファイルにアクセスログを記録します。 そして、⑤で作成するCGIがこのファイルのアクセスログを集計します。
④アクセスログ取得後に表示する画像を作成
この画像は②のCGIがアクセスログ取得後に表示します。
※目立たない1px×1pxの画像や透明の画像等でも可能。
※ホームページ内に使用中の画像(タイトル画像等)でも可能です。 その場合は画像を表示している位置に①のJavaScriptを追加します。
⑤アクセスログを集計・解析するCGIを作成
このCGIでアクセスログを集計・解析します。
■日別訪問者数
日付(月と日)を集計。
■月別訪問者数
月を集計。
■曜日別訪問者数
曜日を集計。
■時間帯訪問者数
時間のみを集計。
※日付ごとの時間帯訪問者数を集計する場合は、月・日・時間を合わせて集計。
■重複除外訪問者数
訪問日時と前回訪問日時の日付が異なるログのみを集計。
■初訪問者数
前回訪問日時のないログのみを集計。
■最訪問までの期間
訪問日時と前回訪問日時の差を集計。
■平均滞在時間
滞在時間を集計し平均を計算。
■OS
ユーザーエージェントに含まれるOSの情報を取得し集計。
■ブラウザ
ユーザーエージェントに含まれるブラウザの情報を取得し集計。
■リモートホスト
IPアドレスから取得し集計。
■プロバイダー
リモートホストに含まれるプロバイダーの情報を取得し集計。
■回線種別
リモートホストに含まれる回線種別の情報を取得し集計。
■都道府県
リモートホストに含まれる都道府県の情報を取得し集計。
■組織(会社・学校・等)
リモートホストに含まれる組織の情報を取得し集計。
■リンク元サイト別訪問者数
リンク元URLを集計。
■お気に入り(ブックマーク)からの訪問者数
リンク元URLがない場合のみを集計。
※この集計結果にはリンク元不明も含まれてしまいます。
■検索エンジンからの訪問者数
リンク元URLに検索エンジンのURLが含まれる場合のみを集計。
■検索に使用されたキーワード
検索エンジンからのリンク元URLに含まれるキーワードを抜き出す。
■検索エンジンの巡回ロボット訪問日時
ユーザーエージェントまたはIPアドレスから検索エンジン(Google、Yahoo、MSN等)の巡回ロボットを特定。

※他にもさまざまな集計・解析をすることができます。 それぞれのホームページに必要な情報を集計するCGIを作成してください。
⑥作成したファイルをアップロード
①~⑤で作成したファイルをアップロードします
アップロードが完了するとアクセスログの取得が開始され、 ⑤で作成したCGIでアクセス解析ができるようになります。
かんたんアクセス解析〔自作CGI/Perlによるアクセス解析方法‐ログ取得~保存~集計〕