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-分析ワークスペースの使い方

    こんにちは!インターン生の藤本です。今回はフリーフォームを使用した分…

  3. Adobe Analytics

    Adobe Analytics:自動で分析してくれる貢献度分析(異常値検出)機能

    こんにちは、CEOの原田です。今回は随分前から公開されてるのに…

  4. Adobe Analytics

    イベント前の時間とは-Adobe Analyticsの指標説明

    こんにちは。インターン生の市川です。今回はイベント前の時間を説明いた…

  5. Adobe Analytics

    AdobeAnalytics Datafeed: BigQueryのSIGN関数を使った小ワザ

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

  6. Adobe Analytics

    異常値検出とは-Adobe Analyticsの指標説明

    今回は異常値検出について説明いたします。異常値検出とは過去のデータ…

最近の記事

  1. Mouseflowのセッションリプレイのしくみ
  2. LangChainって何?: 次世代AIアプリケーション構築…
  3. 1st Party Cookieと3rd Party Coo…
  4. Amplitudeで何が分かる?
  5. SnowflakeのHybrid Tableのマニュアルを読…
  1. Python

    PyTorchのキホンを理解する
  2. Tableau

    Tableauで強調円グラフを作ってみた〜特殊チャート①〜
  3. Matillion Associate Certification

    Matillion

    Matillion Associate Certification 合格体験記
  4. Google Analytics

    【UAとは違う!?】GA4で変更された”イベント”につい…
  5. ヒートマップ

    ユーザビリティの検証で気を付けたいこと、やってはいけないこと①
PAGE TOP