视频防盗防播及图片加密

支持时间戳+播放次数防盗链,图片加密,图片转换文本,切片伪装图片,指定地区ip过滤访问,HLS双重加密等。

引用网址

提示:该功能可阻止其它网站直接使用EFV的M3U8链接进行播放使用。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,进行相关设置。

在此处设置指定站点域名后,只允许m3u8切片在该域名所建立的网站上播放,其它站点调用均会失败;注意多域名配置中间用|分开,比如https://demo.efvcms.com|https://cms.efvcms.com

TS禁止下载合并

提示:该功能屏蔽了绝大部分的下载工具,即禁止被这些工具下载合成M3U8。

可点击EFV后台左侧 ⇒ 防盗链/图片加密设置,开启该功能即可。

TS切片伪装PNG图片

提示:该功能除了一些特殊用途外,还可以防止被一些工具直接下载合并。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 转码设置,开启该功能即可。

时间戳+播放次数防盗链

提示:目前结合防盗、兼容性、对接难度来说,此防盗链算是最适合的。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启时间戳+播放次数防盗链并设置KEY值,再开启TS或伪装切片的时间戳防盗链验证

对接原理

开启时间戳防盗链功能后,我们需要使用播放次数、过期时间戳、时间戳KEY值和M3U8链接进行组装加密,获取到一个可供播放的新KEY,然后该M3U8链接后面加上这个新KEY值就可以正常播放了。

主要对接参数说明:

播放次数:比如我播放次数设置2,即请求2次M3U8链接后,会直接失效。
过期时间戳:比如我设置5分钟后过期,即5分钟后该M3U8链接直接失效。

如果访问M3U8链接的时候,使用的新KEY值不对,或者单ip播放次数用完、时间戳已过期,都会提示无权限。

单独访问TS加密的KEY文件、切片文件的时候,使用的IP和对应的M3U8IP来源不一样,或新KEY值不对,播放次数用完等,也会提示无权限。

返回信息

访问M3U8无权限的时候默认会返回403提示,如果你想返回一段视频,可以添加切片广告 ⇒ 传送门

如果添加多个切片广告,则无权限的会随机返回其中一个切片广告视频。

对接说明

自带的CMS、苹果CMS爱影CMS均已适配,且自带的CMS开启该功能后会自动处理,苹果CMS可前往发布到苹果CMS文档获取对接文件 ⇒ 传送门,爱影CMS可前往发布到爱影CMS文档获取对接文件 ⇒ 传送门

其它程序可以查看对接文档 ⇒ 传送门,然后自行开发对接。

动态加密封面/截图

提示:该功能为动态处理,即服务器里面的图片并未加密,只是读取的时候给你加密,且开启和关闭均立即生效。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启该功能;且不能同时开启图片转换txt文本功能,不然txt文本功能优先级会高于加密

开启图片加密后,基本上转码生成的封面、截图全部会被加密乱码,完全看不到任何实质内容,需要在前端使用特有的解密逻辑,方可正常显示。

这里提供一个简单的对接示例 ⇒ 传送门,并根据文档示例集成到自己的网站即可。

封面/截图动态转换txt文本

提示:该功能为动态处理,即服务器里面的图片并未处理,只是读取的时候给你转txt,且开启和关闭均立即生效。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启该功能。

开启之后,程序会自动将封面/截图自动转换成txt文本,且默认的截图和图片均会无法正常查看,直接请求会显示403 Forbidden提示。

使用方法

我的图片链接为/videos/202104/16/60797eb23b54185df2317c5f/cover.jpg,我直接将.jpg换成.txt就可以了。

比如/videos/202104/16/60797eb23b54185df2317c5f/cover.txt,读取的时候会自动转换成txt文本。

且原有.jpg地址会返回403 Forbidden提示,既不会显示图片了,然后直接在前端使用base64解密调用。

这里提供一个简单的对接示例 ⇒ 传送门,并根据文档示例集成到自己的网站即可。

HLS双重防盗链

提示:该防盗链属于里面盗取难度最大的,几乎不可能被盗,由于国产浏览器问题,推荐专注国外用户的可以使用。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,设置防盗链KEY值,且设置自动开启,留空立即关闭。

然后前往转码设置,开启TS加密,也就是需和TS加密搭配一起使用才生效,即该功能仅仅对TS加密的M3U8有效。

加密原理

该功能参考保利威视的防盗链策略,EFV系统对M3U8KEY文件链接和KEY文件内容进行双向加密,通过修改hls.js文件来达到自己的解密逻辑,做到双向对称加密和解密。

再将hls.js文件解密的逻辑通过JS混淆加密的方式保护,并魔改hls.js,实现了绑定域名调用,使其防盗链防下载防合并防破解的功能极其强大。

比如我开启并设置HLS双重防盗链后,在没有解密的情况下,读取一个M3U8文件,内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="http://192.168.3.16?token=FEfKlXoXbFF7xr7yPAK2k81G5kZesZEQyAlqDPc67GIS1VUVAZfO0euFgQMxjRpAplZpOxuv/to="
#EXTINF:4.800000,
indexEccdE0fc0ACcdC0A.ts
#EXTINF:4.360000,
indexf81cggd7A0c0905E.ts
#EXTINF:3.320000,
index31696Ba7gab3CA3d.ts

会发现TS加密的key文件地址为本地地址,意味着读取不到key文件,也就是播放不了该M3U8

如果在我们已经对接过解密的网站播放,通过抓包获取到了key文件链接,并获取到key文件内容,依然不能下载,因为key文件内容也会加密,也就是说的双重加密,总之盗取难度极大。

使用说明

由于国产浏览器会替换你的解密hls.js文件,会导致解密失效,所以专注国外用户的可以使用,国内不推荐。

需要使用的可自行查看文档获取解密hls.js文件 ⇒ 传送门,并根据文档教程集成到自己的网站即可。