【发布时间】:2010-10-27 21:10:58
【问题描述】:
是的,我知道您必须将谷歌分析 javascript 嵌入到您的页面中。
但是收集到的信息是如何提交到谷歌分析服务器的呢?
例如,由于浏览器的安全设置(跨域脚本),无法进行 AJAX 请求。
也许有人已经看过令人困惑的 google javascript 代码?
【问题讨论】:
标签: javascript google-analytics tracking
是的,我知道您必须将谷歌分析 javascript 嵌入到您的页面中。
但是收集到的信息是如何提交到谷歌分析服务器的呢?
例如,由于浏览器的安全设置(跨域脚本),无法进行 AJAX 请求。
也许有人已经看过令人困惑的 google javascript 代码?
【问题讨论】:
标签: javascript google-analytics tracking
当 html 页面请求 ga.js 文件时,http 协议会发送大量数据,包括 IP、引用、浏览器、语言、系统。不需要使用ajax。
但是还是有些数据不能这样实现,所以GA脚本把图片放到html中,加上参数,看看这个例子:
@987654321@ title&utmhid=1805038256&utmr=0&utmp=/&utmac=cookie value
这是一张空白图片,有时称为tracking pixel,GA 将其放入 HTML。
【讨论】:
http(s)://www.google-analytics.com/collect?...(带有其他参数名称)来跟踪访问。我找不到有关新参数名称的文档。
这里有一些很好的答案,它们各自倾向于使用一种或另一种发送数据的方法。不过,我觉得上述答案中缺少有价值的参考,并且涵盖了所有方法。
Google 将不同的数据发送方法称为“传输机制”
在 Analytics.js 文档中,Google 提到了它用于发送数据的 three main transport mechanisms。
这指定了发送命中的传输机制。选项是“信标”、“xhr”或“图像”。默认情况下,analytics.js 将尝试根据命中大小和浏览器功能找出最佳方法。如果您指定 'beacon' 并且用户的浏览器不支持
navigator.sendBeacon方法,它将根据命中大小回退到 'image' 或 'xhr'。
这在您希望在用户离开您的网站之前跟踪事件而不延迟导航的情况下很有用。
如果您想知道如何强制 GA 使用特定的传输机制,这里有一个示例代码 sn-p,它强制将此事件命中作为“信标”发送:
ga('send', 'event', 'click', 'download-me', {transport: 'beacon'});
希望这会有所帮助。
另外,如果您对这个主题感到好奇,因为您也想捕获这些数据并将其发送到您自己的网站,我建议您创建一个与 Google Analytics(分析)发送的绑定,这样您就可以获取有效负载并对其进行 AJAX到你自己的服务器。
ga(function(tracker) {
// Grab a reference to the default sendHitTask function.
originalSendHitTask = tracker.get('sendHitTask');
// Modifies sendHitTask to send a copy of the request to a local server after
// sending the normal request to www.google-analytics.com/collect.
tracker.set('sendHitTask', function(model) {
var payload = model.get('hitPayload');
originalSendHitTask(model);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/index.php?task=mycollect', true);
xhr.send(payload);
});
});
【讨论】:
不看代码,我假设他们的数据是从他们在异步请求中收到的 HTTP 标头中收集的。
请记住,大多数浏览器都会发送诸如操作系统、平台、浏览器、版本、区域设置等数据......而且它们确实有 IP,因此它们可以猜测您的位置。而且我假设他们有某种聪明的算法来决定您是否是唯一访问者。
网站上的时间可能是通过使用onUnload() 事件来计算的。
【讨论】:
Google Analytics 网页提供有关 Google Analytics 服务器如何收集数据的详细信息。 http://code.google.com/apis/analytics/docs/concepts/gaConceptsOverview.html
所有 Google Analytics 数据都被收集并打包到请求 URL 的查询字符串中,然后发送到 Google Analytics 服务器。 http 请求是由 Google Analytics JS 激活的 gif 图片(http://www.google-analytics.com/__utm.gif)发出的。
【讨论】:
使用 Firebug 的“网络”选项卡之类的东西很容易分辨。
不需要 Ajax - 因为不是从 Google 获取数据。他们只是将信息编码在查询字符串中,然后使用它加载透明 gif。
【讨论】:
为了扩展其他非常好的答案,Google 确实提供了一个 API 来跟踪网站作者自己在其脚本中向 Google 报告的异步“虚拟浏览量”。
_gaq.push(['_trackPageview', 'my_unique_action']);
他们提供了它,因此可以跟踪不属于常规页面视图和 http 请求的操作。
异步跟踪指南: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html#Syntax
【讨论】:
使用 httpfox 或 firebug Firefox 扩展来确定浏览器发送的 HTTP 请求和接收的响应。
我不知道 Google Analytics 的工作原理,但一种可能是让浏览器下载图像:<img src="http://my-analytics.com" width="1" height="1">(带有单个透明像素),并记录所有 HTTP 请求标头(例如 Referer:)在服务器端。
【讨论】:
//编辑:见底部评论
*好的,在与我的朋友讨论时找到答案 :-) 谷歌分析的信息通过三种方式提交:
【讨论】: