注意:使用该功能之前,切片必须开启ts加密,否则无法使用;且开启即生效,关闭立即失效,不改变任何数据文件等。
防盗链说明
该系统参考保利威视的防盗链策略,通过修改hls.js
文件来达到自己的解密逻辑,做到双向对称加密和解密,然后将加密和解密的逻辑都通过JS
混淆加密的方式保护。采用和保利威视类似的魔改hls.js
版,实现了绑定域名调用,和EFV
后台对称加密和解密,防盗链防下载防合并防破解并且绑定指定域名调用等功能。
功能介绍
- 通过魔改
hls.js
的方式,实现了自己的加密和解密逻辑。 EFV
和前端hls.js
之间对称加密和解密逻辑,从根本上解决防盗链、防合并、防下载的功能。hls.js
中多重加密和解密,破解难度极大,上万行代码,谁玩谁知道。- 因为通信
key
的存在,让破解成为不可能,每次更改防盗链key
,重新生成hls.js
又是一个全新的版本,仅需1
分钟又是一个完全全新的防盗链整体架构。
优势
目前市面上大多数防盗链都没有实质性的作用,对有点技术的人来说,既然可以绕过防盗链轻易的盗取相关资源,而这里的超级防盗链想要盗取是极其困难,大致逻辑如下:
1、前端想要播放m3u8资源就必须满足2个条件,需要指定域名+指定魔改hls.js文件,缺一不可。
2、想要下载合并m3u8资源也需要满足几个条件,需要指定域名+指定魔改hls.js文件+指定解密方法,缺一不可。
缺点
目前防盗链策略在手机端发现有些国产浏览器会劫持播放器,并且劫持M3U8
解析逻辑成自己的逻辑,导致播放出现问题,这也是很多商业级防盗链的缺点,但也是最有效的防盗链之一,为了保护自己辛苦弄的资源不被盗走,只能有所舍取。
这里建议使用的时候,在前端加一个判断,如果是遇到劫持播放器的浏览器,直接提示:由于影片要求,已屏蔽该浏览器访问,请使用谷歌/火狐等浏览器打开播放。
这里列举个通过手机浏览器UA判断跳转方法
这里推荐一个简单的判断国产手机浏览器方法,并引导他们使用谷歌等手机浏览器打开播放,就是通过Nginx
判断UA
跳转到指定页面,在前端站点的域名配置文件中添加以下代码:
if ($http_user_agent ~* "UCBrowser|MQQBrowser|Quark|MicroMessenger") {
rewrite ^/(.*) /tips.html break;
}
这里主要争对拥有最大市场的QQ
、UC
、夸克
、微信
做跳转,判断后,会跳转到站点根目录的tips.html
提示页面。
不会自己写提示页面的,这里提供一个参考,在站点根目录新建一个tips.html
文件,内容如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>特别提示!</title>
<style>
.container {
width: 60%;
margin: 10% auto 0;
background-color: #f0f0f0;
padding: 2% 5%;
border-radius: 10px
}
ul {
padding-left: 20px;
}
ul li {
line-height: 2.3
}
a {
color: #20a53a
}
</style>
</head>
<body>
<div class="container">
<h3>特别提示:由于影片要求,本站已禁止在该手机浏览器上打开。</h3>
<ul>
<li>建议使用谷歌/火狐手机浏览器打开本站点,可让您得到最佳体验。</li>
<li>谷歌手机浏览器:<a href="https://www.efvcms.com/" target="_blank">点击下载</a></li>
<li>火狐手机浏览器:<a href="https://www.efvcms.com/" target="_blank">点击下载</a></li>
</ul>
</div>
</body>
</html>
提示内容请自行更改,浏览器下载地址自行替换,提示页面样式如下:
当然还有部分可以劫持播放器的手机浏览器没列举,不懂的可以百度/谷歌下你要添加的手机浏览器UA
,找到专属标识英文,自行添加到配置文件中即可。
如果你没用nginx
,而使用apache
等,可以自行谷歌下,基本上网上关于识别UA
跳转的教程很多,自行参考即可。
使用教程
提示:超级防盗链仅对开启TS加密的视频生效,且在 转码相关-时间戳/加密 填入防盗链Key值则开启,留空则关闭该防盗链功能。
由于很多播放器都有hls.js
文件,所以我们通过魔改该文件,并替换到自己所使用的播放器的hls.js
文件即可。
魔改hls.js有下面2种情况
提示:由于加密比较复杂,有需求的可直接联系我,我会教你;或者帮你打包加密好了,发给你。
绑定域名+绑定防盗链Key
提示:由于hls.js加密前就固定好了域名和key,如果两者种任何一个有变化就需要重新找我加密。
这种加密后的hls.js
只能允许指定域名的播放器使用,其它域名均用不了,且只有该hls.js
的播放器可以播放视频文件。
不绑定域名+绑定防盗链Key
提示:如果你不想让我知道你的域名,或者你经常换域名,觉得每次重新加密会比较麻烦,则选择这种。
这种加密后的hls.js
可以让任何域名的播放器使用,且只有该hls.js
的播放器可以播放视频文件。
最后以上2
种方法均可以防下载/盗取,也就是任何人想要直接下载该资源是极其困难,且几乎不可能的。