阻止下载 HTML5 视频(右键单击保存)?

IT技术 javascript html html5-video
2021-01-23 15:03:30

如何从浏览器的右键单击菜单中禁用“将视频另存为...”以防止客户端下载视频?

是否有更完整的解决方案来防止客户端直接访问文件路径?

6个回答

你不能那是因为这就是浏览器的设计目的:提供内容但是您可以使其更难下载

首先,您可以禁用该contextmenu事件,也就是“右键单击”。这将防止您的普通滑梯通过右键单击并另存为公然翻录您的视频。但随后他们可以禁用 JS 并解决这个问题,或者通过浏览器的调试器找到视频源。另外这是糟糕的用户体验。上下文菜单中有很多合法的东西,而不仅仅是另存为。

您还可以使用自定义视频播放器库。他们中的大多数都实现了视频播放器,可以根据自己的喜好自定义上下文菜单。所以你不会得到默认的浏览器上下文菜单。如果他们确实提供类似于另存为的菜单项,您可以禁用它。但同样,这是一个 JS 解决方法。弱点与前一个选项类似。

另一种方法是使用HTTP Live Streaming提供视频它本质上的作用是将视频切成块并一个接一个地提供。这是大多数流媒体网站提供视频的方式。因此,即使您设法另存为,您也只能保存一个块,而不是整个视频。使用一些专用软件收集所有块并缝合它们需要更多的努力。

另一种技术是<video><canvas>在这种技术中,使用一点 JavaScript,您在页面上看到的是<canvas>从隐藏的<video>. 并且因为它是 a <canvas>,上下文菜单将使用 an<img>的菜单,而不是 a 的菜单<video>您将获得图像另存为而不是视频另存为。

您还可以使用CSRF 令牌来发挥自己的优势。你会让你的服务器在页面上发送一个令牌。然后您使用该令牌来获取您的视频。您的服务器会在提供视频之前检查它是否是有效令牌,或者获取HTTP 401这个想法是你只能通过拥有一个令牌来获得视频,只有当你来自页面时才能获得该令牌,而不是直接访问视频网址。

归根结底,我只会将我的视频上传到第三方视频网站,例如 YouTube 或 Vimeo。他们有很好的视频管理工具,优化了设备的播放,他们努力防止他们的视频在你端零努力被翻录。

@Cupidvogel “一次性使用 url”是一个服务器端点,它接受服务器生成的令牌。令牌在页面生成时生成,并保存到数据库中。它也随页面src<video>当您的页面加载时,数据库具有令牌,页面具有令牌。一旦<video>开始加载(访问端点),服务器检查令牌是否在数据库中,删除它并流式传输文件。如果第二次访问导致令牌不存在,则不要流式传输文件。
2021-03-11 15:03:30
这取决于浏览器。我见过很多次(尤其是 firefox 和 chrome),如果视频完全加载,当你点击“保存”时,他们只是从缓存中选择视频而不是重新下载(视频已经下载到缓存中,为什么要下载它再次?),因此没有第二个请求。上述方法仅在链接被重用时适用。
2021-03-12 15:03:30
感谢您的详细回答,是否至少可以禁用右键单击菜单中的另存为选项?它将涵盖最基本的知识案例
2021-03-18 15:03:30
好吧,我发现了一篇关于用 div 覆盖视频标签的文章。更新了我的答案
2021-03-24 15:03:30
谢谢。我刚刚阅读了craftymind.com/factory/html5video/CanvasVideo.html这个想法与您的答案几乎相同。
2021-03-24 15:03:30

对于那些希望简单地从 html5 视频中删除右键单击“保存”选项的人来说,这是一个简单的解决方案

$(document).ready(function(){
   $('#videoElementID').bind('contextmenu',function() { return false; });
});
但是,如果在浏览器中禁用了 JavaScript,这将无济于事。
2021-03-16 15:03:30
谢谢,这个解决方案足以满足我们 90% 的访问者的需求。
2021-03-16 15:03:30
布莱。只需检查 Firebug 中的元素,查看src属性,然后在另一个选项卡中打开它或使用wget它来下载它!
2021-03-26 15:03:30
我认为这样做的主要目的是避免“普通”用户下载视频。这是解决这种情况的好方法。
2021-03-26 15:03:30
这真是太好了 !它在阻止普通人下载视频方面做得很好!
2021-03-31 15:03:30

是的,您可以分三步完成此操作:


  1. 将要保护的文件放在运行代码的目录的子目录中。

    www.foo.com/player.html
    www.foo.com/videos/video.mp4

  2. 在名为“.htaccess”的子目录中保存一个文件并添加以下行。

    www.foo.com/videos/.htaccess

    #Contents of .htaccess
    
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://foo.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.foo.com/.*$ [NC]
    RewriteRule .(mp4|mp3|avi)$ - [F]
    

现在源链接没用了,但我们仍然需要确保任何尝试下载文件的用户都无法直接获得该文件。

  1. 获得更完整的解决方案,现在使用 Flash 播放器(或 html 画布)提供视频,不要直接链接到视频。要删除右键单击菜单,请添加到您的 HTML:

    <body oncontextmenu="return false;">
    


结果:

www.foo.com/player.html将正确播放视频,但如果您访问 www.foo.com/videos/video.mp4:

错误代码 403:禁止


这将适用于直接下载、cURL、盗链,你能想到的。

这是对所提出的两个问题的完整回答,而不是对“我可以阻止用户下载他们已经下载的视频吗”这一问题的回答。

很好的答案,但你有一个` 你应该从你的.htaccess内容中删除它
2021-03-11 15:03:30
你仍然可以伪造 HTTP Referer,它允许一个人下载。然而,这是一个非常聪明的解决方案。如果您使用文件上的一次性代码进行俱乐部操作,那么您就可以开始了!
2021-03-17 15:03:30
看来IDM还是可以下载的!
2021-03-20 15:03:30
如果您从浏览器中禁用 javascript,则此技巧将不起作用,因为右键单击将启用。为了避免这种情况,您应该使用 jquery 动态获取和加载视频元素。
2021-03-27 15:03:30
@PersianMan 正确 - 我鼓励你阅读第一个答案
2021-03-30 15:03:30

简单的回答,

你不能

如果他们正在观看您的视频,他们已经拥有

你可以放慢他们的速度,但不能阻止他们。

这不是对任何一个问题的答案。
2021-03-11 15:03:30
人们可以记录他们的整个屏幕和音频并欺骗所有解决方法,这就是为什么他们只能放慢速度。
2021-03-11 15:03:30
顺便说一下,这个答案适用于 HTML5 视频、Flash 视频或您将来可以想象的任何技术。很简单:这就是它的工作原理。
2021-03-27 15:03:30
每次我搜索使我的用户更难下载或复制我们受版权保护的内容(制作成本高、售价高且是独家内容)的技术时,有些人会发布“你不能”。显然,从技术上讲,您总是可以想象一种绕过保护措施的方法,但在实践中,如果一个/两个用户入侵并共享我们的东西,这并不重要,但如果 100% 这样做,我们的公司就结束了。
2021-03-28 15:03:30
@IlanSchemoul 有趣。感谢分享 :)
2021-04-10 15:03:30

我通常使用的最好方法很简单,我在整个页面中完全禁用上下文菜单,纯html+javascript:

 <body oncontextmenu="return false;">

而已!我这样做是因为您始终可以通过右键单击来查看源。
好吧,你说:“我可以直接使用浏览器查看源代码”,这是真的,但我们从你不能停止下载html5视频的事实开始

我认为解决方案必须是不会打扰“普通”用户的,禁用右键单击将阻止用户复制和粘贴一些文本,或搜索他们感兴趣的单词,例如视频的标题,当然不是所有用户都可能会这样做,但对他们中的一些人来说可能会很烦人
2021-03-23 15:03:30