通过 PHP 如何让人们更难下载 HTML5 中的音频?
Posted
技术标签:
【中文标题】通过 PHP 如何让人们更难下载 HTML5 中的音频?【英文标题】:Via PHP how to make it more difficult for people to download audio in HTML5? 【发布时间】:2015-08-30 16:10:32 【问题描述】:我的音频位于 /home/user/audio。我知道阻止下载是不可能的,但我只想让大多数人很难做到。我关注了这个帖子:setting-up-apache-to-serve-php-when-an-mp3-file-is-requested
但人们仍然可以通过右键单击音频元素时选择“将音频另存为”来轻松下载 mp3。
这是音频链接页面上的代码:
$link="http://www.example.com/getaudio.php?name=$filename";
echo '<audio src="'.$link.'"' . ' autoplay controls>';
这里是getaudio.php
$name=$_GET['name'];
$filename="/home/user/audio/".$name.".mp3";
if (file_exists($filename))
header("Content-Type: audio/mpeg");
header('Content-Length: ' . filesize($filename));
header('Content-Disposition: inline; filename="blah.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($filename);
exit;
else
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
知道为什么尽管如此,人们可以如此轻松地下载 mp3 吗?在链接的示例中,我没有看到任何明显的遗漏,但我一定遗漏了一些明显的东西!
编辑:我的帖子与提到的不同,因为我试图避免使用 javascript 方法,而是使用 php,并禁用“将音频另存为”菜单项。最后,我最终使用了一条 js 行来禁用“将音频另存为”菜单项,因为音频元素本身不允许这样做。
谢谢
【问题讨论】:
我会说不要打扰。甚至 youtube 也可以下载它的东西。实际上有一个很好的收藏 我很想不想打扰......但也许在 php 文件中我可以检查引用者?我至少想让人们使用 3rd 方插件来获取音频,而不是给他们一个简单的“另存为”链接...... Audio tag security in html5的可能重复 【参考方案1】:听起来可能与解决方案相反,但答案主要在客户端。 我会将音频分成多个部分。然后一一播放。大多数人很难合并多个视频文件。
您的客户端将如何管理多部分音频: 加载音频的第一部分并开始播放。一旦你开始播放它,开始加载音频的第二部分,一旦加载第二部分是done,然后只加载第三部分等等,否则大多数会遇到缓冲问题(如果你把它分成很多部分)和你的服务器将比所需的更忙。
一旦视频的第一部分是complete,立即播放第二个音频。
【讨论】:
【参考方案2】:我意识到我可以简单地做到这一点:
echo '<div oncontextmenu="return false;"><audio src="'.$link.'"' . ' autoplay controls></div>';
所以现在至少有些人会被吓倒。谢谢。
【讨论】:
以上是关于通过 PHP 如何让人们更难下载 HTML5 中的音频?的主要内容,如果未能解决你的问题,请参考以下文章