如何使用 Javascript 从他们的 cookie 中提取 Google Analytics 活动数据?
Posted
技术标签:
【中文标题】如何使用 Javascript 从他们的 cookie 中提取 Google Analytics 活动数据?【英文标题】:How do I extract Google Analytics campaign data from their cookie with Javascript? 【发布时间】:2010-12-13 21:42:39 【问题描述】:我希望能够使用 javascript 提取存储在 Google Analytics 跟踪 cookie 中的数据以及所有广告系列跟踪信息。它需要使用 ga.js 而不是 urchin.js 与更新版本的 GA 一起使用。我找到了一种适用于 urchin.js 的方法,但我们不使用它来进行跟踪。有人知道如何从 Google 使用的 cookie 中提取 Campaign
、Source
、Medium
、Content
和 Term
吗?
【问题讨论】:
在这里回答:***.com/questions/934119/… 【参考方案1】:我最终自己解决了这个问题。我只是深入研究了 cookie 存储的内容并提取了信息。这是我想出的:
var ga_source = '';
var ga_campaign = '';
var ga_medium = '';
var ga_term = '';
var ga_content = '';
var gc = '';
var c_name = "__utmz";
if (document.cookie.length>0)
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
gc = unescape(document.cookie.substring(c_start,c_end));
if(gc != "")
var z = gc.split('.');
if(z.length >= 4)
var y = z[4].split('|');
for(i=0; i<y.length; i++)
if(y[i].indexOf('utmcsr=') >= 0) ga_source = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmccn=') >= 0) ga_campaign = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmcmd=') >= 0) ga_medium = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmctr=') >= 0) ga_term = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmcct=') >= 0) ga_content = y[i].substring(y[i].indexOf('=')+1);
我确信它可以更精简,但我很高兴能做到这一点。一旦你有了这些变量,你就可以对它们做任何你需要的事情。
【讨论】:
如果用户通过 AdWords 访问您的网站,这将不起作用,因为这些变量的 AdWords 值不存在于 cookie 中。 不适用于带有 utmz 的 facebook utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/ 这变成这样:["facebook", "", "", "", ""] 因为它执行 gc.split('.') 它从 facebook 中删除 .com【参考方案2】:我已经重写了它以将值解析到关联数组中并使用quicksmode cookie functions:
function parseAnalyticsCookie()
// inspiration from http://***.com/questions/1688657/how-do-i-extract-google-analytics-campaign-data-from-their-cookie-with-javascript
// readCookie is from // http://www.quirksmode.org/js/cookies.html
// utmcsr = utm_source
// utmccn = utm_campaign
// utmcmd = utm_medium
// utmctr = utm_term
// utmcct = utm_content
var values = ;
var cookie = readCookie("__utmz");
if (cookie)
var z = cookie.split('.');
if (z.length >= 4)
var y = z[4].split('|');
for (i=0; i<y.length; i++)
var pair = y[i].split("=");
values[pair[0]] = pair[1];
return values;
【讨论】:
不适用于带有 utmz 的 facebook utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/ 这变成这样:对象 utmcsr: "facebook" where as it应该是 utmsource:facebook.com utmedium:referral utcampaign:(referral)【参考方案3】:现在有效:
function extractAnalyticsData()
var data = ;
var ga_source = '';
var ga_campaign = '';
var ga_medium = '';
var ga_term = '';
var ga_content = '';
var gc = '';
var c_name = "__utmz";
if (document.cookie.length>0)
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
gc = unescape(document.cookie.substring(c_start,c_end));
data.gc = gc;
if(gc != "")
var y = gc.split('|');
for(i=0; i<y.length; i++)
if(y[i].indexOf('utmcsr=') >= 0) data.ga_source = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmccn=') >= 0) data.ga_campaign = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmcmd=') >= 0) data.ga_medium = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmcct=') >= 0) data.ga_content = y[i].substring(y[i].indexOf('=')+1);
if(y[i].indexOf('utmctr=') >= 0) data.ga_term = y[i].substring(y[i].indexOf('=')+1);
return data;
;
extractAnalyticsData();
【讨论】:
似乎可以正确处理 utmz utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/ 的 facebook!结果:对象 gc: "***.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/", ga_source: "facebook.com", ga_campaign: "(referral)", ga_medium: "referral", ga_content: "/" 完美!【参考方案4】:回复 @Eduardo 评论(关于选择的答案不适用于 AdWords),如果您想让它适用于 AdWords 流量,这个答案可能值得一试:
How to capture if a visitor is from a google adwords click
没试过。
【讨论】:
以上是关于如何使用 Javascript 从他们的 cookie 中提取 Google Analytics 活动数据?的主要内容,如果未能解决你的问题,请参考以下文章
requests.Session()从CookieJar加载cookie
如何使用HTML中的Javascript从对象获取多个输出?
设计令牌身份验证 - 如何使用javascript访问响应头信息?