2016-08-23 27 views
0

我需要在我的网站http://www.example.com上实施网站分析。我发现Google的分析代码片段可以添加到我的网站的“footer.php”中,这会触发Google的ga function,从而提供分析仪表板等。我可以将google分析代码片段重定向到我的服务器吗?

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

编辑:我发现下面的代码,通过谷歌搜索。但是我无法理解它实际上做了什么,对于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> 
+0

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

回答

0

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

首先,我的网站footer.php

<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> 

以及服务器到我推谷歌Analytics(分析)有效载荷的</body>标记之前附加以下脚本,下面的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参数列表,我不得不进一步配置。

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

2

您可以通过向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'); 

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

+0

我保持尝试的意思。想知道有多少数据。 – DaImTo

+0

@Eike Pierstorff谢谢。我在哪里输入我的服务器的路径? –

+0

这是行xhr.open('POST','/ localhits',true)。用您的服务器路径替换/ localhits。您需要一个将post参数写入日志文件的脚本,稍后您可以将这些参数解析为聚合字段。 –

相关问题