2007/04/19

[技術系]   さらにurchin.jsの中身を見てみる

at 15:14JST
 
結局、気になったのでおうちに帰ってきて、Google Analyticsのクライアント側本体にあたるurchin.jsの中身を調べてみることにした。さすがにケータイからJavaScriptのチェックをするのはキツいもの。

なんかしつこいようだが、ひまなのか…?

これまでのあしあと:
http://memo.hirosiki.jp/article/39107558.html

http://www.milkstand.net/fsgarage/archives/001003.html

http://memo.hirosiki.jp/article/39314566.html

http://memo.hirosiki.jp/article/39344442.html

いまココ!

で、なんでJavaScriptのソースを調べるかというと、JavaScriptを使うとクロスドメインのCookie共有ができてしまうからだ。これは簡単で、

サイトA:
 - Cookie-aをフィード
 - HTML-aをホスト。
  ※HTML-aはサイトBのJavaScript-jを呼び出す
サイトB:
 - JavaScript-jをホスト
 - dummy.gifをホスト

で、JavaScript-jに
 var i = new Image(1,1);
 i.src = 'http://サイトB/dummy.gif?' + EscapeURIComponent( document.cookie );
と書いておくと、クライアントがHTML-aにアクセスするとdummy.gifへのクエリーとしてCookie-aがサイトBに向けて送信される。よね? つーか、Cookieを直接送信しなくても今回必要なのは一意なIDなので、doument.cookieでなくてもかまわない。

このようなダミー画像による情報の送信自体は、エンベッド型のアクセス解析ツールでは定石だ。実際、
http://www.google-analytics.com/urchin.js
は、l.171のように、
i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS();
として、ユーザー情報を送信している。

問題は、ここで送信されている情報の中身なんだよねえ…。sについては、ざっと見ると
 - _uBInfo()(ブラウザ環境情報)
 - _uCInfo()
 - ページタイトル
 - リファラー
 - URL
だ。このうちの_uCInfo()が何をやってるのかよくわかんなかった。サイト内でのクライアント特定用Cookieを生成している部分なんだけれど、ダミー画像側には何も送信していないように見える。

…ということなんだよなあ。結局、
「Google Analytics全体で一意なIDをもっているか」
という点については、JavaScriptから見ても
「技術的には可能だがやってないっぽい」
ということだろうか。

でも、そうするとやっぱりGoogleの人が例のカンファレンスで述べた「ファーストパーティクッキー」というものの意味がつかめない。どういうことなんだろうなぁ…。

関連しそうな過去記事:
さらに過去の記事
2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)