jjj33 home Rev.00 2015.12.27 Rev.01 2016. 1.-9 多機能アクセスカウンターーーーーーー 目 次 ーーーーーーー 1. 多機能アクセスカウンタ 2. 機能・特徴 3. このカウンタを設置するための必要条件 4. cgi, カウンタ 設置方法 4.1 プログラムファイルのダウンロード 4.2 cgi 用 web サーバのディレクトリ 4.3 perl script でのディレクトリパス指定 4.4 shebang 行の確認 4.5 ftp 転送と実行パーミッション 5. テスト 5.1 cgi サーバの url 記述 5.2 カウンタのテスト 5.3 Viewer テスト 5.4 テスト NG の場合の対処 6. 使用方法 6.1 カウンタの記述と設置 6.2 Viewer の使用 6.3 カウンタのカウント値だけを見る方法 6.4 Log ファイルとカウント値の変更 7. 自 webpage, blog へのリンク元の記録 (別オプション) 8. アクセス情報の保護 8.1 Viewer の保護 8.2 Log ファイルの保護 8.3 その他の問題点 9. アクセスカウンタ回避について 10. gif 画像ファイル結合に関して ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1. 多機能アクセスカウンタ 自分の webpage や blog を持つと、そのアクセスの状況を知りたくなる。 無料のアクセスカウンタが各種 web 上に公開されているが、カウント値を表示するだけで、「いつ」、 「どこから」の情報は得られない。 より高度のアクセス情報 (訪問者使用の web-browser 名、OS 名、自分の webpage や blog へ 来る時に使用した検索キーワード等) を知るソフトもフリーウェアとしてあるが、自分の webpage や blog 画面上にカウント値を表示する機能は無いなど、考えている仕様のものが ないので、今回アクセスカウンタを自作した。 2. 機能・特徴 (1) 監視対象の webpage や blog に1個専用のカウンタを設置し、その webpage, blog の 画面上に、カウンタのカウント値を表示すると共に、その webpage, blog への アクセス情報 (Log) を記録する。 (2) 1個のカウンタを複数の監視対象 webpage, blog に設置し、一括してアクセス情報 (Log) を 記録する事もできる。(multi-log) (3) 監視対象 webpage, blog の画面上で、カウンタ表示を 可/否 (visible/invisible) に設定可。 通常 multi-log では 非表示 (invisible) として、アクセス情報 (Log) の記録だけにする。 (4) アクセス情報 (Log) として、カウント値、年月日、時分秒、監視対象 webpage, blog の略称、 訪問者 IP-address を記録する。 更に、訪問者が監視対象 webpage blog へ来る直前の、リンク元 url (検索サイト等)を 記録するための別オプションあり。 (5) Log 参照では、専用の Viewer (webpage の1つ) を使い、Log 内容を画面に表示する。 (6) Log の内、カウント値だけを見る場合は、自分(自宅)のコンピュータ内に html 記述で参照 用の page を作成し、この page の画面でカウント値を見る事ができる。 (7) 作成カウンタ数に制限なし。(契約ディスク容量による) 各カウンタに名前を付けて区別する。 (8) 任意のカウント値からスタート、また、いつでも任意値に変更可。 (9) 自分のアクセスによるカウントの 可/否 (enable/disable) を設定可。 (10) 同一訪問者のアクセスは1回だけカウントする機能は無し。アクセス毎に全て記録する。 (11) カウンタを動作させる cgi のサーバと、カウンタを表示させる監視対象の webpage, blog の サーバは、別々でも良い。(SSI 不要) 3. このカウンタを設置するための必要条件 (1) 自分の webpage または blog を持っている。 (2) カウンタ設置のため、自分の webpage または blog に、html の <IMG > タグを記述、 または、追記できる。そして、その <IMG > タグが有効になる。 blog では、<IMG > タグの記述そのものが文字列として表示される等、有効にならない場合も ある。 (3) 自作の cgi を設置・稼働可能の web サーバを利用できる。 この cgi 用 web サーバは、既に公開している自分の webpage または blog のサーバとは 別のサーバでもよい。 (4) 上述 (3) の cgi 用 web サーバでは、ファイルアクセス競合を防ぐための flock 機能を 使える必要がある。 ほぼ同時の接近したタイミングで同一カウンタが動作する事は十分考えられるので、 flock 機能は必要。 その他、今回のアクセスカウンタは perl 記述の cgi として作成されているので、perl, cgi に ついて、基本的な知識は必要になる。 ここまで読んで(読まずに)諦めてしまう方もおられるかも知れないが、ここまで読んで来られた 方にとっては、今回のアクセスカウンタは大した事ではない。 (動くまでに時間がかかる事になるとしても) cgi 作成経験者であれば、以下の 4.2 〜 4.5 項は読み流す程度で良い。 4. cgi, カウンタ 設置方法 4.1 プログラムファイルのダウンロード 次から zip ファイルをダウンロードし解凍する。 zip ファイルのファイル名は cnt_log.zip で、サイズは 11068 バイトである。 http://www8.plala.or.jp/jjj33/cnt_log/cnt_log.zip 解凍すると、次の通り1個のディレクトリと4個のファイルがある。 (1) cnt_digit_gif (2) cnt_log.pl (3) cnt_log_view.pl (4) cnt_view_test.htm (5) page_monitored-0.js (1) の cnt_digit_gif ディレクトリ内には、カウント値表示用の 0 〜 9 の数字画像と、 カウンタ非表示用の透明画像ファイル (全て gif) がある。 数字画像は、好みの字体や配色のものに後で変更すればよい。 (2) 〜 (5) はテキストファイルで、改行コードは Cr+Lf になっている。 4.2 cgi 用 web サーバのディレクトリ ここでは、cgi 用 web サーバ (以下 cgi サーバと表記) のユーザ(自分の)ホームディレク トリ直下に、今回のアクセスカウンタ専用のディレクトリを作成する事とする。 このディレクトリ名を access_counter とする。 このディレクトリ内に上述 (1) 〜 (3) を、後述 4.3 項、4.4 項で変更、確認後に転送、 設置する。 上述、(2) と (3) の perl script では、access_counter/ に作られるファイルを参照する事に なるが、この時、ディレクトリパスの指定方法として、相対パスで良い場合と、絶対パスを 必要とする場合がある。 使用する cgi サーバがどちらなのか、確認する必要がある。 (テストscript を書き、両方試してみる等) 絶対パスでは、ftp でのディレクトリ指定と同じになるが、この場合でも、パス指定の先頭に / (slash) があったり、無かったりと、異なる事があるので確認が必要。 4.3 perl script でのディレクトリパス指定 上述 4.2 項の様に、ディレクトリパス指定に相対パスと絶対パスがあるので、必要とされる方に 合わせて、4.1 項 (2), (3) の perl script を記述変更する。 ダウンロードしたものは相対パスになっているので、それで良い場合はパスに関して何も書き 換える必要は無い。 絶対パスが必要の場合は、(2), (3) のファイル始めの部分にある $directory_path の変数に 絶対パスを記入、定義する。 一例として、次の様になる。 $directory_path = 'user_name/access_counter/'; この例で、user_name はユーザ(自分の)ホームディレクトリ名である。 user_name の前に / が必要かも知れない。 / ではなく ~ (tilde) と言う事は、まずない。 4.4 shebang 行の確認 shebang 行は script の第1行目の記述で、その script を解釈・実行するプログラム (コマ ンド) を、そのプログラム (コマンド) 所在のパスと共に指定する。(今回は perl と、そのパス) 4.1 項 (2), (3) の shebang 行は、ダウンロードしたものでは共に、 #!/usr/local/bin/perl と、なっている。その他には、 #!/usr/bin/perl などの場合もあり、使用する cgi サーバの環境に合わせ、書き換える。 4.5 ftp 転送と実行パーミッション 4.1 項 (1) のディレクトリと、4.3 項、4.4 項で変更、確認後の (2), (3) の perl script を cgi サーバのディレクトリ、access_counter/ へ、ftp で転送する。 (2), (3) の実行パーミッションについては、ユーザ(owner) だけに実行権を付与する事が必要 の場合があり、使用する cgi サーバの規定に合わせる。 5. テスト 前 4.5 項までを終了後、テストする。 このテストでは、4.1 項 (4) の html ファイル、cnt_view_test.htm を使う。 テストがうまく行かない場合、それぞれの場合について個別に検討する必要があるが、 ここで、それら全てを説明できない。 以下では正常の場合を説明する。 5.1 cgi サーバの url 記述 4.1 項 (4) の html ファイル、cnt_view_test.htm をテキストエディタで開く。 この html ファイルには、次の url 記述が4箇所ある。 http://《cgi のサーバ名・ドメイン名等/ユーザ(自分のアカウント)名》/access_counter/ ・・・ この url 記述中の《cgi のサーバ名・ドメイン名等/ユーザ(自分のアカウント)名》の部分を4箇所全て 実際に使用する cgi サーバに合わせて書き換える。 上記 url で、例えば《cgi のサーバ名・ドメイン名等》を www.domain_name.com とし、 《ユーザ(自分のアカウント)名》を user_name とすると、書き換え後の url は次の様になる。 http://www.domain_name.com/user_name/access_counter/ ・・・ cgi サーバによっては、user_name の前に ~ (tilde) を付け、~user_name とする場合がある。 url を書き換え後、html ファイルを保存する。この html ファイルは、自コンピュータ内に保存する。 5.2 カウンタのテスト コンピュータをインターネットへ接続し、5.1 項で書き換え後の html ファイルを web-browser で閲覧する。(開く) (このためには、ファイルマネージャ画面で、5.1 項の html ファイル名、cnt_view_test.htm を をダブルクリックする) 成功すれば [1] と [2] のカウント値が表示される。 カウンタのテスト結果画面を次に示す。 web-browser の再読み込み(Reload) の機能をクリックすると、カウント値の表示は [3] と [4] に なる。 この時、上側 (webpage-W1) のカウント値が少ない値になるとは限らず、逆になる場合もある。 ここでは、1個のカウンタを2箇所の監視対象に設置するテストになっている。 カウンタ名は test-cnt0 で、監視対象の略称は webpage-W1 と blog-B1 である。 カウンタ名と、監視対象の略称については、後述 6.1 項 (1), (2) で説明する。 5.3 Viewer テスト 上記、テスト結果画面下側の [Log viewer] のリンクをクリックする。 成功すれば、次のような Log 画面が出る。 Log 画面内のカウンタ名と、監視対象の略称については、後述 6.1 項 (1), (2) で説明する。 なお、画面内で、自コンピュータの IP-address (WAN 側) は仮の値になっている。 5.4 テスト NG の場合の対処 テストがうまく行かない場合、前述 4.2 〜 4.5 項、5.1 項を見直し、ケースバイケースで検討、 対応する必要がある。 多くの場合、次の (1), (2) に該当する。 (1) 5.3 項「Viewer テスト」で、「File Not found」、または、それに相当するメッセージが 出る。 この場合は、5.1 項「cgi サーバの url 記述」で http:// の後ろの記述が悪く、cgi へ到達 できないためで、url 記述を確認する。 (2) 5.3 項「Viewer テスト」で、「File Not found」に相当するメッセージ以外のメッセージが 出る。 この場合は、cgi へ到達したが、cgi 実行時にエラー発生する事が考えられる。 繰り返しになるが、4.2 〜 4.5 項を確認する。 6. 使用方法 6.1 カウンタの記述と設置 カウンタの設置では、監視対象 webpage, blog に、html としての <IMG > タグを記述、または 追記する。 この <IMG > タグは次の形式になる。 <IMG SRC= "「cgi の url」" /> 上記 <IMG > タグで、SRC= の属性、「cgi の url」 の部分は次の様になる。
http://《cgi のサーバ名・ドメイン名等/ユーザ(自分のアカウント)名》/access_counter/cnt_log.pl?test-cnt0&webpage-W1&visible&enable この url 記述中の《cgi のサーバ名・ドメイン名等/ユーザ(自分のアカウント)名》の部分は 実際に使用する cgi サーバに合わせて記述する。この記述は 5.1 項での cgi サーバの記述と同一である。 <IMG > タグを記述、追記したら、監視対象 webpage, blog のサーバに保存する。 記述、追記の場所は、カウンタを表示する場所にする。(カウンタ非表示の場合はどこでも良い) この url の後方 ? マーク の後ろに関して、テスト時の1つでは、上記の通り、 test-cnt0&webpage-W1&visible&enable と、なっている。これは cgi へ送る情報で、その構成と意味は次による。
[カウンタ名] & [監視対象 webpage, blog 略称] & [カウンタ表示 可/否] & [自分のアクセスカウント 可/否] (1) [カウンタ名] --- test-cnt0 新規に作成するカウンタに名前を付ける。テスト時のカウンタ名は test-cnt0 である。 基本的に任意の名前を設定できるが、使用できる文字に制限がある。 ・ 半角文字とする。 ・ 日本語文字は不可。 ・ 確認済みの使用不可文字は次による。 # (number), " (double quotation), ' (single quotation), < (less than), > (greater than) & (ampersand) は区切り記号としているため、使用不可。 (2) [監視対象 webpage, blog 略称] --- webpage-W1 同一カウンタ名のカウンタを、複数の監視対象 webpage, blog に設置 (multi-log) する場合 では、略称を付けて監視対象を区別できる様にする。 Viewer でアクセス情報 (Log) を見る時に必要になる。 使用できる文字は (1) の [カウンタ名]と同じ。 テスト時の略称の1つは webpage-P1, もう1つは blog-B1 である。 (3) [カウンタ表示 可/否] --- visible 監視対象 webpage, blog に設置するカウンタを、その画面上で表示するかしないかについて 指定する。 表示する場合は visible, しない場合は invisible (visible 以外) とする。 同一カウンタ名のカウンタを、複数の監視対象 webpage, blog に設置する場合 (multi-log) では、テスト時以外は、通常 invisible とする。 (4) [自分のアクセスカウント 可/否] --- enable 自分のコンピュータで監視対象 webpage, blog をアクセスした時にカウントするかしない かを指定する。 カウントする場合は enable, しない場合は disable (enable 以外) とする。 disable が有効になるのは、次の 6.2 項「Viewer の使用」での、アクセス情報 (Log) を 参照した後になる。 この理由は、Viewer でアクセス情報 (Log) を参照した時に、自分の IP-address (WAN 側) が Log ファイルに記録され、自分と他の訪問者を区別できる様になるからである。 以上 (1) 〜 (4) の各項目を & (ampersand) で区切り、? マークの後ろに付けて cgi への url として、<IMG > タグ内の、 SRC= の属性部に記述する。 6.2 Viewer の使用 Viewer は、各カウンタのアクセス情報 (Log) を参照するための webpage である。 Log として記録された、指定カウンタ名のカウント値、年月日、時分秒、監視対象 webpage, blog の略称、訪問者 IP-address を参照できる。 Viewerの使用では、web-browser で、次の url を閲覧する。 (閲覧するには web-browser の url 欄に url を入力して閲覧し、その後 bookmark に登録する)
http://《cgi のサーバ名・ドメイン名等/ユーザ(自分のアカウント)名》/access_counter/cnt_log_view.pl?test-cnt0
|