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

2022-08-30 01:02:35

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

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


答案 1

你不能。

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


便捷的“解决方案”

我只是将我的视频上传到第三方视频网站,如YouTube或Vimeo。他们拥有良好的视频管理工具,优化了设备的播放,并且他们努力防止他们的视频被翻录,而您的一端毫不费力。


解决方法 1,禁用“右键单击”

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


解决方法 2,视频播放器库

使用自定义视频播放器库。他们中的大多数都实现了视频播放器,可根据您的喜好自定义上下文菜单。因此,您不会获得默认的浏览器上下文菜单。如果他们确实提供了类似于“另存为”的菜单项,您可以禁用它。但同样,这是JS的解决方法。缺点类似于解决方法 1。


解决方法 3,HTTP 实时流式处理

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


解决方法 4,在画布上绘画

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


解决方法 5,CSRF 令牌

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



答案 2

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

$(document).ready(function(){
   $('#videoElementID').bind('contextmenu',function() { return false; });
});