Google Analytics拦截所有请求

Sex*_*yMF 5 javascript google-analytics

每当Google Analytics(分析)将数据发送到服务器时,我都希望获得回调。我也想将相同的数据发送到我的服务器。有可能吗?

https://jsfiddle.net/bk1j8u7o/2/

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-143361924-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-143361924-1');
</script>
Run Code Online (Sandbox Code Playgroud)

Avi*_*tal 5

Google 实际上是使用 gif 将数据同步到其服务器,因此拦截 XHR 请求将不起作用。

在analytics.js中有一个官方的方法可以做到这一点。通过 Tasks,这是一些未经测试的小示例:

ga(function(tracker) {
    var originalSendHitTask = tracker.get('sendHitTask');
    tracker.set('sendHitTask', function(model) {
        var payLoad = model.get('hitPayload');
        originalSendHitTask(model);
        var gifRequest = new XMLHttpRequest();
        var gifPath = "http://localhost/collect";
        gifRequest.open('get', gifPath + '?' + payLoad, true);
        gifRequest.send();
    });
});
Run Code Online (Sandbox Code Playgroud)

确保执行此代码后发送 pageView。