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. Linux

    無料のWindows10仮想マシンをEdge/IE11検証用途で使う

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

  2. Google Cloud Platform

    Node.js+GAE: 日本語自然文を形態素解析してネガポジ判定をする

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

  3. Adobe Analytics

    Adobe Mobile SDK 4.xからAEP SDKに移行する

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

  4. Adobe Analytics

    Adobe Analytics: ランドスケイプの「企業ログ解析データベースAPI」と連携する

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

  5. Adobe Analytics

    adobe analytics Report Builder

    こんにちは!今回はreport builderを使って、エクセルにaa…

  6. Adobe Analytics

    Adobe Analytics: Webサイト内で発生したJavascriptエラーの内容をAdob…

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

最近の記事

  1. 【GA4/GTM】dataLayerを使ってカスタムイベント…
  2. 【GA4/GTM】dataLayerを活用しよう
  3. ジャーニーマップをデジタルマーケティングの視点で
  4. ChatGPT ProからClaude3 Proへ移行した話…
  5. その分析、やり方あってる?記述統計と推測統計の違い
  1. IT用語集

    コロケーション(Collocation)って何?
  2. Google Analytics 4

    過去取れていたリファラ情報が上手く取れなくなっている問題
  3. Tableau

    DirectionAPI+Tableauでドライブ時間の可視化(後編)
  4. ChatGPT

    ChatGPTとVSCodeの連携方法とその使用例:開発効率を飛躍的にアップさせ…
  5. KARTE

    KARTE:簡単!アンケートの設定、アンケート結果に併せた接客配信
PAGE TOP