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

    DataWarehouseについて

    はじめまして、インターン生の丸山です。Adobe Analytics…

  2. Adobe Analytics

    ページでの滞在時間とは-Adobe Analyticsの指標説明

    今回はページでの滞在時間について説明いたします。ページでの滞在時間と…

  3. Adobe Analytics

    バウンスと直帰-Adobe Analytics

    こんにちは!インターン生の藤本です。今日はバウンスと直帰について説明…

  4. Adobe Analytics

    Adobe Analytics: データフィードをGoogle Compute EngineのLin…

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

  5. Adobe Analytics

    【実験してみた】CNAMEを使わずにAdobeAnalyticsを1stパーティクッキーで計測する

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

  6. Adobe Analytics

    検索エンジン-自然とは-Adobe Analyticsの指標説明

    こんにちは。インターン生の市川です。今回は検索エンジン-自然について…

最近の記事

  1. AIを使ったマーケティングゲームを作ってみた
  2. Snowflakeや最新データ基盤が広義のマーケティングにも…
  3. 回帰分析はかく語りき Part3 ロジスティック回帰
  4. GCSへのSnowflake Open Catalogによる…
  5. VPC Service Controlsで「NO_MATCH…
  1. Adobe Experience Cloud

    Adobe Summit 2020レポート: Welcome
  2. Enterprise Data Warehouse

    爆速データウェアハウスなApache Druidを試す
  3. Databricks

    ScalaでDatabricksのDataFrameを扱う
  4. Matillion Associate Certification

    Matillion

    Matillion Associate Certification 合格体験記
  5. Generative AI

    Snowflake の Copilot が優秀すぎる件について
PAGE TOP