複数ページを記録できるアクセス解析CGIです 。ダミーイメージを使ってCGIを起動することが可能なため、SSIを使用できないページのログも取れるのが特徴。 他のCGIからの呼び出しも可能です。最大の特徴は、それぞれのページが どんな風に見られてるかアクセスパターンを分析できることです。
特徴 |
利用規定 |
変更履歴 |
必要ファイル |
ディレクトリ構成 |
CGI設置 |
CGI変更 |
既存ページの変更 |
セキュリティについて |
サンプル |
ダウンロード (lzhファイル 40KByte) |
戻る |
◆特徴◆利用規定Perlのみで記述されているため、sh、C言語などが利用できない個人のホームページへの設置・運用が可能。(perl5でかかれています。perl4では動作しません) 同一IPからの一定時間内のアクセスをまとめて記録。複数ページにまたがった閲覧記録が取れます。(セッションの判定に、クッキーは使用していません。利用者のIPアドレスが一致し、アクセス時刻が近接している場合に、同一セッションでのアクセスと判断して集計します。) 一度設置してしまえば、記録したいページにダミー画像を貼り付けるだけでOKです。(ダミー画像を貼り付けるためにHTMLを書き換える必要があります。) 別のプロバイダに別室を設けている場合や、ホームページとCGIが別ディレクトリに分かれている場合でも、ダミー画像を使用してすべてのページの総合的な記録をとることができます。(少なくともひとつはCGIの実行できるディレクトリ/サーバーが必要です。不明の場合、契約しているプロバイダにお問い合わせください。) 記録ファイルはCSV形式なので、ダウンロードしてExel等で利用可能。(CSV形式: 各データがカンマで区切られたテキストファイル。Excelなどの表計算ソフトで読み込み、編集、印刷することができます。 ) ◆変更履歴フリーウェアです。著作権は放棄しておりません。個人・法人問わず、ご自由にお使いいただけます。 スクリプトの再配布は、原則禁止いたします。ご相談ください。 スクリプトの改造は自由ですが、改造後の再配布はご遠慮ください。 コピーライト(著作権表示)は削除・改変しないでください。 当スクリプトの利用により、何らかの問題が発生しても、当方ではいっさい責任を持ちません。
- Ver1.01b
2001/09/09 個別データ表示・エラー記録削除確認表示への移行時のバグ修正。
2001/09/01 プロセス停止時のロックファイル残留対策。- Ver1.01
2001/05/15 個別データ一覧表示機能。
2001/05/14 ファイル読込時にも自己アクセス・URL除外検査。
2001/04/30 記録されていない項目は非表示に。
2001/04/30 滞留時間10分以上は従来の1分刻みから10分刻み表示に変更。
2001/04/30 曜日別アクセス表示バグ修正。
2001/04/21 記録データ日時・1日平均アクセス数表示付加。- Ver1.00
2001/04/16 公開、配布開始。- Ver1.0β
2001/03/22 解析表示公開試験開始。
2001/03/06 Ver1.0β ログ記録試験開始。- Ver1.0α
2001/02/12 サーバー試験開始。
以下のファイルが必要になります。設定の仕方は 後述します。
ファイル名 内容 パーミッション accdata/ 記録ディレクトリ 707 access.csv 記録データ(空のファイルです) 606 lock2.dat ロックファイル(記録データへの多重書込みを防止するためのファイル) 606 index.html ダミーHTML(ディレクトリの中身を他人に見られないため) 604 access/ 実行ディレクトリ 705 accimg.cgi 記録(&ダミーイメージ出力)CGI 705 accview.cgi 記録表示CGI 705 accgate.cgi パスワード入力CGI 705 jumper.cgi 記録表示CGIからリンク元にジャンプするためのCGI 705 config.pl 各種オプション設定ファイル(パスワードの設定などは、この中にあります) 604 access.pl 記録ルーチン 604 accviewsub.pl HTML&パスワード関連ルーチン 604 jcode.pl 日本語コード変換ルーチン(Kazumasa Utashiro氏によるスクリプト。最新版は、 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ から入手できます。) 604 index.html ダミーHTML(ディレクトリの中身を他人に見られないため) 604 bar1.gif 記録表示CGI用棒グラフ(横)画像(サンプル) ......デフォルト設定では使用しません 604 bar1v.gif 記録表示CGI用棒グラフ(縦)画像(サンプル) ......デフォルト設定では使用しません 604 ※パーミッションについて
上記のパーミッションの3桁の数値は全て真中の桁が「0」になっていますが、 サーバーによっては下二桁を最下位の数字にそろえる(例えば「705」と書いてあるものは「755」にする)必要がある場合があります。専門的にいうと、CGIが「group」のパーミッションで起動される(ホームページ設置者と同じグループIDをホームページを訪問した人に割り当てる)サーバーが該当します。
圧縮ファイルを解凍すると、以下のディレクトリ構造が出来るはずです。FTPソフトを使って、この構成のままサーバーにアップロードするようにしてください。◆CGI設置cgi-bin(ディレクトリ) | |----accdata(ディレクトリ) | | | |----access.csv | | | |----index.html | | | |----lock2.dat | | |----access(ディレクトリ) | |----access.pl | |----accgate.cgi | |----accimg.cgi | |----accview.cgi | |----accviewsub.pl | |----bar1.gif | |----bar1v.gif | |----config.pl | |----index.html | |----jcode.pl | |----jumper.cgi◆CGI変更「accview.cgi」・「accgate.cgi」・「accimg.cgi」・「jumper.cgi」の1行目のPerlのパスをプロバイダにあわせて書き換えてください。 メモ帳(Notepad.exe)などのテキストエディタで書き換えます。プロバイダの設置案内を見ると、「#!/usr/bin/perl」とか,「#!/usr/loca/bin/perl」とかいうような、Perlのパスが書いてあると思います。そのパスにあわせて1行目を書き換えます。不明の場合は、プロバイダのサポート窓口にお問い合わせください。 GIFファイル(画像ファイル)以外のファイルはすべてアスキー(テキスト)モードでアップロードして下さい。 GIFファイル(画像ファイル)は、バイナリモードでアップロードして下さい。 ファイル名はすべて半角、アルファベットは小文字です。 上記「必要ファイル」の表を参考にして、各ファイルのパーミッションを設定して下さい。 次に、記録を残したい既存ページを改造するわけですが、その前に、うまく動作しているか確認します。ブラウザで「http://.../access/accview.cgi」を表示してみてください。(config.plで各種設定を書き換える前に行ってください。) 「http://.../access/accview.cgi」の動作が正常であることを確認したら、 記録を残したいページを改造して、アップロードしてください。 以上で、運用開始です。改造した既存ページをブラウザでアクセスしたあと、ブラウザで「http://.../access/accview.cgi」を表示して、うまく記録されていることを確認してください。 基本的に、Perlのパス以外は設定不要のはずですが、お好みに合わせ、多少の設定が比較的楽に変更できます。主な設定は 「config.pl」に入っています。メモ帳(Notepad.exe) などのテキストエディタで必要な箇所を編集します。編集が必要な箇所は 、ファイルの中に書いています。 変更の仕方を間違えると動作しなくなる恐れがありますし、「config.pl」を変更しなくとも、動作するはずですので、まず、設置して、しばらく運用してみて、すべて正常に動作することを確認したあと、「config.pl」を変更することをお奨めします。(ただし、設置時に上記ディレクトリ構成を変えた場合は、「config.pl」の該当個所をかえる必要があります。当初はディレクトリ構成を変えず設置することをお奨めします。)
このCGIは単体では役に立ちません。記録をとりたいページにCGIを呼び出す行を追加する必要があります。といっても、HTMLファイルにダミーの画像を貼り付けるだけで簡単に呼び出せます。
- 方法1: いちばん簡単な方法
以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。
<IMG src="cgi-bin/access/accimg.cgi?id=INDEX&img=1">
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。その場合、以下の例のようにかなり長くなります。
<IMG src="http://www02.so-net.ne.jp/~foo/cgi-bin/access/accimg.cgi?id=INDEX&img=1">
そのページがアクセスされたとき、緑字で書いてある単語が記録されます。「accview.cgi」でアクセス解析を表示するとき、「あしあと」として表示される単語です。 重複しないようにそれぞれのページで異なる単語を指定してください。出来るだけ短く分りやすい単語を指定した方がアクセス解析が見やすくなります。半角のアルファベットと数字以外は使わないほうが無難でしょう。最後の「img=1」というのは、そこに画像を表示するための指定です。(AshiatoLOG Ver0.xx では、画像ファイルを指定しましたが、Ver1.0からは不要になりました。)
サイズ1x1の透明GIF画像が表示されるため、実際は目に見えません。方法3の方が優れていますが、先に方法1で動作を確認することをお奨めします。
- 方法2: SSIを使う場合
※削除※
(サンプルはありますが、この方法は設置に技術的に難しい問題がある割には、利点が少ないため、設置方法の説明は削除いたしました。)- 方法3: より詳しい情報を記録したい場合
方法1ではリンク元の記録が出来ません。これをJavaScriptで記録します。また、Ver.1.00から追加された解像度の集計にもJavaScriptが必要です。方法1で動作を確認できたら、方法3を使う事をお奨めします。
以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。閲覧者のブラウザがJavaScriptを使用可能な場合、リンク元の記録と画面解像度の記録も行われます。
<script language="JavaScript">
似たようなことを二回書いているように見えますが、上の<script...で始まるほうが、JavaScriptをつかえるブラウザ用の設定、下の<noscript>で始まるほうがJavaScriptをつかえない(または禁止している)ブラウザの設定です。
<!--document.write("<IMG src='cgi-bin/access/accimg.cgi?id=INDEX&img=1&scr=", screen.width, "x", screen.height, "x", screen.colorDepth, "&ref=", escape(document.referrer), "' border=0>");
//-->
</script>
<noscript><IMG src="cgi-bin/access/accimg.cgi?id=INDEX&img=1&ref=noScript">
</noscript>以下、詳しくは方法1を参照してください。
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。
緑字で書いてある単語が、そのページのアクセス時に記録されます。
- 注意:画像タグ「<IMG src=〜>」は、以下の例のように、改行せずに一行で書いてください。(上の例では、方法1 、方法3ともに、見易さの為、ブラウザのウィンドウ幅で改行が入っています。)
document.write("<IMG src='cgi-bin/access/accimg.cgi?id=INDEX&img=1&scr=", screen.width, "x", screen.height, "x", screen.colorDepth, "&ref=", escape(document.referrer), "' border=0>");方法4: (参考まで) CGIからの呼び出し 自作CGIから呼び出す場合は、以下のようにします。
#!/usr/local/bin/perl##### ライブラリ指定
require '~/cgi-bin/access/config.pl';
require '~/cgi-bin/access/access.pl';#### アクセス集計ファイル更新
$acclog = new AshiatoFile('~/cgi-bin/accdata/', $wrfile, $errfile, $lockfile, 300, 5, $maxlog, $intime, $updatetm);
$acclog->appendAccFile('CGINAME', $ENV{'HTTP_REFERER'});
赤字が、記録ディレクトリの指定です。
そして 緑字が記録される単語です。適宜変更してください。
(青字は順に、ロックファイルが残留しているとみなす時間[300秒]、ファイルロックされていた場合のリトライ回数[5回]です。特に変更する必要は無いと思います。)
◆セキュリティについて(アクセスデータの秘匿)1) アクセス記録をしていることの秘匿
まず、ここで解説している設置方法では、アクセス記録をとっていることを完全に秘匿することは出来ないことを確認したいと思います。HTMLソースを見れば、CGIが起動していることは明らか(方法2を除く)ですので、CGIを設置できる程度の知識がある人に隠しとおすことは出来ません。ただ、いちいち確認する人はごく少数でしょうし、それによって訪問者の閲覧行動が変化することはあまり考えられないとは思いますが。
2) アクセスデータの秘匿
アクセス記録をとる事自体はともかく、訪問者の了解なしに記録データが公開されるとなると問題がある場合も考えられます。(たとえば、会社のパソコンから就業時間中に仕事と無関係のサイトにアクセスしていた事がAshiatoLOGの記録を見た上司にばれるとか!? ...会社にもアクセス記録があるはずですから、良い例ではないですね。)
商用サイトなら、そのサイトのアクセス頻度等の情報が競合他社や顧客・スポンサーに知られてしまうという弊害もあるでしょう。
- AshiatoLOGには閲覧パスワードを設定できます。
「config.pl」ファイルの以下の行を設定してください。$gatewd = 'ABCD123'; #閲覧パスワード!上記例で、'ABCD123'と書いてあるところにあなただけのパスワードを書いてください。その際、大切なパスワードとは異なるものを設定してください。不正侵入者(ハッカー/クラッカー)の目標になる可能性があります。
- AshiatoLOGには閲覧パスワードを設定できますが、それで完全に記録データが秘匿できるわけではありません。
より安全に記録データを隠す為には、記録データが保存されている「accdata」ディレクトリ(フォルダ)の名前を変えることをお奨めします。名前を書き換えた際は、「config.pl」の以下の設定もそれにあわせて書き換えてください。$wrdir = '../accdata/'; #記録ディレクトリ!(設定を間違うと動作しなくなります。最初の設置に成功した後、正常動作していることを十分検証してから行ってください。)※注:「.htaccess」によるアクセス制限の知識がある方は、「acccdata」ディレクトリー名を書きかえるよりは、「.htaccess」を設定する方が良いかもしれません。 「acccdata」ディレクトリー名の書きかえと「.htaccess」の設定の両方をやっておくのも良いでしょう。
(「.htaccess」が使用可能か否かは、サーバーの設定に依存します。)
- サーバーによっては、訪問者が「config.pl」をアクセスするのを許してしまうものが少数ながらあります。それでは、パスワードを設定しようが、記録ディレクトリを変えようが、全てばれてしまうので無意味です。(プロバイダのユーザーサポートに連絡して対処してもらった方が良いかもしれません。)
その場合は、「config.pl」の名前も変えてしまいましょう。その際、「access」ディレクトリーにある拡張子「.cgi」のファイル全て(「accgate.cgi」、「accimg.cgi」、「accview.cgi」、「jumper.cgi」)のそれぞれの冒頭近くにある以下の行もあわせて変更してください。
require "config.pl";
(設定を間違うと動作しなくなります。最初の設置に成功した後、正常動作していることを十分検証してから行ってください。)
ご意見・ご質問・ご要望はこちらまで。