FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アクセス解析に関する覚え書き

先日、ぽつぽつと零細サイトを営んでいるヨメのところに荒らしが来たとかで、
我が家ではちょっとした話題を醸した。変な奴がいるので掲示板にアクセス禁止
をかけたのだが、どうやらそいつが2chでサイトのアドレスをさらしはじめた
のだという。
件の人物はアクセス解析でばっちり判明してるし、あろうことか晒した先がオカ
ルト板だったり、さびれた絵描きスレッドだったりしたために、ほぼ実害もな
く、ちょっとした笑いを提供しただけで終わってしまったのだが、被害はともか
く、やられっぱなしはなんとなく微妙だよねーという話になった。
まあ自分自身、性格のあまりよろしくないこともあって、どうにかソイツ(まだ
来ているらしいw)をからかってやりたくて仕方なくなった。
と、いうところが動機で、とりあえずアクセス解析を応用して、件のターゲット
をちょっと弄ってやろうという計画がスタートしました。武器はPCと悪知恵だ
け。さて、まずは何を使いますかね。

-----------
■目的
悪い子にはおしおきです。とはいえ、アクセス解析なんてたいした情報がもらえ
る訳ではないし、正確性には若干疑問が残る。誤爆で関係ない人には被害を出し
たくないので、今回はこうすることにした。
「掲示板から名指しで締め出す」。
ターゲットは子供っぽく、かなりの構ってチャンのようだ。寂しがって涙を流し
ながら地団駄を踏む様子が目に浮かぶ。掲示板に来ない人は関係ないし、誤爆の
被害も最小限に抑えられるだろう。それがいい。

■お道具
さて、Web技術は色々と転がっているのだが、目的にあったものを選ばねばなる
まい。残念ながら、当方、CとC++しか弄ったことがない。とりあえずアクセス解
析のために何が必要になるか調べてみると、まあざっと選択肢が浮かんできた。
とりあえず、貸しCGIはパス。自由にあれこれするには、ちょっと不向きだ。か
といって、いきなりGoogle Analyticsに手を出すのは無理っぽいこともわかっ
た。PHPであれこれ書くのも悪くはないが、今回は、掲示板から締め出すのが目
的だ。昔使っていた掲示板が確かperlで書かれていたはずなので、あわ良くば、
あいつに仕込んでしまおう。
決めた。お道具は、CGI(perl)だ。

幸い、いつ使うかわからないと思っていたので、httpdとActivePerlは既にPCに
仕込んである。よし、これだ!
(興味あればぐぐってください。親切なサイトがたくさんあります。)

■アクセス解析
さて、アクセス解析だが、これは実際のところ簡単のようだ。perlでもって環境
変数を取ってくれば良いみたい。
まあこんなとこを参考にしてみました。
http://beginners.atompro.net/smpcgi_acclog.html

とはいえ、一つ問題があるらしい。
それは、「リファラ(アクセス元)がcgiを呼び出したサイトになってしまう」
というもの。
何も問題ないように思われるかもしれないが、そうではない。貴方、そのCGIを
どこから起動しますか?というと、普通に呼ぶなら自分の作ったHTMLからリンク
を貼るなり、imgタグを張るなりすることになる。つまり、その、自分で作った
HTMLしか見えないことになる。
それは問題だーということで、解決策は二つ。javascriptでリファラを獲得して
cgiに放るか、SSIを使うか。本当にアクセスの「解析」をするのであれば、
javascriptの動かない訪問者はあきらめて、取れたデータの分析をすればいいん
だろうけど、今回の目的はそれじゃ困る。奴さんがjavascriptを動かしていな
かったら、全然意味がなくなってしまう。そんな訳で、SSIの方を採用。
とほほのSSI入門なんか見ながら、さくさくとあっという間に設定完了。
http://www.tohoho-web.com/wwwssi.htm

問題は、SSIを許可してくれるフリーのサーバーがあまりないこと。とりあえず
トクトクとかを選んで登録してみました。まあ、リファラ取れなくても問題はな
いんですけど、なんか中途半端は、ね。

呼び出し側のファイルの拡張子を.shtmlにして、bodyの中にでもcgiを、

< !--#include virtual="acc.cgi?" -->

なーんて一行突っ込んでおけば動作OK。cgiの属性を実行オンリーにしておかない
と、犠牲者「以外の人」をどこに飛ばそうとしているのかバレちゃいますので要
注意。

■cgiの中身
まだ雛形なので、あまり説明は必要ない(というか、ほぼ参考元のままだ)で
しょう。ここでは環境変数を抜いて、出力しているだけです。あと、SSIでshtml
の中に表示を突っ込む場合は、ちゃんとhtmlタグがないとだめみたい。テキスト
ファイルを突っ込むだけなら何も問題なく表示されましたが、perlの場合はダメ
でした。
ともかく、下記のようなcgiを作ってやれば、さっきのshtmlに、アクセスした人
の情報が書き出されて、表示されるわけ。
あとは相手の情報がわかっていれば、IPとホスト名で引っ掛けてリンクを書き換
えてやればバッチリかな。

#!/usr/bin/perl

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime();
$fmt0 = "%04d/%02d/%02d %02d:%02d:%02d";
$day0 = sprintf($fmt0, $year+1900,$mon+1,$mday,$hour,$min,$sec);
$hpadrs = $ENV{'REQUEST_URI'};
$refer = $ENV{'HTTP_REFERER'};
$agent = $ENV{'HTTP_USER_AGENT'};
$hostnm = $ENV{'REMOTE_HOST'};
$ipadrs = $ENV{'REMOTE_ADDR'};

print "Content-type: text/html\n\n";
print "\n\t\n\t\tアクセス解析CGIだよ\n\t
\n";
print "\t\n";
print "\t\tDAY\t\t:$day0
\n";
print "\t\thpadrs\t:$hpadrs
\n";
print "\t\trefer\t:$refer
\n";
print "\t\tagent\t:$agent
\n";
print "\t\thostnm\t:$hostnm
\n";
print "\t\tipadrs\t:$ipadrs
\n";
print "\t
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
\n ";

あとみんな、CGIはちゃんとローカルでデバッグして、実際のサーバー上で暴走
させないように気をつけるんだ。
今はどうかわからないけど、その昔商用サーバーが悪質なCGIでデータ吹っ飛ば
したりして、えらく迷惑したことがあるんだぜ。


-----------

さーて、次は飛ばした先に何を配置するかだな。
javaもいいけど、Flashも捨てがたい。ActionScriptの勉強なんかには丁度良い
気がするんだぜ。
スポンサーサイト

コメントの投稿

非公開コメント

最新トラックバック

プロフィール

ハヤト

Author:ハヤト
古流柔術三段、趣味プログラミング。
鳥大好き鳥かわいいよ鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥鳥
     _,,,
   _/::o・ア <民主は
 ∈ミ;;;ノ,ノ   カスばっかりだ
    」L

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。