Ton*_*son 12 proxy google-analytics measurement-protocol
我有一种特殊情况,即网站访问者可以从某个域访问该页面而不能访问其他域.因此,只要HTML和资产存储在服务器上就没有问题.另一方面,Google Analytics需要从Googles服务器下载analytics.js,这是不可能的.
所以我正在寻找一种代理方式.网络服务器本身具有互联网接入,可以传递交通信息.要向Google报告我的网页浏览量,可以从Google下载单个像素GIF,如下所述:https://developers.google.com/analytics/resources/concepts/gaConceptsTrackingOverview
我认为在GIF中获取所有参数并使用测量协议从服务器向Google报告是很容易的 - 但是硬件是将所有这些信息提供给服务器.要下载analytics.js并将其修改为我自己的服务器在我看来是一个根本不是未来证据的黑客.要从用户到服务器获取当前页面并不是什么大问题,但我们希望获得用户ID,浏览器版本以及您通过Google Analytics获得的所有内容.
你会怎么做?你找到了解决方案吗?
Eik*_*rff 17
正如我在评论中指出的那样,不再使用utm.gif.Google Analytics已完全切换到测量协议,现在数据已发送到google-analytics.com/collect的测量协议端点.实际上,这仍然返回透明像素,因为使用参数调用图像是跨域边界传输信息的一种可能的方式.
现在,您可以使用Measurement Protocol来实施自己的Google Analytics跟踪器.
要引用自己:
每个调用至少包括您要向其发送数据的帐户的ID,允许将交互分组到会话中的客户端ID(因此每个访问者应该是唯一的,但不能单独识别用户),交互类型(网页浏览,事件,时间等,某些交互类型需要其他参数)和您正在使用的协议版本(目前只有一个版本).
因此,记录网页浏览的最基本示例如下所示:
www.google-analytics.com/collect/v=1&tid=UA-XXXXY&cid=555&t=pageview&dp=%2Fmypage
您可能希望添加用户IP(将自动匿名)和用户代理.
但是,您似乎更喜欢使用标准的Google Analytics代码来收集数据并通过您自己的服务器转发跟踪调用.虽然我没有在生产中使用以下内容,但我认为没有任何理由说它不起作用.
首先,您需要analytics.js文件.不鼓励自托管文件,但是给定的原因是Google有时会更新代码,如果您自己托管代码,则可能会错过更新.这可以通过设置一个定期将文件下载到服务器的cron作业来解决,因此您始终拥有当前版本.
接下来,您将调整GA引导程序功能以从您自己的服务器加载代码:
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.myserver.com/analytics.js','ga');
现在您已拥有代码,但跟踪调用仍将发送到Analytics Server(即在您的情况下,根本不会发送).因此,您需要通过服务器重新路由呼叫.
为了实现这一目标,Google(通用)分析代码具有称为"任务"的功能.任务是跟踪代码中正在组装跟踪调用的功能.
可以使用跟踪器对象的"set"功能,使用taskname作为参数并传递覆盖/重载任务函数的函数来修改任务.
以下几乎是Google文档中的示例(除了我省略了数据仍然发送给Google的部分 - 此时您不需要这样做):
ga('create', 'UA-XXXXX-Y', 'auto');
ga(function(tracker) {
  tracker.set('sendHitTask', function(model) {
    var payLoad = model.get('hitPayload');
    var gifRequest = new XMLHttpRequest();
    var gifPath = "/__ua.gif";
    gifRequest.open('get', gifPath + '?' + payLoad, true);
    gifRequest.send();
  });
});
ga('send', 'pageview');   
现在,这将数据发送到您自己的服务器上名为__ua.gif的文件中(如果您需要跨域发送数据,您只需执行var ua = new Image; ua.src = gifPath +'?'+ payLoad即可创建图像请求).
sendHitTask-function 的模型参数包含(除了大量开销之外)有效负载,即包含分析数据的汇编查询字符串.然后,您可以将_ua.gif作为代理请求的脚本发送到google-analytics.com/collect.
此时,用户代理将是您的脚本,IP地址将是您服务器的IP地址,因此您需要包含&uip(用户IP覆盖)和&ua(用户代理覆盖)参数(https://groups.google.com/forum /#!msg/google-analytics-measurement-protocol/8TAp7_I1uTk/KNjI5IGwT58J)获取地理和技术信息.
如果你感觉更冒险,你可以覆盖它,buildHitTask并尝试在那里添加其他参数(可能更麻烦,因为你需要从某个地方获取IP地址).
有关其他参数,请参阅analytics.js 和Measurement Protocol的参考.
| 归档时间: | 
 | 
| 查看次数: | 7766 次 | 
| 最近记录: |