Webビーコン:Tracking Cookieをブラウザに送る
参考:Cookie---状態管理とトラッキング貴方にユニークIDを与えて行動を補足することを考えてみましょう。 ユニークIDを持つ貴方はパソコンを移動して別のネットワークから接続しても(IPアドレスが違ったとしても)で識別されることになります。
これから紹介する例は、画像表示時する<img>タグを使って次のように
<img src="flower.cgi" alt="flower.gif" />と書き込んで、あたかも花のGIF画像を表示されるように見せかけてみる。 このファイル flower.cgi が CGI Perlスクリプトであり、貴方にユニークIDを与えてクッキーをブラウザに送り込む。 WebサーバはユニークIDを与えた貴方のCookie情報を元にして、Web上の行動を知ることができることになる。 併せて、ブラウザにCookieがドメイン名 isc.meiji.ac.jp で残っているかを確かめてほしい。
スクリプト flower.cgi
flower.cgi は文字コード UTF-8 改行 LF で次のように書かれており、実行属性を与えてて Webサーバ isc.meiji.ac.jp に置いてある。
#!/usr/bin/perl use strict; use warnings; use CGI; use Digest::MD5 qw(md5_hex); # Configuration. my $log_file = './tracking.txt';# トラッキングログを保存するファイル名 my $gif_file = '.tracker.gif';#表示するGIF画像(透明) my $expires = '+30d';#30日の有効期間 my $cookie_name = 'tracking';#Cookie名 my $cgi = new CGI; # ユニークIDの取得 my $unique_id = $cgi->cookie($cookie_name); if (not $unique_id) { # Not found. Create new unique_id. $unique_id = md5_hex(localtime() . $$); } # value値にユニークIDを含むクッキー my $cookie = $cgi->cookie( -name => $cookie_name, -value => $unique_id, -domain => 'isc.meiji.ac.jp', -expires => $expires, ); # HTTP応答ヘッダ print "Content-type: image/gif\n"; print "Set-Cookie: $cookie\n"; print "\n"; # HTTP応答ボディ binmode(STDOUT);# 標準出力をバイナリにする open(GIF, $gif_file);# 画像ファイルを開く binmode(GIF);# 画像ファイルはGIF print <GIF>;# 標準出力に書き出す close(GIF);# ファイルのクローズ # ブラウザ情報 my $http_referer = $ENV{HTTP_REFERER} || '';# リファラ(リンク元のページ) my $remote_addr = $ENV{REMOTE_ADDR} || '';# IPアドレス my $localtime = scalar localtime();# 現在時刻 # ログに書き足す open(FILE, ">> $log_file"); print FILE "$unique_id,"; print FILE "$localtime,"; print FILE "$remote_addr,"; print FILE "$http_referer\n"; close(FILE); __END__
単純にCookieをクライアントにセットだけのスクリプトで、セーバの応答ヘッダで次のように Set-Cookie したのと同じである。
Set-Cookie: customer=umeko; domain=isc.meiji.ac.jp; path=/;
ここでのCookie寿命は30の日有効期限を持つ。 以下のページアクセスして、クッキーが保存されていることを確認しよう。
演習
Tracking Cookiのあるページ
上のCGIスクリプトを使って 実際にクッキーを現在使っているブラウザに送り込んでみよう。 以下のページでは貴方にユニークIDを与えて行動(ページ内のどのリンクをクリックしたか)を補足します。
Tracking Cookieをテストするにアクセスしてみよう。
パソコンを移動して別のネットワークから接続しても(IPアドレスが違ったとしても)ユニークIDを持つ貴方であることはわかる。 つまり、この仕組みを使えば、(自分の)Webサイトにアクセスしているユーザログ(しかも、IPアドレスが変わったとしても、Cookieの有効期限内であればユニークIDとして)を取ることができ、各IDを持つ人のページ(あるいはページ群内のクリック状況を補足できるこのに注意しよう。
各ページ毎の自分のユニークIDを推察してみよ。 ただし、Cookieはブラウザごとに発行されることに注意する(ブラウザを換えれば、同じページのユニークIDは異なる)。
Webビーコン
このようなHTMLの特性、<img>タグ内容を読み込もうとする性質を使う追跡方法をWebビーコン(あるいはWeb bug)という。 複数Webサイトのアクセス解析に広く使われている。 相手先のコンピュータ(や携帯)がネットワークに繋がっていて、<img>タグをが使えるような状況であれば可能である(この例のように、透明なGIF画像 1 x 1 ピクセルが多く使われている、としておけば、相手は気がつきもしない)。
つまり、Webビーコン(Webバグ)が使われる代表的例には次がある。
- HTMLメールの中
- ダウンロードしたマニュアルに含まれるHTMLファイル
- HTMLを使った質問コーナや掲示板