2014-03-26 53 views
0

我已经在我的服务器上的一个目录中放置一个EXE文件,并在网络上的数百个网站(不是我的)上共享该文件的链接。我在每个链接的末尾附加了不同的ID。现在我正在下载服务器上的文件。我想跟踪点击该链接的网站(网站的坐标可以是网站上的任何下载链接和ID)以及与下载相关的其他一些统计信息。如何跟踪服务器上的文件下载?

回答

1

由于您为.exe文件提供了直接访问链接,因此您只能通过apache访问日志(或访问所使用的任何Web服务器软件的访问日志)来查看下载内容。

或者,如果您使用共享主机(推测与cPanel),您可能已经有一些日志统计工具,如awstats。

更好的方法是编写小的脚本(例如download.php),打开时将数据写入数据库,然后将exe文件转发给用户。这样你可以拥有每个下载的数据库。

然后你会分享http://yoursite.com/download.php这将作为一个下载计数器。

+0

我已经共享的链接数百个站点沿与ID和我不能做任何事情与他们。我是一个新手不能写剧本。如果你能在这方面帮助我。我会非常感谢你。 – user3463098

+0

我可以为你做的事情不多。你是否托管你自己的服务器,或者你在共享(cPanel或类似的)托管? –

+0

我有我自己的服务器 @ D.Kasipovic – user3463098

2

其实,你可以简单地逆转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