Google はユーザの行動を収集している模様

昨日気づいたのだが、Google の検索結果画面にあるサイトへのリンクをクリックした時に Javascript による URL の書き換えが行われているようだ。
どういう風に書き換えるかというと、一度 Google のサイトへ飛ぶように変更しているのだ。そして、Google のサイトから目的のサイトへとリダイレクトされる仕組みになっている。


実際のリンクの記述はこんな感じ

<a href="http://example.co.jp" onmousedown="return rwt(this,'res','1','')">example.co.jp</a>

関数 rwt の定義は以下のようになっている。実際の記述は一行だが見やすいように改行してある。

function rwt(el,ct,cd,sg){
	el.href="/url?sa=t&ct="+escape(ct)
		+"&cd="+escape(cd)
		+"&url="+escape(el.href).replace(/\+/g,"%2B")
		+"&ei=xD4eQ9eMD668sAGwtJCkCw"+sg;
	el.onmousedown="";
	return true;
}

リンクをクリックした際に href の URL を Google のりダイレクトサイトに書き換えている。
ei の値は同じ検索内容でも毎回変化していたのでセッションIDみたいなものだと思われる。


ここまでは Firefox で検証していたのだが、ふと IE でも同じなのだろうかと思って確認してみた所、なんと違う動作である事が判明。こっちの方がより巧妙になっている。
Internet Explorer の場合、関数が clk というのに変わっている。

function clk(url,ct,cd,sg){
	if(document.images){
		(new Image()).src="/url?sa=T&ct="+escape(ct)
				+"&cd="+escape(cd)
				+"&url="+escape(url).replace(/\+/g,"%2B")
				+"&ei=Wz8eQ7-aGbO4YPL_lZYL"+sg;
	}
	return true;
}

IE の場合は、href を書き換える事はせず、クリックされた際に Image オブジェクトを生成する事で Google へのアクセスを発生させている。リンクをクリックすると目的のサイトへのアクセスと同時に Google にもアクセスが発生する訳だ。


ちなみに IE で生成された URL はアクセスしてもサイトへの遷移が行われないのに対し、 Firefox で生成された URL ではサイトへの遷移が発生するというように動作に違いがある。IE の場合は遷移する必要が無いので当然の違いであるが。


なお、上記の動作は onmousedown イベントで起きるようになっているのでリンク上で右クリックしても発生する。
Firefox だと右クリックした瞬間にステータスバーに表示されている URL が書き換わるのが見える。
IE の場合、右クリックした時に Google へのアクセスが発生しているのだが、画面上では何も変化が無いのでユーザには全く分からない。


収集されたくない場合は、 Javascript をオフにすればよい。 IE の場合は画像を表示しない設定にする事でも上記の処理が働かなくなった。


いつからこういう事になったのか調べてみたら、方法を変えながら結構前からやっていたらしい。
GoogleがJavaScriptによりクリックスルーをカウント中 (ルートディレクトリ) 2004/1/23
つい最近も話題に上がったようだ。
Google stealthily monitoring clickthroughs from search-results (Boing Boing) 2005/8/22


しかし、実害は無いと思うものの裏でこそこそやられるってのはなーんか気分がよろしくないですな。
最初から「収集してますよ」と言われれば「ハイそうですか」で済む話なんですけどねぇ。
追記:収集されているのは上記の情報だけじゃなかった。しかも名寄せ可能っぽい…… orz


追記:(2005/9/16)
Firefox では URL の書き換え処理が無くなったみたいです。 a タグのから onmousedown 属性の記述が無くなっています。
IE の方は変わってませんね。