JavaScriptを使用せずにサードパーティドメインにGoogleアナリティクストラックを渡す





についての記事は何ですか?





送信する理由



購入のための支払いシステムへの移行中にユーザーに関する情報を失ったり、サイトのエコシステムへの旅行中にユーザーに関する情報を失わないようにするため。



javascriptを使用しないのはなぜですか?





この方法の本質は簡単です。 __utmタイプのすべてのCookieを取得し、それらをパラメーターとして別のドメインのURLに渡します。 何も起きていません。 分岐します。 最後のパラメーター__utmkを追加します。これは、他のすべてのGoogleアナリティクスCookieの特別なハッシュです。 おめでとうございます、Googleアナリティクスの有名なga.jsファイルで_link関数が行うことを行いました。

したがって、コントローラーが他のサイトへの移行を処理した場合、すべてのリンクにフォームのデザインを追加する必要はありません



onclick="_gaq.push(['_link', 'https://www.payment-system.com?contractId=example']); return false;"
      
      







utmkキーのハッシュ生成ソースが必要な場合は、githubにアクセスしてください。

さらに、このメソッドを取得するプロセスのストーリー。







1.割り当てられた割り当て:

「サイトから支払いシステムへのすべての移行に対するGoogleアナリティクスの利用」

説明:

「私たちのソフトウェアを購入した最も重要なユーザーに関する情報([出身]、探していた、[購入]ボタンにたどり着いた方法)が失われています。



分析ドキュメントでは、次の形式の設計を使用することを推奨しています。



 onclick="_gaq.push(['_link', 'http://another-domain.com']); return false;"
      
      





そして、別のドメインにつながるすべてのリンクに彼女を置きます。

それが問題です。支払いシステムへのリンクはありません。 いくつかのステップがあるバスケットがあります。 そして、どの支払いシステムをどのパラメーターで使用するかを決定するコントローラー。 次に、ユーザーを支払いシステムにリダイレクトします。

「怠zyなアイデア」が頭に浮かびます。 ドックから分析関数を呼び出して、ユーザーが確認ボタンを押す中間ページを作成することもできます。 または、javascriptがリンク/フォームを形成し、ユーザーをリダイレクトします。 しかし、私たちはこれらのアイデアを欠陥としてすぐに破棄し 、ドキュメントをさらに読みに行きます。



あるドメインからのセッションは、適切に設定されたクリックまたはフォーム送信、または_getLinkerURLを介してのみ別のドメインに転送できます




など。 利用可能:ユーザークリック、フォーム送信、javascriptメソッド。 だけ? のみ! ほんと?







ユーザーがonclick属性が設定されたリンクをクリックするとどうなるか見てみましょう。



検索エンジンを使用してサイトを検索し、リンクをたどり、分析からのCookieデータを取得します。

 __utma 31500988.382379344.1389384850.1389388916.1389389624.3 __utmb 31500988.1.10.1389389624 __utmc 31500988 __utmz 31500988.1389389624.3.2.utmcsr=yandex|utmccn=(organic)|utmcmd=organic|utmctr=_
      
      





各Cookieの詳細については、 こちらをご覧ください



_gaq.pushを呼び出すテストhtmlリンクを介して支払いシステムに行きましょう( 'link' ...ドキュメントで説明されています。

ブラウザコンソールを使用すると(より便利です)、パラメーターがURLに追加されたことがわかります。



 __utma 31500988.382379344.1389384850.1389388916.1389389624.3 __utmb 31500988.1.10.1389389624 __utmc 31500988 __utmz 31500988.1389389624.3.2.utmcsr=yandex|utmccn=(organic)|utmcmd=organic|utmctr=_ __utmk 88022362 __utmv - __utmx -
      
      





Cookieも(別のドメインで既に)utma、utmb、utmc、および最も重要なutmzに設定され、その中に値utmcsr = yandex | utmccn =(organic)| utmcmd = organic | utmctr = our_queryが転送されました



その後、彼は行き詰まりに陥り、クライアントなしで既知のcookieの4つの値をurlパラメーターとして渡そうとしましたが、アナリストがトラックとして設定することを頑なに望みませんでした。

ga.js、ga_debug.js、またはそれらの縮小化の分析では結果が得られませんでした。 美しい ga.jsを作成しようとしても何も起こりませんでした。



気配りのある人は、javascriptの処理後、リクエストに3つの新しいパラメーターが表示されることにすでに気付いています。



 __utmk 88022362 __utmv - __utmx -
      
      





私はこれに気づいたが、少し後で。 少し掘り下げて、Habrに関する同様の記事へのこのコメントに出会いました。



これらは、Adobe FlashのGoogleアナリティクストラッキングでソートされることが判明しました。

小規模の場合はそのままです。 すべてのCookieに基づいてハッシュが形成され、__ utmkで記述され、書き換えられることを確認します
Javaハッシュ生成関数:
 /** * Generate hash for input string. This is a global method, since it does not need * to access any instance variables, and it is being used everywhere in the GATC module. * @param input Input string to generate hash value on. * @return Hash value of input string. If input string is undefined, or empty, return hash value of 1. */ public function generateHash( input:String ):int { var hash:int = 1; // hash buffer var leftMost7:int = 0; // left-most 7 bits var pos:int; // character position in string var current:int; // current character in string // if input is undef or empty, hash value is 1 if(input != null && input != "") { hash = 0; // hash function for( pos = input.length - 1 ; pos >= 0 ; pos-- ) { current = input.charCodeAt(pos); hash = ((hash << 6) & 0xfffffff) + current + (current << 14); leftMost7 = hash & 0xfe00000; if(leftMost7 != 0) { hash ^= leftMost7 >> 21; } } } return hash; }
      
      







PHPで



結論として、同じトラック値に対して、両方のオプション(javascript-ga.js-link()およびphp generateHash)が__utmkに同じキーを生成し、必要なトラックがサードパーティドメインにインストールされていることを確認します。



結論:



クロスドメイントラッキングの新しい方法があります。 良くも悪くもなく、ただ違います(サーバー側)。



All Articles