wwwstat に referer の解析を追加する
突然ですが、私は、自サイトの WWW のログ解析に、
wwwstat
を使用しています。
HTML を吐いてくださいますが、lynx
や w3m
を用いてテキストに変換すれば、勝手に報告メールなどできますので、
便利です。(どれも便利ですね。)
でも、referer を解析してくれません。
どういうところからたどられているのか、気になりましたので、ふと、
勝手に付け加えてみました。
ベースにしたのは、FreeBSD のパッケージ(wwwstat-2.1)です。
Perl script でできていますので、改竄はわりと簡単です。
前提条件として、アクセスログの形式は、通常の形式のあとに referer
が続くものとします。
Apache の設定でいうところの combined を使用していれば、問題ありません。
combined でなくても、common の並びの直後に referer があれば、問題ないはずです。
パッチはここにあります。→
これ
一応パッチの説明をします。
追加すべき変数は、
処理すべきかどうか(オプションで指定されたかどうか)を記録するためのもの、
出力する HTML のサブタイトルを格納するもの、
-top を指定されたときの値を格納するもの、
-sort を指定されたときの値を格納するもの、
referer のリクエスト数とバイト数を格納するもの、
になります。
それぞれ、$Do_Refer, $ReferHeader, $TopRefer, $SortRefer, %ReferRequests,
%ReferBytes としました。
あとは、初期化の処理と、
オプションを指定されたときに上記変数を操作する処理、
ログの解析の際に %ReferRequests と %ReferBytes を更新する処理、
出力する処理、を追加すれば、出来上がりです。
初期化は、init_defaults および init_summary サブルーチンで行っています。
他の変数と同様に初期化をするだけでした。
オプションの処理は、get_commandline サブルーチンで行っています。
ややややこしいですが、結局は他の処理を真似ただけでいけました。
ログの解析は、process_log サブルーチンで行っています。
common なログしか見ていませんので、referer も見るようにしました。
出力には、出力用の output_refer サブルーチンと、
ソートする際に比較をするための refercompare サブルーチンを追加しました。
これらは、他の処理とほぼ同じです。
コピーペーストして変数名を変更する程度で済みました。
ソースコードがわかりやすく、簡単に追加できるようになっていますので、
意外と簡単に追加できてしまいました。
他にもいろいろな改竄ができそうです。
ユーザエージェントの集計なんかも、やってみたくなったらやってみようかと思います。