hls双重加密防盗链使用
注意:使用该功能之前,切片必须开启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;
  }

这里主要争对拥有最大市场的QQUC夸克微信做跳转,判断后,会跳转到站点根目录的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种方法均可以防下载/盗取,也就是任何人想要直接下载该资源是极其困难,且几乎不可能的。