jPlayer Stream MP3但阻止下载和热链接

时间:2012-12-21 09:02:05

标签: php jquery jquery-ui jplayer

我正在建立一个类似于thefuture.fm的网站。如果只能流式传输或流式传输和下载文件,DJ可以上传MP3文件并进行设置。

网站访问者无需登录即可收听音乐。他们应该能够根据用户设置流式传输/下载这些MP3歌曲。

我正在使用jPlayer播放歌曲。我在网上搜索过但找不到任何解决方案。 jPlayer有没有像阻止下载MP3文件的设施?或者有什么方法可以阻止这种情况吗?

5 个答案:

答案 0 :(得分:14)

实际上不可能阻止下载。你可以让某些人更难,但他仍然需要下载所有数据才能听到这首歌。因此,即使您使用某种加密技术将数据发送到您自己编写的Flash播放器,播放器也必须对其进行解密并播放音频。而且由于你可以反编译闪存,因此很难找到算法。他还可以在播放时再次录制音乐(类似于第一个DVD解密工具,他们只需截取30次/秒即可通过百万美元的安全测量)

所以我们的目标是让它变得更难,而不是不可能。

就个人而言,我会选择临时可用的链接与cookie,所以我仍然可以使用jplayer而不必重新发明轮子。还要使用一些模糊处理来使URL更难阅读。

当有人请求主URL(您显示播放器的位置)时,会生成一个唯一的密钥并将其保存在cookie中。唯一键应链接到IP地址并请求存储在会话中的时间。

现在创建一个音乐文件的链接,如playfile.php?file = music.mp3等等。只需确保PHP将处理文件请求。如果你混淆了这个链接,那么找到它会有点困难。

在playfile.php中检查cookie中的唯一代码,并检查它是否与会话中的IP地址匹配,请求时间小于EG 15秒(任何时候,音乐将无法通过慢速互联网连接播放) 。如果是,则流式传输文件。如果不是,请阻止它。

现在,如果有人会编写程序/脚本来下载音乐,他可以。但如果有人知道并有时间这样做,没有什么能阻止他下载它。

这将阻止任何普通用户下载它。

答案 1 :(得分:5)

防止热链接更容易一些,因为通常你会有一个referrer字符串来检查。如果存在,那么您将知道不提供内容。 Here是一个代码示例。

另一方面防止下载要困难得多 - 最好的方法是让Flash应用程序实时解密数据 - 如果使用简单的加密方案,大多数客户端硬件应该足够快。我在网上找不到这个,所以我想知道你是否需要自己做一些Flash / Flex开发:以块的形式下载MP3数据,从库中应用解密例程,然后将它们发送到某种MP3解码缓冲区。我怀疑密码会被硬编码。

附录:我发现在Flash的更高版本中,您可以从缓冲区(see here)播放动态生成的声音。因此,如果您愿意参与某些Flash / Flex开发,那么就可以看到解决方案。我找不到任何可以访问低级MP3例程的东西,但不要忘记文件不必是从服务器传输的MP3 - 将它们转换为您的应用程序所需的任何内容。

答案 2 :(得分:4)

使用JavaScript解决方案无法实现您要搜索的内容。如果你想让javascript播放,它必须下载它,为了下载它,JavaScript需要一个URL。

解决此问题的最常见方法是使用Adobe Flash并在其中制作播放器。你可以让你的播放器流内容(在你的情况下是mp3),而不用显式地向用户公开实际的数据位置。

答案 3 :(得分:4)

将文件放在无法从浏览器访问的位置,并使用PHP将它们作为一系列块使用HTTP/1.1 206 Partial Content进行流式传输。然后使用this之类的方法编辑上下文菜单,添加/删除“另存为”。

使用会话var消除直接链接。

答案 4 :(得分:0)

实际上,有一个玩家可以抓住这个网址而且效果非常好。我们使用它是因为这个出色的功能。下载/保存音频并非不可能,但至少不仅仅是打开检查器并复制网址。它还可以防止通过URL与外部源共享。因此,与上述相反,它是可能的并且可用:)

检查插件: https://wordpress.org/plugins/mp3-jplayer/