我在服务器上的一个目录下放置了一个exe文件,并在数百个网站(不是我的)上分享了该文件的链接。我在每个链接的末尾附加了不同的id。现在我已经下载了服务器上的文件。我想跟踪从链接被点击的网站(坐/s可以是任何网站与下载链接和id在网络上),也有一些与下载相关的其他统计数据。
实际上,您可以简单地将DKasipovic的答案改写一下。例如:
RewriteEngine on
RewriteRule ^(.*).(exe|zip)$ /download.php?file=$1.$2 [R,L]
然后在download.php:
$filename = filter_input(INPUT_GET, 'file', FILTER_SANITIZE_SPECIAL_CHARS);
$path = $_SERVER['DOCUMENT_ROOT']."/".filename;
$referer = $_SERVER['HTTP_REFERER'];
if ($fd = fopen ($fullPath, "r")) {
//assume you are tracking via Google Analytics - add UA and filename
$data = array(
'v' => 1,
'tid' =>'UA-XXXXXXXX-X',
'cid' => gen_uuid(),
'dh' => 'example.com',
't' => 'event',
'ec' => 'Download',
'ea' => "$filename",
'el' => "$referer",
'ev' => "",
'ni'=>1
);
$url = 'http://www.google-analytics.com/collect';
$content = http_build_query($data);
$content = utf8_encode($content);
$user_agent = 'OFFLINE TRACK';
$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_POST, TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $content);
curl_exec($ch);
curl_close($ch);
// now give them their file
$fsize = filesize($path);
$path_parts = pathinfo($path);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=".$path_parts["basename"]."");
header("Content-length: $fsize");
header("Cache-control: private");
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd);
exit;
function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0fff ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
您可以向GA报告所有类型的数据,参见https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#content
既然你已经为你的。exe文件提供了直接访问链接,你唯一能做的就是在apache访问日志(或你正在使用的任何web服务器软件的访问日志)中查看下载。
或者如果你正在使用共享主机(可能是cPanel),你可能已经有一些日志统计工具,如awstats。
更好的方法是编写小脚本(例如download.php),它会在打开时将条目写入数据库,然后将exe文件转发给用户。这样你就可以有一个每次下载的数据库。
那么您将共享http://yoursite.com/download.php
,它将作为下载计数器。