youtube 如何防止从其 HTML5 播放器下载视频?
Posted
技术标签:
【中文标题】youtube 如何防止从其 HTML5 播放器下载视频?【英文标题】:How does youtube prevent video from being downloaded from their HTML5 player? 【发布时间】:2014-08-29 09:57:13 【问题描述】:我正在用 html5 编写视频播放器。我试图查看 Youtube 正在做什么以防止有人仅仅获取源(ie: .src
URL)然后下载视频文件,但它没有似乎是可见的。
那么他们是怎么做到的呢?
人们找到解决方法了吗?
是不是有些复杂的 DRM 实现?
【问题讨论】:
clipconverter.cc 所有 youtube 视频都可以下载。有很多浏览器插件可以做到这一点,而无需查看源代码。 “它似乎不可见”是什么意思?我刚刚检查了 YouTube 页面上的 DOM,视频就在那里——它是<div class="html5-video-container">
内的 <video>
元素(它本身在 <div id="movie_player">
内。(在源代码中它是由 javascript 注入的,这是有道理的,因为他们想要首先加载广告和内容。)
对于较长的剪辑,它们会将每个文件分解为具有唯一地址的多个 url,因此您不能一次抓取整个文件,它们可以更好地检测您何时尝试作弊或下载同一件事不止一次和东西(因为那个网址是你一个人的)。
你需要一个像 youtube-dl 这样的工具来保存它们 --- rg3.github.io/youtube-dl
【参考方案1】:
正如我在Quora 上发现的:
YouTube 上发布的视频首先使用 128 位 SSL 加密进行加密,很难破解。此外,对于较长的剪辑,该软件将每个文件分解为多个具有唯一地址的 URL,这使得无法一次性下载视频。这也有助于软件更好地检测视频何时被下载以及该人的身份下载视频,因为每个 URL 都是唯一生成的。
还可以进一步了解如何将视频分成几部分,检查自适应流格式,例如HLS
和DASH
。也建议您检查HLS Streaming
,文件扩展名为.m3u8
。
还有一些公司提供称为Video on Demand(VoD) 的服务可以帮助您。
如果您的视频需要播放器,我推荐VideoJs,它是开源的,在我看来非常强大。
【讨论】:
我不会投反对票(因为对 VOD 等仍然有用)但这是对 Youtube 视频服务方法的错误理解......像 “发布在 YouTube 上的视频首先使用 128 位 SSL 加密……”和 _“……无法一次性下载视频” 不正确。甚至可以从视频页面自己的源代码解析到 MP4 文件的直接链接(对源代码中的某些值进行一些提取和清理工作)。稍后我会在时间允许的情况下解释。 感谢您的注意,正如我提到的那样,这是一项研究,但没有 100% 的方法来阻止下载视频,因为它们在页面源代码中可用。此外,对于 VOD,还有一个完整视频短文件的播放列表,通过将它们绑定在一起,您将拥有视频。【参考方案2】:首先 Youtube 视频可下载 有浏览器扩展程序、第三方网站等可从 youtube 下载。事实上,任何可以通过互联网在浏览器上播放的视频都是可以下载的。
但是,直接使用 HTML5 video
标签嵌入视频非常容易下载。
取w3schools的e示例代码
<video controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
您只需右键单击>另存为视频即可下载。
还有其他方面,这使得这种直接嵌入视频的方法在 Youtube 等服务中无法使用。 视频轨道选择等功能,用于允许多种分辨率,流式传输视频而不是在播放之前下载整个视频,实时流式传输只是这种直接的方法是不可能的。
缓冲方法
使用这种方法,video
元素只指向一个 缓冲区,其中数据使用 Javascript 动态推送。使用这种方法可以实现上述直接方法无法实现的功能。
查看 medium 上的this article,了解如何构建您自己的媒体流 HTML5 播放器。
如果您使用这种方法,那么您网站的用户无法在您的视频上单击右键>保存来下载它。但是,他们可以使用浏览器插件来执行此操作。
【讨论】:
以上是关于youtube 如何防止从其 HTML5 播放器下载视频?的主要内容,如果未能解决你的问题,请参考以下文章