Google AdSense 広告をクリックしてくれたユーザーの情報を取得する方法

Google AdSense 広告の管理画面では
何月何日にどのチャンネルの広告が
何回表示されたかとか何回クリックされたかとか
その程度のことはわかるけど
どんな人がクリックしてくれたかがわからない。
ホスト名とか OS やブラウザの種類とか。

(ここ追記)
この機能が提供されるようになるので、

個々のユーザーの行動追跡をするのではなく
全体像がわかればいいという場合は
正規に提供される機能でよさそうです。
よかったですね。

が、こちらで少し細工してやれば
一人ひとりのユーザー情報について
ある程度までなら取得できるし
クリックした人にだけなんやらかんやらしたりもできる。
多少の取りこぼしはあるし余分な情報もまじるけど。

できると言っているだけであって、
やっていいかどうかは知りません。
多分ダメです。

概要

AdSense 広告の埋め込みコードを
<div>〜</div> で囲んで
その <div> 要素に
mouseover と mouseout のイベントハンドラを与える。

AdSense 広告がクリックされるとき
マウスカーソルは広告の上にある。
ということはその時点で
mouseover イベントが発生している。

広告がクリックされると
ユーザーは広告主のサイトに移動するから
mouseout が発生しないまま
ユーザーは元ページからいなくなる。

もし広告がクリックされなかったら
たぶんマウスカーソルは広告欄の外に移動するから
たぶん mouseout イベントが発生する。

ということは、
いったん mouseover が発生したあと
mouseout がないままユーザーがいなくなったら
広告がクリックされていると判断できる。

なので、次のいずれかの方法を使えば
クリックしたユーザーの情報が取得できることになる。

  • Cookie を使う
  • Ajax を使う

Cookie を使う場合

mouseover があったら
「mouseover があったよフラグ」を Cookie に書き込む。
mouseout があったらそのフラグを取り消す。

次にそのユーザーがこのサイトを訪れたとき
もし Cookie に「mouseover があったよフラグ」があれば
たぶんその人は前回 広告をクリックした人なので
各種情報を頂戴する。

mouseover 中にユーザーがページをリロードしたり
ブラウザを閉じたりしたら
広告がクリックされなくてもフラグはオンになったままなので
その分は誤差だけど、
そういう人はそれほどたくさんはいないと思われるので気にしない。

当然ながら
そのユーザーがサイトを再訪問してくれなかったら取得できない。

Ajax を使う場合

Cookie を使う場合と同じようなことを Ajax でやるだけ。
この場合はユーザーの再訪問を待たないので
その時点で情報を取得することになる。

ただし HTTP リクエストの送信が終わる前に
ユーザーが広告をクリックして移動してしまったら取得できない。

ぐらいかなあ。

くどいようですが、あくまで「できるよね」というだけの話です。
規約上やっていいのかどうかちゃんと調べてないし
何かよくなさそうだし
人道的にもダメな気がするし。

これを悪用すれば
広告をクリックした人にだけゴニョゴニョとかいうことも可能だけど
やらない方がいいと思います。

関連エントリ

  • このエントリーをはてなブックマークに追加