CJ Club TOP / CGI Script / CounterScript / ReverseAccess
ReverseAccess
リバースアクセス
目次
- どこのWebサイトから自分のWebサイトに訪れたかを集計し、ランキング形式で表示します。
どこから訪れている人が多いか知ることで、今後のWebサイト運営に役立てることができるかも。
また、ランキング形式で表示することにより、多くのアクセスを提供してくださるサイトのリンクを一番目立つ位置におくことができます。
さらに、相互のサイトに設置することにより、それぞれのサイトへのユーザの流れが活発になることも期待できます。
 - 一定期間でログをフォーマットします。 (任意の日数が設定可能)
ずーっとランキングを取得していると、トップが固定になってしまうことになりますが、一定の期間でフォーマットすることで、多くのサイトに高順位を提供することができます。
また、前回順位を保存することにより、どこのサイトからのアクセスが増減しているかが一目でわかります。
 - マッチングURL機能による複数のURLからのまとめが可能です。
同じサイトでも複数のURLからのアクセスがあったり、する場合でもマッチングURL機能を使えばひとつのURL(例えばトップページのURL)にまとめることができます。
マッチングURLを登録した瞬間から、ひとつのURLにまとめられます。
また、タグを利用することも可能なので、バナー登録なども可能です。
さらに、設定により登録されていないURLを表示しないこともできるので、登録不要のランキングとしても利用することができます。
 - 過去ログを任意の数だけ保存することができます。 (ON/OFF)
過去ログを取得することにより、アクセス数の移り変わりなどを見ることができます。
また、過去ログの削除も簡単に行えます。
 - アクセスデータを取得できます。 (ON/OFF)
ホストアドレス/OS/ブラウザ/アクセス時間 の情報を取得することができます。どのような環境の人がサイトにアクセスしているかをある程度把握できます。
 - トップページに任意の数のランキングを表示することができます。
SSI もしくは JavaScript外部ファイル もしくは HTML書き換え などの機能を利用してトップページ等に任意のランキング数を表示することが可能です。
これを用いれば、訪れた方にあなたのサイトと関連したよいサイトを紹介することができ、快適なブラウジングを提供できます。
 - 排除URLをオンラインから追加できます。
ランキングに登録したくないURLをオンラインから追加し、自分のサイトに見合わないサイトなどを排除することができます。
 
まず次のファイルをダウンロードしてください。ダウンロードする場所は好きなところで結構です。どちらか一方をダウンロードすればOKです。
 access.zip
 access.lzh
- 最新バージョンは v7.1 です。
 
- ダウンロードが完了したら解凍してください。
 - このCGI はフリーですがソフトウェア利用規定通りに使ってください(ダウンロードした時点で同意したとみなします)。
 - このスクリプトはりゅういちのオリジナルスクリプトです。
 - 著作権欄を消さない限り、個人、法人、商用にかかわらずフリーでご利用いただけますです。
 - 同封されている Readme.txt もご覧ください。
 
解凍したあと、以下のファイルがきちんとあるか確認してください。
| 
ファイルの種別
 | 
ファイル名
 | 
用途
 | 
| 
CGI実行ファイル
 | 
access.cgi
 | 
メインプログラムで、アクセスデータ集計・表示を行います。
 | 
| 
acmgr.cgi
 | 
管理用プログラムで、管理システム、検索を行います。
 | 
| 
設定ファイル
 | 
set.cgi
 | 
設定ファイルで、各種設定を行います。
 | 
| 
ログファイル
 | 
access.dat
 | 
メインのアクセスログを保存するログファイルです。
 | 
| 
acuser.log
 | 
アクセスデータを保存するログファイルです。
 | 
| 
save.log
 | 
過去ログのファイル情報を保存するログファイルです。
 | 
| 
time.log
 | 
フォーマット時間を記録するログファイルです。
 | 
| 
url.log
 | 
マッチングURL情報を記録するログファイルです。
 | 
| 
ライブラリファイル
 | 
jcode.pl
 | 
Utashiro氏開発の漢字コード変換ライブラリです。 
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ 
 | 
| 
画像ファイル
 | 
bar.gif
 | 
グラフ用の画像です。
 | 
| 
マニュアルファイル
 | 
Readme.txt
 | 
スクリプトの基本事項についてです。
 | 
| 
access.htm
 | 
このファイルと同じファイルです。
 | 
  | 
  | 
  | 
- 最小限の設定変更の説明です。メモ帳などのテキストエディタで access.cgi のファイルを開いてください。
1行目
#!/usr/local/bin/perl
これをあなたのサーバのPerlパスに書きなおしてください。だいたいのサーバではこのままか、 #!/usr/bin/perl でOKです。
13/14行目
require './jcode.pl';
require './set.cgi';
ファイルのあるパスにしてください。同じディレクトリに入れる場合そのままでOKです。
*) http://〜のURLでは指定できません!
次にacmgr.cgi を開いてください。
1行目
#!/usr/local/bin/perl
上と同じです。
14/15行目
require './jcode.pl';
require './set.cgi';
それぞれファイルのあるパスにしてください。すべて同じディレクトリに入れるならそのままでOKです。
*) http://〜のURLでは指定できません!
次にset.cgi を開いてください。
11行目
$mpass="7777";
管理用のパスワードです。半角英数字で書き換えてください。
12行目
$days= 7;
ログをフォーマットする周期を日数で指定します。ログはこの周期が来ないと永遠に取り続けるのでかなりの重さになる可能性があります。
あなたのページの人気度にあわせて指定してください。
 
time.log をメモ帳などのエディタで開き日付けを修正してください。
書式はどのような日付でもかまいませんが、初期設定では yyyy/mm/dd となっているので 2005/05/10 というように書いてください。
! ) このファイルの更新時間が次回ログフォーマットの時間になりますので、任意の時刻にフォーマットしたい場合は更新時間を調節し、アップロードしてください!
基本設定ができたら、サーバにアップロードしましょう。
ここでは public_html というディレクトリ(フォルダ)の下に access というディレクトリを作ってそこにアップロードするという仮定で説明します。
! ) すべてのサーバが同じ構造をしているわけではありません! サーバにあわせて設置可能なディレクトリにアップロードしてください!
[public_html]┐
             ├[access]┐(ロック機能/オンラインURL排除設定を使う場合[777])
             │        ├ access.cgi [755](メインCGI)
             │        ├ acmgr.cgi  [755](管理CGI)
             │        ├ access.dat [666](ログファイル)
             |        ├ set.cgi    [644](過去ログ保存ログ/保存する場合)
             |        ├ time.log   [666](日付けログ)
             │        ├ url.log    [666](URLマッチング用ログ)
             │        ├ jcode.pl   [644](日本語変換ライブラリ)
             |        ├ acuser.log [666](環境ログ/取得する場合)
             |        ├ save.log   [666](過去ログ保存ログ/保存する場合)
             │        └ bar.gif    (グラフ画像)
             │
             └ index.html
[ ]内の数字は送るときのパーミッションです。
| 
ファイル名
 | 
モード
 | 
パーミッション
 | 
access.cgi 
acmgr.cgi
 | 
アスキー(テキスト)
 | 
755
 | 
access.dat 
time.log 
url.log 
acuser.log 
save.log
 | 
アスキー(テキスト)
 | 
666
 | 
jcode.pl 
set.cgi
 | 
アスキー(テキスト)
 | 
特に変更しない
 | 
| 
グラフ画像
 | 
バイナリーモード
 | 
特に変更しない
 | 
テスト ▲
アップできたらテストをしてみましょう。 
- http://〜/access.cgi?count のように直接URLをアドレスバーに入れてアクセス。
 - 表示されれば設置成功!
 
次にアクセスログが取得できるかテストしてみましょう。
- http://〜/access.cgi?http://www.yahoo.co.jp/ とアドレスバーに入れてアクセス。
 - http://〜/access.cgi?count を表示して、Yahoo! が登録されていればアクセスログ取得成功!
 
! ) ランキングを見る場合 http://〜/access.cgi?count と ?count という引数を付けてアクセスしてください!
! ) 〜 というのは省略のことで、ここにはあなたのWebサイトのURLが入ります。
ここではアクセスログを取得するために、必要なタグをトップページに設置します。
- 取得したいページに以下のように記述してください。
<script type="text/javascript">
<!--
document.write("<IMG SRC=\"access/access.cgi?");
document.write(document.referrer+"\" border=0 width=1 height=1>");
// -->
</script>
 - 集計を取りたいページがフレームの場合は以下のように記述してください。
<script type="text/javascript">
<!--
document.write("<img src=\"access/access.cgi?");
document.write(parent.document.referrer+"\" border=0 width=1 height=1>");
// -->
</script>
! ) ここの access/access.cgi? は http://〜/access/access.cgi? とURLで記述することができます。
! ) ここの access.cgi? のあとには count はつけないでください!
 
SSI方式 ▲
SSI を利用できないサーバでは利用できません!
SSI での設置ができた場合は、通常のアクセスログ取得方法のタグは削除してください。
SSI のほうが通常のアクセスログ取得方式より、正確な情報が取得可能です。
set.cgi 162/163行目
$SSI= 0;
$SC = 5;
$SSI を 1 にする。
$SC をSSIを書くページに表示したいランク数にする(表示したくない場合は 0 を指定)
表示したいページの表示したい位置に以下のように記述してください。
<!--#exec cgi="access/access.cgi"--> もしくは
<!--#include file="access/access.cgi"--> もしくは
<!--#include virtual="/access/access.cgi"-->
! ) SSI の access/access.cgi の部分は http://〜 のURLでは記述できません!
! ) SSI にはサーバのバージョンなどによって以下の注意点があります!
- コマンド名に絶対パスを指定できない
 - パス名で上位のディレクトリ(../)を参照できない
 - コマンドの引数を渡せない とほほのWWW入門より引用
 
! ) SSIをフレームで使う場合は、上記のCGIの場合の「集計したいページがフレームの場合」のJavaScriptを併設してください!
JavaScript外部ファイル方式 ▲
SSIが使えないサーバで JavaScriptの外部ファイル を利用しランクを表示する方法です。
ブラウザが IE4/NN3以上 でなければ、また JavaScript(アクティブスクリプト) がONでなければ表示されません。
通常のアクセスログ取得方法のタグはその設置しておきます。
set.cgi 168〜170行目
$JSc = 0;
$JSf = "./access.js";
$JSr = 5;
$JSc を 1 にすると $JSf の JavaScript外部ファイル に $JSr 分のランクを保存します。
! ) $JSf は http://〜 のURLで記述することはできません!
表示したいページの表示したい位置に以下のように記述してください。
<script src="パス/access.js"></script>
! ) ここの access/access.js は http://〜/access/access.js とURLで記述することができます。
! ) うまく表示されない場合は http://〜/access/access.js を直接アドレスバーに入れてアクセスしてみてください。
  ServerError が表示された場合は、そのディレクトリはCGI専用のサーバではないか確認しましょう。
HTML書き換え方式 ▲
SSIが使えないサーバで直接HTMLを書き換えてランクを表示する方法です。
ただし、表示されるランクは、1クール前のもので、リアルタイムではありません。また、書き換えのタイミングは、ログフォーマット時です。
-> 頻繁な書き換えでトップページが消えるのを防ぐため。
通常のアクセスログ取得方法のタグはその設置しておきます。
set.cgi 165〜177行目
$HTc = 0;
$HTf = "../index.html";
$HTr = 5;
$HTc を 1 にすると $HTf のHTMLファイルに $HTr 分のランクを記述します。
! ) $HTf は http://〜 のURLで記述することはできません!
! ) $HTf で指定したHTMLファイルのパーミッションが 666 相当に変更する必要があります!
表示したいページの表示したい位置に以下のように記述してください。
<!--StartRank--><!--EndRank-->
! ) このコメントタグは必ず1行で書いてください!
共通設定 ▲
set.cgi 179〜183行目
$CUT = 30;
$RANK= 1;
$LAST= 1;
$ACCE= 1;
$mcode="sjis";
$CUT はトップページに表示される長いURLを省略する文字数です。レイアウト調整などに利用します。
! ) <img>タグなどを利用している場合はここを長めに設定しましょう!
$RANK $LAST $ACCE はそれぞれ該当する項目を非表示にできます。
$mcode はトップページに表示する際の文字コードを指定できます。EUC の場合は euc と記述してください。
マッチングURLはオンラインから行ってください。また、自動では行われません。管理者が手動で行ってください。
access.cgi?count でランキングを開き右下の管理用からパスワードを入力。そのあと、フォームが出てくるので処理をしてください。
マッチングURLとは、ランクイン常連や、複数のURLなのに、実際はひとつのサイトからのリンクである場合に有効な機能です。
例えば、Sample Web というタイトルの http://www.sample.com/link.html というURLのからのアクセスカウントが多くなった場合は
| 
一部のURL
 | 
sample.com
 | 
| 
タイトル
 | 
Sample Web
 | 
| 
トップURL
 | 
http://www.sample.com/
 | 
と指定します。この場合、 http://www.sample.com/link.html も http://www.sample.com/util/index.html も http://www.sample.com/ に変換され保存されます。
XYZ Page というタイトルサイトでURL http://www.xyz.com/link.html と http://www.server.net/~xyz/link.html からアクセスがあり、これをひとつにまとめたい場合は
| 
一部のURL
 | 
xyz.com|server.net/~xyz
 | 
| 
タイトル
 | 
XYZ Page
 | 
| 
トップURL
 | 
http://www.xyz.com/
 | 
と指定すれば、両方のURLが http://www.xyz.com/ に変換され、ひとつのサイトとして扱われます。(縦棒 | を使うと複数条件が指定できます)
このように上手に利用して、活用してくださいね。
わからない、設置できない、不具合を見つけた
改造CGI、便利ツールなど
不正アクセスについて
最近、不正な方法でアクセスランクのアクセス数を増やすサイトがあるようです。
- JavaScript方式でカウントしている場合は以下のコードを149行目 foreach $murl (@murl){ の前に記述
if($ENV{'HTTP_REFERER'} !~ /自サイトURL一部/ && !$SSI){
 if(-e $l_f){rmdir($l_f);}
 if($SSI){&html_($ARGV[1],0);}else{&gif_;}
 exit;
}
 - SSI方式でカウントしている場合は70行目を以下のように変更
if($ARGV[0] eq "s"){if($access){&gif_; exit;}else{$access=$ENV{'HTTP_REFERER'};}}
 - あとは根気よく、排除URLに設定
 
更新履歴
- 00/03/26 v1.0
 - 00/12/10 v3.0
 - 00/12/21 v3.1
- 環境のブラウザ・OSの追加と途中で設定変更の際の不具合修正 
 
 - 01/01/08 v4.0
 - 01/01/27 v4.1
 - 01/02/07 v4.2
 - 01/02/11 v4.3
 - 01/02/21 v4.4
- IPアドレスで同じURLの連続カウント防止機能
 - ランキングURLの個別削除機能
 
 - 01/02/26 v4.5
- SSI表示時のURL省略表示
 - URL削除機能がうまく行かなかったのを修正
 
 - 01/03/03 v4.6
- リンクターゲット指定機能
 - ランクインアクセス数の指定機能
 
 - 01/07/26 v5.0
- 設定ファイルの離別化
 - 前回順位をランク表示分だけ保存比較機能追加
 
 - 01/07/30 v5.1
- ログフォーマットの際、前回の順位を保存してなかったのを修正
 - access.cgi/acmgr.cgiのみアップでOK
 
 - 01/08/06 v5.2
- 前回順位が正しく取れないのを修正
 - access.cgi/acmgr.cgiのみアップでOK
 
 - 01/08/10 v5.3
- NNで時間別アクセス数のグラフ表示が乱れるのを修正
 - access.cgiのみアップでOK
 
 - 01/08/20 v5.4
- 前回順位が正しく取れないのを修正
 - access.cgiのみアップでOK
 
 - 01/10/16 v5.5
- オンラインから排除URLを設定できる機能を追加
 - access.cgi/acmgr.cgiをアップ
 
 - 01/10/20 v5.6
- 過去ログ作成ディレクトリがうまく指定できないのを修正
 - access.cgi/acmgr.cgiをアップ
 
 - 01/11/19 v5.7
- 環境ログをWinXP集計対応
 - SSIをJavaScriptと併用しフレームで使えるよう修正
 - access.cgiのみアップ
 
 - 02/01/15 v5.8
- 短いURL(10バイト以下)は排除するように修正
 - ロック機能の変更
 - マッチングURL編集機能追加
 - access.cgi/acmgr.cgiをアップ
 
 - 02/02/25 v6.0
- SSIが使えないサイトでもJavaScript外部ファイルを利用してHTMLにランキングが挿入できる機能追加
 - マッチングURLを編集後管理モードトップに戻るよう変更等
 - access.cgi/acmgr.cgi/set.cgiをアップ
 
 - 02/02/17 v6.1
- JavaScript外部ファイル利用の際
 - 指定順位以上表示されるのを修正
 - access.cgiをアップ
 
 - 02/04/29 v6.2
- JavaScript外部ファイル利用の際
 - その順位分だけしか前回順位に反映されないのを修正
 - access.cgiをアップ
 
 - 02/08/27 v6.3
- ブラウザ Opera のカウント対応、全ランクをオープンにするかしないか選択可能化
 - 検索機能の追加
 - マッチングURL機能の強化
 - 管理モードの使い勝手向上
 - access.cgi/acmgr.cgi/set.cgiをアップ
 
 - 02/09/03 v6.4
- 管理モードの一部(アクセスURL削除/全ランク閲覧)から外部サイトにアクセスした際、外部サイトが逆アクセス情報をとっていた場合パスワードがもれてしまう事があるのを修正。
 - v4.4〜6.3の方は必ずアップしてください!
 - access.cgi/acmgr.cgiをアップ
 
 - 02/09/15 v6.5
- MSIE の入った Opera を Operaと判定していなかったのを修正
 - access.cgiをアップ
 
 - 02/10/28 v6.6
- Netscape7.* 集計に対応、ユーザエージェントのブラウザ/OS/時間別表示の精度をアップ
 - ユーザエージェントもIPアドレス2重カウント防止対象に
 - access.cgi/acmgr.cgiをアップ
 
 - 04/05/10 v7.0a
- 複数条件を指定可能にした
 - 一部のURLに利用できない文字列があるのを修正
 - 過去ログ削除時に跡が残るのを修正
 - HTML書き換え方式のトップページ表示法追加
 - マッチングURL登録時にURLをひとつにできる機能追加
 - インタフェースの見直し
 - 排除URL設定時にそのURLを削除できる機能追加
 - その他細かい不具合修正
 
 - 04/05/10 v7.0b
- 管理モードでマッチングURLが編集できないのを修正しました。
 - acmgr.cgi のみのアップでOKです。
 
 - 04/06/07 v7.0
- 管理モードのURL削除で削除できないのを修正
 - 管理モードの排除URL設定時同時削除するとその他のカウントがリセットされるのを修正
 - vodafone を vodefone と書いていたのを修正
 - ランキングページ移動機能追加
 - その他、使い勝手の向上と、効率化
 - access.cgi / acmgr.cgi をアップしてください。(set.cgi は任意アップでOK)
 
 - 04/07/12 v7.1
- ランキングサイトなど、排除URLを含むURLを排除しないよう変更しました。
 - マッチングURLの効率化しました。
 - SSIのランク数 0 にした場合、サーバエラーになるのを修正しました。
 - ホストアドレス解析をアクセスデータに追加しました。
 - 過去ログ数を減らした場合にうまく保存されないのを修正しました。
 - access.cgi のみアップしてください。
 
 
(C) Copyright りゅういち
http://www.cj-c.com/cgi_s/access.htm
CJ Club TOP / CGI Script / CounterScript / ReverseAccess