我已经在我的服务器上的一个目录中放置一个EXE文件,并在网络上的数百个网站(不是我的)上共享该文件的链接。我在每个链接的末尾附加了不同的ID。现在我正在下载服务器上的文件。我想跟踪点击该链接的网站(网站的坐标可以是网站上的任何下载链接和ID)以及与下载相关的其他一些统计信息。如何跟踪服务器上的文件下载?
0
A
回答
1
由于您为.exe文件提供了直接访问链接,因此您只能通过apache访问日志(或访问所使用的任何Web服务器软件的访问日志)来查看下载内容。
或者,如果您使用共享主机(推测与cPanel),您可能已经有一些日志统计工具,如awstats。
更好的方法是编写小的脚本(例如download.php),打开时将数据写入数据库,然后将exe文件转发给用户。这样你可以拥有每个下载的数据库。
然后你会分享http://yoursite.com/download.php
这将作为一个下载计数器。
0
在以下链接中以清晰的方式讨论了该问题。检查出来,让我知道它是否适合你。
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
相关问题
- 1. 如何跟踪文件下载
- 2. 如何跟踪文件下载
- 3. 跟踪文件下载
- 4. AEM packmgr如何跟踪服务器上的软件包版本?
- 5. 如何跟踪Outlook服务器上的邮件
- 6. WebClient.DownloadFileAsync下载服务器上的文件
- 7. 如何从服务器下载文件
- 8. 如何从服务器下载文件?
- 9. 跟踪下载文件时未下载的文件数
- 10. 如何在服务器端上传文件,下载文件serivce
- 11. 从heroku下载未跟踪的文件
- 12. 如何跟踪软件下载源
- 13. 如何跟踪哪些事务挂在SQL服务器上
- 14. 如何跟踪RSpec加载的文件?
- 15. 跟踪软件下载
- 16. 跟踪文件完整下载
- 17. 无法下载跟踪文件
- 18. 如何直接在我的服务器上下载csv文件
- 19. 如何允许下载HTML服务器上的文件?
- 20. 如何跟踪服务器上的特定客户端请求?
- 21. 如何跟踪服务器上的Http协议
- 22. 如何跟踪Nuget.Server上的软件包下载?
- 23. 如何在服务器上从其他服务器下载PDF文件php
- 24. 启用在服务器上跟踪托管的WCF服务
- 25. Asynctask内的服务()或下载经理从服务器上下载文件
- 26. 如何跟踪文件上的更改?
- 27. 如何跟踪sitecore中服务器端的点击事件
- 28. 如何跟踪从SQL Server下载文件的进度?
- 29. 如何跟踪远程网站文件的下载
- 30. 如何从服务器上使用php下载文件
我已经共享的链接数百个站点沿与ID和我不能做任何事情与他们。我是一个新手不能写剧本。如果你能在这方面帮助我。我会非常感谢你。 – user3463098
我可以为你做的事情不多。你是否托管你自己的服务器,或者你在共享(cPanel或类似的)托管? –
我有我自己的服务器 @ D.Kasipovic – user3463098