02.22 就是这家伙URL.createObjectURL()导致了视频无法下载

引言

当你看到一些视频,是不是心里 发痒,想把他下载下来?于是你开始了下面的操作:在浏览器上,右键,选择“检查”,鼠标点到视频上,很快的,在源代码里看到了视频引用的mp4文件。


就是这家伙URL.createObjectURL()导致了视频无法下载

然后,你选择视频代码,右键选项在Tab里打开,浏览器就打开了视频,再一次选择“另存为...”,就把视频保存到自己的电脑上了。

就是这家伙URL.createObjectURL()导致了视频无法下载

video标签

在新版的HTML5里,W3C提出了video标签,video标签成为了浏览器行业标准(现在很少有视频再用flv了),video有一个src属性,他设定的是视频/音频地址,因此,上面的视频,代码其实是:

<code>  <video>/<code>

没错,就是这么简单,video告诉浏览器这是一个视频,src告诉浏览器这个视频的地址是 music.mp4,然后浏览器就开始播放了。


URL.createObjectURL()加密

video出来后,那些视频大厂不愿意了,自己的视频,瞬间可以被别人下载,不行,我要加密,怎么加密呢?既然视频是通过src看到视频实际地址的,那我就对src加密,给用户一个假地址。

因此,全球视频大厂联合技术大厂推出了一个函数:URL.createObjectURL() 并让所有浏览器都支持它。看看这个函数的介绍,内容很晦涩,总之其实就是几句话:生成一个虚假的URL。

<code>URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。/<code> 
就是这家伙URL.createObjectURL()导致了视频无法下载

如何生成虚拟URL

为了说明如何生成虚拟URL,下面模拟的是一个小的视频代码段:用户选择一个视频文件,然后利用URL.createObjectURL生成一个虚拟URL,再把这个虚拟URL给视频。

<code>       <video> /<video>        /<code>

现在,你再查看源代码,你看到了视频源代码,然后看到了视频使用的src地址


就是这家伙URL.createObjectURL()导致了视频无法下载

可以当你兴致勃勃的吧上面网址在浏览器打开时,浏览器却返回了一个错误:文件不存在。

就是这家伙URL.createObjectURL()导致了视频无法下载

这样,就把大部分小白挡在了下载视频的大门之外。如果再配合*.m3u8对视频分割(以后会介绍),就能更进一步加大用户下载视频的困难。


分享到:


相關文章: