是的,我知道您必须将谷歌分析 javascript 嵌入到您的页面中。
但是收集到的信息是如何提交到谷歌分析服务器的呢?
例如,由于浏览器的安全设置(跨域脚本),无法进行 AJAX 请求。
也许有人已经看过令人困惑的 google javascript 代码?
是的,我知道您必须将谷歌分析 javascript 嵌入到您的页面中。
但是收集到的信息是如何提交到谷歌分析服务器的呢?
例如,由于浏览器的安全设置(跨域脚本),无法进行 AJAX 请求。
也许有人已经看过令人困惑的 google javascript 代码?
当 html 页面请求 ga.js 文件时,http 协议会发送大量数据,包括 IP、引用、浏览器、语言、系统。没有必要使用ajax。
但是还是有些数据不能这样实现,所以 GA 脚本把图片放到了 html 中加上了额外的参数,看看这个例子:
http://www.google-analytics.com/__utm.gif?utmwv=4.3&utmn=1464271798&utmhn=www.example.com&utmcs=UTF-8&utmsr=1920x1200&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.0%20r22&utmdt=Page title&utmhid=1805038256&utmr=0&utmp=/&utmac=cookie value
这是GA 放入 HTML的空白图像,有时称为跟踪像素。
这里有一些很好的答案,它们各自倾向于使用一种或另一种方法来发送数据。不过,我觉得上述答案中缺少有价值的参考,并且涵盖了所有方法。
谷歌提到了发送数据的不同方法“传输机制”
在 Analytics.js 文档中,Google 提到了它用于发送数据的三种主要传输机制。
这指定了发送命中的传输机制。选项是“信标”、“xhr”或“图像”。默认情况下,analytics.js 将尝试根据命中大小和浏览器功能找出最佳方法。如果您指定 'beacon' 并且用户的浏览器不支持该
navigator.sendBeacon
方法,它将根据命中大小回退到 'image' 或 'xhr'。
如果您希望在用户导航离开您的站点之前跟踪事件,而不会延迟导航,这非常有用。
如果您想知道如何强制 GA 使用特定的传输机制,这里有一个示例代码片段,它强制将此事件命中作为“信标”发送:
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()
事件来计算的。
谷歌分析网页提供了谷歌分析服务器如何收集数据的详细信息。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 的 Net 选项卡之类的东西很容易分辨。
不需要 Ajax - 因为没有从 Google 获取数据。他们只是将信息编码为查询字符串,然后使用它加载透明 gif。
为了扩展其他非常好的答案,谷歌确实提供了一个 API 来跟踪网站作者自己在他们的脚本中向谷歌报告的异步“虚拟浏览量”。
_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">
带有单个透明像素),并Referer:
在服务器端记录所有 HTTP 请求标头(例如 )。
//编辑:见底部的评论
*好的,在与我的朋友讨论时找到答案 :-) 谷歌分析的信息通过三种方式提交: