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. Google Analytics

    Google Analytics: ユニバーサルアナリティクスの拡張Eコマース用dataLayerを…

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

  2. Databricks

    Databricks: Spark DataFrameでピボットグラフを作る

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

  3. Adobe Dynamic Tag Manager

    Tag Manager: Adobe DTM で Google Analytics (gtag.js…

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

  4. Adobe Analytics

    Adobe Analytics:セグメントの落とし穴:滞在時間がおかしくなる

    Adobe Analyticsの持つ機能の中でも特に強力で便利な機能の…

  5. Adobe Analytics

    Adobe Analytics: BigQueryにロードしたデータフィードをDataStudioで…

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

  6. Adobe Analytics

    BigQuery: Adobe Datafeed: event_listカラムの手軽な扱い方

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

最近の記事

  1. databricksのnotebookを使ってみよう その1…
  2. databricks:GCPで利用を開始する
  3. KARTE「オフラインデータをオンライン接客に活用する」
  4. ELB (ALB・NLB・CLB) をサクッと学ぶ
  5. Direct Connect vs Site to Site…
  1. Linux

    Linux技術者資格のLPIC-3試験に合格しました
  2. Google Cloud Platform

    GoogleNext 2019レポート:2日目
  3. Amazon Web Services

    IAM (Identity and Access Management) を理解…
  4. Adobe Analytics

    Adobe Analytics: Datafeedにデバイスデータがないけど慌て…
  5. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する
PAGE TOP