视频防盗啊啊
前言
好烦啊,一直搞不定
下面只是记录我踩过的一些坑,大家不要看了
背景
默认的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端由他们下去吧
- 然后再看看这个链接里的方法,说不定能用呢😢
- 近期不搞了,先专心写毕业论文吧