【问题标题】:Can i redirect the google analytics snippet to my Server?我可以将谷歌分析片段重定向到我的服务器吗?
【发布时间】:2016-08-23 07:26:35
【问题描述】:

我需要在我的网站http://www.example.com 上实施网络分析。我发现Google的analytics sn-p可以添加到我网站的'footer.php'中,这会触发Google的ga function从而提供分析仪表盘等等。

我必须知道我是否可以更改 JavaScript sn-p 以将数据重定向到我的服务器,以获取原始数据并处理它们。

编辑:我通过谷歌搜索在下面找到了这段代码。但我无法理解它的实际作用,因为我是 JavaScript 的初学者。

<script>
(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.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-YY', 'auto');

// START remote backup of GA data request for Angelfish
ga(function(tracker) {
  var originalSendHitTask = tracker.get('sendHitTask');
  tracker.set('sendHitTask', function(model) {
   var payLoad = model.get('hitPayload');
   originalSendHitTask(model);
   var gifRequest = new XMLHttpRequest();
   // Send __ua.gif to a remote server
   var gifPath = "https://www.your-domain.com/__ua.gif";
   gifRequest.open('GET', gifPath + '?' + payLoad, false);
   gifRequest.send();
  });
});
// END remote backup of GA data request for Angelfish

ga('send', 'pageview');
</script>

【问题讨论】:

  • 这与我下面答案中的代码相同,只是它使用 GET 请求而不是 POST。我链接到的文档中解释了它的作用 - 它调用图像并附加“有效负载”,即 Google 用于跟踪的参数。带有参数的请求将出现在您的服务器日志文件中(或者您将其设为在发送图像之前将数据写入文件的脚本),然后您可以从那里提取和解析数据。

标签: javascript php google-analytics tracking


【解决方案1】:

可以通过添加到sendHitTask来重定向数据,其实解释by example in the GA documentation

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var 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) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

问题的第二部分(如何处理)是在这里广泛回答。

【讨论】:

  • 我一直想尝试一下。想知道到底有多少数据。
  • @Eike Pierstorff 谢谢。我在哪里输入我的服务器的路径?
  • 这行 xhr.open('POST', '/localhits', true)。您将 /localhits 替换为您的服务器的路径。您需要一个脚本,将 post 参数写入日志文件,稍后您可以将其解析为字段以进行聚合。
  • @DaImTo,当然取决于您的站点,但并非不合理(尤其是在云服务时代,您可以将数据转储到 Amazon EC2 实例)。问题在于找到一些有趣的事情来处理 GA 本身或相关工具尚未完成的数据。
  • 为了给我自己的东西添加一个插件,我编写了一个 GA 插件来进行双重跟踪,它还接受辅助跟踪器的自定义路径:flesheatingarthropods.org/double-tracking-in-ga-part-1(或在 github:github.com/flesheatingarthropods/…) .我不确定是否应该在生产中使用它,但它可能会给你一些想法。
【解决方案2】:

终于找到答案了,感谢@Eike Pierstorff。

首先我在网站footer.php的&lt;/body&gt;标签之前添加了以下脚本

<script>
(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','https://www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-XXXXX-Y', 'auto');

 ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var 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) {
  originalSendHitTask(model);
  var payLoad = model.get('hitPayload');
  var xhr = new XMLHttpRequest();
  var gifPath = 'http://YourPath/process_ga_data.php';

  xhr.open('GET', gifPath + '?' + payLoad, false);
  xhr.send();

  });
});

ga('send', 'pageview');
</script>

在我将 Google 分析负载推送到的服务器中,编写了以下 PHP 代码,以将所有参数作为数组提取到 Output.txt 中。

 if (isset($_REQUEST))
 $req_dump = print_r($_REQUEST, TRUE);  
 $file = file_put_contents('output.txt', $req_dump.PHP_EOL, FILE_APPEND);  
 fclose($file);

但是,并不是所有的Measurement Protocol 参数都在列表中,我必须进一步配置。

附:一旦找到获取所有参数的方法,我将编辑此答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多