Adobe Analytics

AA + GA : SafariのITP2.1に備えてphpでクッキーを永続化する

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

Safariがますます無慈悲になってまいりました。
ITP2.1ではHttpOnly属性+Secure属性のないCookieは有効期限が最大7日までになります。

本件について、まだAdobeとGoogleから2019年3月21日現在、公式な見解が出てません。

というわけで、ITP2.1からAdobeAnayticsとGoogleAnalyticsのクッキーを自衛する手っ取り早い方法を考えました。

実装したサイトはこちら。
二代目俺のメモ

上記サイトは私個人のサイトでして、Wordpressで動かしてます。
Wordpress = つまりPHPが動くサイトなのでPHPを使ったプログラムが動きます。

じゃ、AAとGAが生成するクッキーを単純にPHPを使ってHttpOnly属性とSecure属性を追加したコピーを複製して、消されたらコピーから復元すればいいじゃん、と思って実装したのがこちらのPHP。

用意するPHPコード

itp.php

$domain = '.kwonline.org';
$expire = time() + 60 * 60 * 24 * 730;

//Adobe Analytics
$itp_amcv = $_COOKIE['itp_amcv'];
//Cookie名にAdobeOrgIDが入ります。AdobeOrg前の%40はデコードしておく。
$org_amcv = $_COOKIE['AMCV_0123456789@AdobeOrg']; 

if ($org_amcv) {
    setcookie('itp_amcv', $org_amcv, $expire, '/', $domain, 1, 1);
} else if ($itp_amcv) {
    //Cookieをセットするときは@を%40にエンコードしておく。
    setcookie('AMCV_0123456789%40AdobeOrg', $itp_amcv, $expire, '/', $domain);
    setcookie('itp_amcv', $itp_amcv, $expire, '/', $domain, 1, 1);
}
  
//Google Analytics
$itp_ga = $_COOKIE['itp_ga'];
$org_ga = $_COOKIE['_ga'];
if ($org_ga) {
    setcookie('itp_ga', $org_ga, $expire, '/', $domain, 1, 1);
} else if ($itp_ga) {
    setcookie('_ga', $itp_ga, $expire, '/', $domain);
    setcookie('itp_ga', $itp_ga, $expire, '/', $domain, 1, 1);
}

itp_gif.php

include_once('./itp.php');

//1x1ピクセルの透過gifを配信
header('Content-Type: image/gif');
echo base64_decode('R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==');

で、これをどう使うか。そしてどこに設置するか。

1. AA/GAタグが埋まってるPHPページ本体でこの処理を実施。
2. 初回訪問ユーザーはAA/GAタグ発火後にこれらのクッキーが生成されるので、BODY末尾に透過GIFとしても呼び出す。

なんと、2箇所で呼び出す必要があるわけです。

1.は、既に過去に訪問した事があるSafariユーザー向けで、JSによるデフォルトクッキーが消えてる場合に、永続クッキーから訪問者IDを「復元」してあげるため。
2.は、初回訪問で永続クッキーがまだないSafariユーザーのために、改めて永続クッキーをセットしてあげるため。

メンドクサイが仕方ない。

いざ実装

というわけで、1.の実装。
Wordpressテーマファイルのheader.phpでまずitp.phpをインクルード。

直下にインクルード

続いて、2.の実装。
ウィンドウ読み込みのタイミングでGIF画像をタグマネージャーで配信します。
手っ取り早く、GTMのカスタム画像タグで配信します。
拡張子は.phpですが、これでgif画像が配信されます。

ウィンドウ読み込みで透過GIFを配信

以上で実装完了。

ブラウザでサイトにアクセスすると、Adobe用のitp_amcvクッキーとGoogle用のitp_gaクッキーが出来上がってます。

いずれも、HttpOnly属性とSecure属性になってます。

HttpOnly+SecureなCookieの出来上がり

元のAdobeクッキー(AMCV)と、Googleクッキー(_ga)を削除してブラウザをリロードすると、見事に同じ内容でクッキーが復活します。

Adobe Analytics

Adobeのクッキーが復活

Google Analytics

Googleのクッキーも復活

まとめ

これでAAとGAの訪問者クッキーを永続化出来ますが、もちろんデメリットもあります。
サーバー側の処理も増えるし、ネットワークの通信量も増えます。

ITPの対策はJavascriptだけではどうにもなりません。
クッキーの代わりにローカルストレージを使う方法もありますが、Appleの中の人が「いずれローカルストレージも消す」という事を示唆していました。
こうなるともはやサーバーサイドの対応が必須です。
これは覚悟すべき。

もちろん何も対策せずに、広告流入から7日間だけで勝負するという判断もありです。

対策を忘れてあとになって「クッキー消されたSafari氏ね」と匿名掲示板に書き込んで気を紛らわせるという選択もあります(謎

弊社ではAdobe認定エキスパートとGoogleクラウド認定データエンジニアたちが、日進月歩のマーケティングテクノロジーを活用したデータ分析基盤構築のお手伝いをしております。
お問合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまで

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Adobe Analytics

    Adobe AnalyticsのDatafeedをBigQueryのColumn-based Tim…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  2. Adobe Analytics

    Adobe AnalyticsとGoogle Analyticsの違い③ カスタム計測のされ方の違い…

    こんにちは。CEOの原田です。今回もAAとGAの違いを述べていきま…

  3. Adobe Analytics

    Adobe Analytics: データフィードをGoogle BigQueryのテーブルにロードす…

    ※2019年9月4日追記この記事は情報が古いので、新しい記事を書き…

  4. Adobe Analytics

    Adobe Analytics: DatafeedのログからフォールアウトレポートをBigQuery…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  5. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  6. Adobe Analytics

    Looker: エンジニアがBIで分析ダッシュボードを作る

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

最近の記事

  1. Streamlitを使った簡単なデータアプリケーション作成ガ…
  2. 生成AI機能を活かしたデータカタログ製品「Secoda」を試…
  3. 回帰分析はかく語りき Part2 重回帰分析
  4. 第14回関西DB勉強会-Snowflake Summit参加…
  5. Open Interpreter+VScode+Docker…
  1. IT用語集

    UI、CUI、GUI、UXって何?
  2. ObservePoint

    実はSEO以上の効果がある!?Webサイトの「監査」とは?
  3. Adobe Analytics

    Adobe Summit 2020レポート: Customer Journey …
  4. ObservePoint

    今こそCookieについておさらい
  5. Google Analytics

    初めてのGoogle Analytics分析
PAGE TOP