首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁止在web浏览器中观看视频时下载temp文件夹中的视频

问禁止在web浏览器中观看视频时下载temp文件夹中的视频
EN

Stack Overflow用户
提问于 2017-01-18 01:36:57
回答 1查看 385关注 0票数 0

我使用Java和html5创建了一个web应用程序。我在tomcat服务器war folder.Say上传了一些视频,我的war文件名是"web“。然后我的视频在/opt/Apache/WebApps/web/ videos /sample.mp4“中。

我正在使用html5视频标签播放视频尺寸超过100mb的videos.Most。我的视频标签是这样的

代码语言:javascript
复制
<video src="/videos/sample.mp4"></video>

每当我播放视频时,都会自动下载到我的c盘的temp文件夹中。我的系统内存大小是128mb。因此,当我观看两个或更多的视频时,突然PC因为内存不足而受到影响。

如何使用jQuery、Java servlet、jsp来避免这种情况

EN

回答 1

Stack Overflow用户

发布于 2017-01-18 01:45:24

根据我的经验,你不能。但试着让它更难下载。

浏览器让抓取变得太容易了

因为这就是浏览器设计的目的:为内容提供服务--这意味着将内容提供给用户。为了向你展示它有多简单,下面是我通常如何在几乎任何视频流媒体网站上抓取视频:

准备您首选的浏览器调试器的网络选项卡,并加载视频。然后在加载的资源中查找它。视频通常以.flv或.mp4格式流传输,音频以.mp3格式传输。当您发现url时,打开一个新的选项卡/窗口,然后打开那里的链接。然后浏览器将下载该文件。

让它更难

下面是让抓取者的生活变得更艰难的方法。就像我之前说的,这些不是简单的方法,但至少可以防止打滑。

视频到画布技术

最近,当我在JS中研究运动检测时,我偶然看到了这篇来自HTML5Doctor的文章。这涉及到通过a流式传输视频,然后使用一些JS,直接将视频复制到a。这是一个例子,视频在前面,而后面的画布则使用来自同一视频的数据。

从本质上讲,您要做的是:

在HTML上预定义或动态插入到DOM中。这是用户看到的“播放器”。通过JS动态创建一个video标签,将其附加到隐藏的DOM中,并为其提供一个要流式传输的url。这将是画布的视频源。然后使用JS,定期从刚创建的中获取数据,并将其绘制到。在这一步中,视频被输入到画布。这是整个程序的基础。由于您的播放器现在是画布和隐藏的真实视频,您可以尝试右键单击您想要的所有内容并保存。由于画布的作用类似于页面上的图像,因此您只能保存画布上显示的帧的快照。至于控件,JS有一个用于控制的API,因此您可以创建自定义按钮和滑块。

但是,如果他们知道你在做这件事,他们会找到你隐藏的视频元素,你就完了。这将我们引向下一种方法,在服务器端的帮助下,它补充了这种仅限前端的技术。

临时资源urls

您可以做的一件事,以防止此方法是防止链接可重用。使链接成为一次性的、临时的、一次性使用的。一旦播放器使用一次性url加载,就处理掉它。使其不可用。

与CSRF预防类似,当浏览器请求包含您的视频的页面时,让它生成一个随机令牌,并将其存储在服务器端的一些存储中,以供以后参考。同时,将其附加到视频的url中,如下所示:

//我们使用此url从您的站点加载一些id为1234324的视频//页面加载时生成的令牌被附加为sid

http://yoursite.com/media.php?video_id=1234324&sid=a0s9d8a98a0d98asd09809wq0e9现在,当你的播放器加载视频时,它将使用这个带有令牌的url。让服务器验证令牌。

如果效果良好,请流式传输视频并销毁服务器上的令牌,以避免重复使用。这本质上使得url“只使用一次”。如果使用了无效的令牌,则返回适当的报头作为响应,比如403。

为了增加一点安全性,可以通过将url的时间戳与令牌一起存储来设置url的过期时间。然后将请求时间戳与存储的时间戳进行比较,如果它仍然在“使用窗口”内。让这个“使用窗口”足够短,以供玩家在页面上使用,但又不足以让滑板抓取url并将其粘贴到另一个选项卡/窗口/下载器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41703555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档