是的,我知道你必须将google analytics javascript嵌入你的页面。
但是如何将收集的信息提交给谷歌分析服务器?
例如,由于浏览器安全设置(跨域脚本),无法进行AJAX请求。
也许有人已经看过令人困惑的谷歌javascript代码?
答案 0 :(得分:26)
当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
这是一张空白图片,有时称为tracking pixel,GA放入HTML。
答案 1 :(得分:8)
这里有一些好的答案,它们单独倾向于使用一种方法或另一种方法来发送数据。然而,我觉得上述答案中缺少一个有价值的参考资料,并涵盖了所有方法。
Google指的是发送数据和传输机制的不同方法'
在Analytics.js文档中,Google提到了用于发送数据的three main transport mechanisms。
这指定了将发送命中的传输机制。选项包括:beacon',' xhr'或' image'。默认情况下,analytics.js将尝试根据命中大小和浏览器功能找出最佳方法。如果您指定“beacon”#39;并且用户的浏览器不支持
navigator.sendBeacon
方法,它将回退到'图像'或者' 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);
});
});
答案 2 :(得分:6)
在不查看代码的情况下,我假设他们的数据是从异步请求中收到的HTTP头中收集的。
请记住,大多数浏览器都会发送操作系统,平台,浏览器,版本,区域设置等数据...而且他们确实拥有IP,因此他们可以猜测您的位置。我认为他们有一些聪明的算法来决定你是否是一个独特的访客。
网站上的时间可能是使用onUnload()
事件计算的。
答案 3 :(得分:6)
Google Analytics网页提供了有关Google Analytics服务器如何收集数据的详细信息。 http://code.google.com/apis/analytics/docs/concepts/gaConceptsOverview.html
收集所有Google Analytics数据并将其打包到请求网址的查询字符串中,然后发送到Google Analytics服务器。 http请求由Google Analytics JS激活的gif图片(http://www.google-analytics.com/__utm.gif)制作。
答案 4 :(得分:4)
通过使用像Firebug的Net标签这样的东西很容易判断。
不需要Ajax - 因为没有从Google获取数据。他们只是在查询字符串中编码信息,然后使用它加载透明的gif。
答案 5 :(得分:2)
为了扩展其他非常好的答案,Google确实提供了一个API来跟踪网站作者自己在脚本中向Google报告的异步“虚拟网页浏览量”。
_gaq.push(['_trackPageview', 'my_unique_action']);
他们提供它,因此可以跟踪不属于常规页面视图和http请求的操作。
异步跟踪指南: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html#Syntax
答案 6 :(得分:1)
使用 httpfox 或 firebug Firefox扩展程序来确定浏览器发送的HTTP请求以及它收到的响应。
我不知道Google Analytics的工作原理,但有一种可能性是让浏览器下载图像:<img src="http://my-analytics.com" width="1" height="1">
(带有单个透明像素),并记录所有HTTP请求标头(例如{{ 1}})在服务器端。
答案 7 :(得分:-1)
//编辑:见底部的咒语
*好的,在与我的一个朋友讨论时找到答案:-) 谷歌分析的信息以三种方式提交: