视频防盗啊啊

前言

好烦啊,一直搞不定
下面只是记录我踩过的一些坑,大家不要看了

背景

默认的video标签会有下载按钮,而且不能倍速播放,于是使用了video.js
为防止下载video禁止掉了右键菜单
目前存在的问题

  • 打开调试或者查看原网页可以直接看到视频链接
  • 手机端会之间显示浏览器的播放界面,都有直接下载的按钮

途径

坑1 修改referrer

想通过referrer判断是否是播放还是直接下载(先假设下载都是空referrer)
video.js不能直接控制http请求,不能控制referrer
控制全局referrer可以在head中加下面这句

1
<meta name="referrer" content="always/never/origin/default">

应该是下载空referrer这个假设本来就有问题,这条路堵死了

坑2 blob

blob用于处理二进制文件,youtube和bilibili都是用的blob,看起来很promising
但是我不会用啊。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<video id="id" width="320" height="240"  type='video/mp4' controls  > </video>

window.onload = function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'mov_bbb.mp4', true);
xhr.responseType = 'blob'; //important
xhr.onload = function(e) {
if (this.status == 200) {
console.log("loaded");
var blob = this.response;
var video = document.getElementById('id');
video.oncanplaythrough = function() {
console.log("Can play through video without stopping");
URL.revokeObjectURL(this.src);
};
video.src = URL.createObjectURL(blob);
video.load();
}
};
xhr.send();
}

可以工作,但需要先把视频加载一遍才能看,意思是这个页面加载时间要以分钟来记了。。。
而且还有跨域的问题

坑3 阿里云的flash

这个坑还没踩进去,但是还是不想用flash,都2018年了啊

后面的坑

  • 不行就用ua,把手机端的禁掉,然后pc端由他们下去吧
  • 然后再看看这个链接里的方法,说不定能用呢😢
  • 近期不搞了,先专心写毕业论文吧