如何跟踪文件下载

问题描述:

我有一个可以在Flash播放器中播放mp3的网站。如果用户点击“播放”,Flash播放器会自动下载一个MP3并开始播放。如何跟踪文件下载

有一种简单的方法来跟踪了多少次特定的歌曲片段(或任何二进制文件)已经被下载?


是播放链接链接到实际 MP3文件或一些JavaScript代码 弹出一个播放器?

如果是后者,您可以轻松地在其中添加自己的日志代码 ,以便跟踪 的点击次数。

如果是前者,你需要一些 ,它可以跟踪web服务器日志 本身并做出区分。我的 托管计划附带webalizer, 这很好地做到了这一点。

它的JavaScript代码,这样回答说。

然而,这将是很好知道如何追踪透过其他方式下载(无需切换主机)。

有趣的是,我为2天前的所有音乐编写了一个php媒体库。我有类似的问题。我为玩家使用http://musicplayer.sourceforge.net/。播放列表通过php构建。所有音乐的要求去那里一个叫做xfer.php文件脚本= WHATEVER

$filename = base64_url_decode($_REQUEST['file']); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header('Content-disposition: attachment; filename='.basename($filename)); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Length: '. filesize($filename)); 

// Put either file counting code here. either a db or static files 

// 

readfile($filename); //and spit the user the file 


function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_,', '+/=')); 
} 

而当你调用文件使用类似:?

function base64_url_encode($input) { 
    return strtr(base64_encode($input), '+/=', '-_,'); 
} 

http://us.php.net/manual/en/function.base64-encode.php

如果您使用的是一些JavaScript或一个Flash播放器(例如JW播放器)需要实际链接为mp3文件或其他内容,您可以附加文本“& type = .mp3”,以便最终的连接变成如下所示: “www.example.com/ xfer.php?文件= 34842 ffjfjxfh & type = .mp3“。这样,它看起来像一个MP3扩展结束,而不会影响文件链接。

+17

此脚本中存在目录遍历漏洞!攻击者可以通过xfer.php?file = ../../../passwd或其他任何他们想要的东西!小心!!! – 2008-09-22 04:36:40

播放链接是一个链接到实际的mp3文件还是一些JavaScript代码弹出播放器?

如果是后者,你可以很容易地在里面添加自己的日志记录代码来跟踪点击它的数量。

如果是前者,您需要一些可以跟踪Web服务器日志本身并做出区分的东西。我的托管计划附带webalizer,这很好地做到了这一点。

你甚至可以建立一个Apache的.htaccess指令,* .MP3请求转换成查询字符串dubayou正在与。这可能是保持直接请求并且仍然能够将日志功能附加到响应中的一种优雅方式。

使用您的httpd日志文件。安装http://awstats.sourceforge.net/

是否有你的音乐库数据库?如果在下载mp3时有任何服务器代码运行,那么您可以在其中添加额外的代码来增加播放次数。您也可以让JavaScript发出第二次请求来增加播放次数,但这可能会导致人/机器人错误地增加计数。

我曾经为互联网广播网站工作,我们用单独的表格来跟踪每首歌曲播放的时间。我们的流由一个运行icecast的perl脚本提供动力,所以每次开始播放一首新曲目时,我们都会触发数据库请求。然后为了计算播放次数,我们将运行查询来计算歌曲ID在播放日志中的次数。

如果你的歌曲/二进制文件是由apache提供的,你可以很容易地grep access_log来找出下载的次数。一个简单的后logrotate脚本可以grep日志和维护你的计数统计数据库。 由于不在您的实时请求代码路径中,因此具有性能优势。将诸如统计离线等非关键事项做为脱机是将网站扩展到大量用户的好主意。

使用bash:

grep mp3 /var/log/httpd/access_log | wc 

我有东西像AWStats的问题/通过Web服务器日志阅读是大的下载往往可以在日志中的数据块被分割。这使得很难下载确切的下载数量。

我建议Google Analytics(分析)Event Tracking,因为每次点击下载链接时都会注册一次。