Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在web浏览器中观看视频时,禁止在临时文件夹中下载视频_Javascript_Jquery_Jsp_Servlets_Html5 Video - Fatal编程技术网

Javascript 在web浏览器中观看视频时,禁止在临时文件夹中下载视频

Javascript 在web浏览器中观看视频时,禁止在临时文件夹中下载视频,javascript,jquery,jsp,servlets,html5-video,Javascript,Jquery,Jsp,Servlets,Html5 Video,我使用Java和html5创建了一个web应用程序。我在tomcat服务器war文件夹中上传了一些视频。比如我的war文件名是“web”。然后我的视频在/opt/Apache/WebApps/web/videos/sample.mp4”中 我使用html5视频标签播放视频。大多数视频大小超过100mb。 我的视频标签就像 <video src="/videos/sample.mp4"></video> 每当我播放视频时,都会自动下载到我的c驱动器的临时文件夹中。我的

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

我使用html5视频标签播放视频。大多数视频大小超过100mb。 我的视频标签就像

<video src="/videos/sample.mp4"></video>

每当我播放视频时,都会自动下载到我的c驱动器的临时文件夹中。我的系统RAM大小为128mb。因此,当我观看两个或更多视频时,由于内存不足,电脑突然受到攻击


如何使用jQuery、JavaServlet、jsp避免这种情况根据我的经验,你不能。但请尽量让下载变得更困难

浏览器使得抓取变得太容易了 因为浏览器就是这样设计的:服务内容——这意味着将内容提供给用户。为了向您展示这是多么容易,我通常会在几乎任何视频流网站上抓取视频:

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

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

视频到画布技术 最近,我在研究JS中的运动检测时看到了HTML5Doctor的这篇文章。这涉及到通过a流式传输您的视频,然后使用一些JS将视频复制到a。下面是一个示例,其中视频位于前端,而后面的画布接收来自同一视频的数据

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

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

临时资源URL 要防止此方法,可以做的一件事是防止链接重复使用。将链接设置为一次性、临时、一次性使用。一旦播放机使用一次性url加载,请将其丢弃。将其设置为不可用

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

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

现在,当您的播放机加载视频时,它将使用这个带有令牌的url。让服务器验证令牌

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


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

我不在乎用户是否可以下载该视频。但我需要防止自动下载到我们的PC临时文件夹。有没有办法做到这一点?还有一件事我想知道,为什么视频内容会自动从服务器下载到我们的本地PC临时文件夹。