2019/02/20
CSSでユーザーのトラッキング
githubはこちらです。
JSを使わずにCSSだけでユーザーのトラッキングができます。
そういう発想があるのはすごいと思います。
基本的な仕組みはCSSのurl()関数を使います。
リンクのトラッキング
特定のリンクをクリックしたり、ホバーしたりする際に、指定のUPLにリクエストを送りたら、
サーバー側は情報を取得できます。
CSS
1 2 3 | #link2:active::after { content: url('track.php?action=link2_clicked'); } |
ブラウザの判定
@supportsを使用して、ブラウザーが特定のCSS機能をサポートするかを確認して判定します。
例:
Firefox : -moz-appearance
Safari or Chrome : -webkit-appearance
CSS
1 2 3 4 5 | @supports (-webkit-appearance:none) { #chrome_detect::after { content: url("track.php?action=browser_chrome"); } } |
ホバー時間
新しいキーフレームを定義して、新しいキーフレームがリクエストされるたびにurlをリクエストます。
CSS
1 2 3 4 5 6 7 8 | @keyframes pulsate { 0% {background-image: url("track.php?duration=00")} 20% {background-image: url("track.php?duration=20")} 40% {background-image: url("track.php?duration=40")} 60% {background-image: url("track.php?duration=60")} 80% {background-image: url("track.php?duration=80")} 100% {background-image: url("track.php?duration=100")} } |
定義されたキーフレームをアニメーションとして使用します。
その持続時間が最大測量時間と同じです。
そうすると、特定のエリアでマウスを動かしていた時間を測量できます。
CSS
1 2 3 4 5 6 7 8 | #duration:hover::after { -moz-animation: pulsate 5s infinite; -webkit-animation: pulsate 5s infinite; /*animation: pulsate 5s infinite;*/ animation-name: pulsate; animation-duration: 10s; content: url("track.php?duration=-1"); } |
選択の解析
ユーザーはチェックボックスをチェックしたかどうかは、CSSの:checkedを使用します。
CSS
1 2 3 | #checkbox:checked { content: url("track.php?action=checkbox"); } |
ユーザーはフォームに特定の文言を入力したかどうかは、HTMLのpattern属性を使用します。
:validと組み合わせて、正規表現で入力した値と一致したら指定のUPLにリクエストします。
HTML
1 | <input type="text" id="text_input" pattern="^test$" required> |
CSS
1 2 3 4 | #text_input:valid { background: green; background-image: url("track.php?action=text_input"); } |
一切CSSが使われないなら、この通りでトラッキングを避けるのは可能ですが、難しいと思います。
Author Profile
スターフィールド編集部
SHARE