Google Analytics实际上有一个协议,可以从任意来源发送分析数据。请参见此处:
https://developers.google.com/analytics/devguides/collection/protocol/v1/
因此,让您的Web服务器向Google发送分析事件并不像看起来那么hacky。我不确定是否可以直接钩入Apache来生成这些事件。但是,我至少看到了两种解决方案。
1)将所有下载重定向到服务器端脚本,该脚本发送数据并可以生成所需的分析事件。
2)解析服务器日志并从中生成分析事件。
编辑解决方案1的示例:
确保在标签之前和之后没有空格,因为这将成为实际发送给客户端的响应的一部分。
download.php:
<?php
$requestedFile = $_GET["file"];
$rawCookie = $_COOKIE["_ga"];
$splitCookie = explode('.', $rawCookie);
$trackingId = $splitCookie[2] . '.' . $splitCookie[3];
$data = array('v' => 1,
'tid' => 'UA-XXXXX-Y',
'cid' => $trackingId,
't' => 'event',
'ec' => 'download',
'ea' => 'download',
'el' => $requestedFile);
$options = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents('https://www.google-analytics.com/collect', false, $context);
if($result === FALSE) { }
if(!file_exists($requestedFile)) { }
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($requestedFile));
$fileHandle = fopen($requestedFile, 'r');
print fread($fileHandle, filesize($requestedFile));
flush();
fclose($fileHandle);
exit;
?>
.htaccess/mod_rewrite规则:
RewriteEngine on
RewriteUrl ^/download/(.*)$ download.php?file=$1 [L]
我已经很久没有写PHP代码了,也没有测试过这个。但是它应该可以很好地说明如何实现选项1)。
编辑2:如果您将跟踪请求发送到www.google-analytics.com/debug/collect,则会收到一些验证信息,告诉您请求是否有效(但不会跟踪事件)。
编辑3:
好的,我已经检查了一个使用analytics.js的页面。该脚本设置了以下cookie:
_ga=GA1.3.1788966449.1501761573
_gid=GA1.3.1010429060.1501761573
在后续的请求中,它设置了
cid:1788966449.1501761573
_gid:1010429060.1501761573
看起来你需要对在_ga cookie中找到的字符串进行一些拆分。(我已经更新了上面的代码)
编辑4: 如果有人想知道,这是analytics.js脚本使用上述cookie值生成的请求。
GET https://www.google-analytics.com/collect?v=1&_v=j56&a=1178408574&t=pageview&_s=1&dl=https%3A%2F%2Fdevelopers.google.com%2Fanalytics%2Fdevguides%2Fcollection%2Fanalyticsjs%2Fcommand-queue-reference&ul=de&de=UTF-8&dt=The%20ga%20Command%20Queue%20Reference%20%C2%A0%7C%C2%A0%20Analytics%20for%20Web%20(analytics.js)%20%C2%A0%7C%C2%A0%20Google%20Developers&sd=24-bit&sr=1920x1200&vp=1899x1072&je=0&_u=QDCAAAIhI~&jid=&gjid=&cid=1788966449.1501761573&tid=UA-41425441-2&_gid=1010429060.1501761573&z=1116872044