小弟是前端,我司项目的视频资源都是用 m3u8 去播,m3u8 文件已经设置了#EXT-X-KEY,但还是能被别人破解下载下来(也不知道是不是后端搞的 key 姿势不对)。
目前我们的处理方案是后端对整个 m3u8 文件进行一个加密(混淆字符什么的),然后前端播放的时候自己先解密得到真实的 m3u8 文件内容,再去播,不知道这样做管不管用。
大家有什么好办法能够防止 m3u8 被破解下载呢?或者提高被破解的成本?

小弟是前端,我司项目的视频资源都是用 m3u8 去播,m3u8 文件已经设置了#EXT-X-KEY,但还是能被别人破解下载下来(也不知道是不是后端搞的 key 姿势不对)。
目前我们的处理方案是后端对整个 m3u8 文件进行一个加密(混淆字符什么的),然后前端播放的时候自己先解密得到真实的 m3u8 文件内容,再去播,不知道这样做管不管用。
大家有什么好办法能够防止 m3u8 被破解下载呢?或者提高被破解的成本?
1 delectate Aug 30, 2020 视频加 drm 。m3u8 被下载就下了吧。 |
2 murmur Aug 30, 2020 没用的,你的东西如果值钱,抗得住录屏么 |
3 crella Aug 30, 2020 via Android 用 websocket 传输? |
4 yuzo555 Aug 30, 2020 EXT-X-KEY 是 HLS 标准里面定义的加密。 任何支持 M3U8 播放的播放器、下载工具都能正确处理 EXT-X-KEY 。 这就像你给你家大门上了密码锁,然后密码用纸条写在了门上一样... 根本没用 |
5 ysc3839 Aug 30, 2020 via Android 防不了,就连 Netflix 这种用了 DRM 方案的都能被下载。 |
6 8023 Aug 30, 2020 via iPhone drm+1,但只要你的视频在客户端播放,就肯定没办法彻底放得住的。 |
7 hyy1995 OP |
9 hyy1995 OP |
10 heyjei Aug 30, 2020 当做普通的反爬来处理不就好了嘛 1. 如果有 IP 只下载视频或者 m3u8,不下载 js,css 文件的,肯定是爬虫,直接把 IP 封了吧; 2. m3u8 的加密改成可配置的,3 天换一次加密方式,如果不是利润特别大的话,对方自己就会放弃的。 |
11 martinsu Aug 30, 2020 via iPhone 我觉得防盗方法不是用某一个高水平防盗方法。而是用一套中等水平的防盗方法,隔一段时间就改变规则让盗版手段失效,不断改,盗版者的手段不断失效,最后让盗版者精疲力尽放弃。 |
13 ochatokori Aug 30, 2020 via Android @martinsu #11 这只是比谁的精力多,你只能上新的规则让盗版者的手段失效 |
14 littlewing Aug 30, 2020 在前端解密就不要想着能防破解了 |
15 hyy1995 OP |
16 gggxxxx Aug 30, 2020 做盗版的账号是付费用户..... |
17 musi Aug 30, 2020 可以看一下阿里云的付费点播 |
18 luvroot Aug 30, 2020 阿里云的 3 种 URL 鉴权方式,或则每次请求带 jwt token 过校验服务器。 |
20 fredcc Aug 30, 2020 阿里云 CDN 不是有成品的防盗链么。分发 cdn 地址的接口做好验证,重放攻击这种都是起码的。然后把 CDN 防盗链 token 的失效时间设短点,再加上全局 token ip 限次差不多了。 |
21 linuxvalue Aug 30, 2020 对文件内容进行流加密 边解密边播 下载到本地的也是加密的 |
22 no1xsyzy Aug 30, 2020 @hyy1995 #19 盲狙一个内鬼,不然就是你这边对于 DRM 的使用其实做的一塌糊涂。 @murmur 录屏可以被 HDCP 抗,摄屏好像还有用亮暗噪点抗(视觉上不明显,但摄像机会认为亮度改变而自动修正,导致最后的摄屏结果不能看),但似乎又有对应的处理方式。 现在是有真DRM 方案的。可信计算 + HDCP,直到显示器显示出来为止完全处于加密状态。 但是,相应地,真DRM 的方案也有弊端,就是观看的平台被限定了。 首先,ARM 杀一半;其次,Linux 杀大部分;然后 HDCP 杀掉部分显示器(自组别想了);最后,代码不能直接访问 IO (所以游戏别想了)。 就是你只能带上那群组织提供的整套方案,在你的整个设备和接口中硬嵌另一套设备和接口(或者说,后门)进去。 这些后门价格不高,几乎白送,就是为了让 DRM 内容能够播放。 |
23 hyy1995 OP |
24 systemcall Aug 31, 2020 via Android @no1xsyzy HDCP 就安全吗?上采集卡,刷个固件照样采集 蓝光播放机够理想了吧?用户连第三方软件都安装不了,整个设备都足够安全。照样可以被提取出来视频,只能提高一般人接触盗。版的难度 网飞,也是一套 DRM,浏览器、操作系统、显示设备都有要求,还不是有盗。版的 而且你把东西的门槛提得太高并不好,用户会用脚投票 |
25 jingcoco Aug 31, 2020 via iPhone 加水印? |
26 myCupOfTea Aug 31, 2020 @hyy1995 付费播放是对 url 携带的 token 做了权限校验,其实 p 站除了付费的也是可以直接爬下来的,这东西不太好防(要不就是防御的成本过大) |
27 no1xsyzy Aug 31, 2020 @systemcall #24 哦看了下 HDCP 技术细节,线性密钥是真的犯蠢了 然后英特尔承认了主密钥泄漏还在做…… 向厂商收用户的智商税,最后还是用户买单( |
28 hornets Aug 31, 2020 一般都是正常类似资源站之类的一个下载,或者录屏了,全都用一个资源,只有有利可图,就没有办法 |
29 uTuw2C6uf964Kx6o Aug 31, 2020 不知道怎么防,但是我知道 p 站视频用手机 uc 、qq 浏览器能下载;朋友买的付费视频课,我登录后他账号后用 uc 也能下载 |
30 takemeaway Aug 31, 2020 能播就能下,你问的是防止别的网站盗播吧? 这个跟防盗链原理差不多,你可以多去了解一下 |
31 buffzty Aug 31, 2020 防不了下载. 但是可以抓大鱼. 就像慕课平台视频 他里面每隔一段时间移动显示会员 id. 只要传播数量过大. 到时候报警就像.他收的钱最后还是要还回来. 你前端所有东西都相当于明文,不管你怎么传输,加密. 你的加密方式永远都会在前端找到 |
32 Yutang Aug 31, 2020 M3U8 二级目录提供 ts 的下载链接,可以动态生成,多久后链接失效。各大视屏网站好像是这种。或者也可以客户端对 ts 链接进行处理之后,才是正确地址。感觉对 ts 链接做改动比较靠谱。 |
33 youxiachai Aug 31, 2020 国内网站都有备案。。。 一告一个准。。。 |
34 tankren Aug 31, 2020 把对方网站搞了索赔巨额赔偿 杀鸡儆猴 |
35 gelilaohuang Aug 31, 2020 把链接发一下,我看看 一分钟之内能不能扒下来 |
36 flowercoder Aug 31, 2020 去 52 看下,前两天刚看一个基于 idm 的 m3u8 插件,比较靠谱的方式可以学下 heima,那家应该是被盗的最多的。还有就是账号实名制,法律协议加好,加本用户水印,这确实是一个相当靠谱的方法。 |
37 kuner0614 Aug 31, 2020 你们公司可以自己做一个网站,学习盗版网站的经验,把盗版流量通过这个站点收回来,后台加一个看板。可以针对性的用这些人群来做数据分析分类营销,明面的钱和暗地的钱都能赚到。 |
38 zhw2590582 Aug 31, 2020 就算 m3u8 防得了,视频是肯定防不了,任何加密视频,我分分钟都能录下来 |
39 yolee599 Aug 31, 2020 换个思路,加隐形水印,即使录屏,水印也不能去除,发现盗版流出直接律师函,参考各个视频 APP 的收费播放。 |
41 JCZ2MkKb5S8ZX9pq Aug 31, 2020 感觉除了定期嵌 ID 也没啥好办法,连 P 站 /mgstage/dmm 这种规模都防不了盗版…… 最近一次摸 ameba 的视频,是无法播放的 ts 片段,感觉也是前端加密而已。 |
42 fengmumu Aug 31, 2020 是这个逻辑,你们老板发现的是别人提供了下载工具,不是发售你们的视频,说明啥啊,你们做的不合理啊,要不要考虑一下 视频加水印,然后提供下载功能,毕竟有需求就总会有市场,索性你们直接把市场干死 |
43 jon Aug 31, 2020 传播盗版发律师函呗 |
44 Huang4966 Aug 31, 2020 我这边的方案是. 视频使用 hls 标准加密,切片脚本设置为每个视频单独生成解密 key 文件. 然后将生成的解密秘钥进行 base64_encode 存储到数据库. 切片后文件上传阿里云 OSS. |
45 Huang4966 Aug 31, 2020 我这边的方案是. 视频使用 hls 标准加密. 需要用到阿里云 OSS, 阿里云 CDN 重写,FFmpeg 切片. 1.在使用 FFmpeg 切片时,切片脚本设置为每个视频单独生成解密 key 文件. 并 base64_encode 存储数据库 2.同时切片配置信息的#EXT-X-KEY 设置为进行播放鉴权的 url 3.切片后文件上传阿里云 OSS 并对播放域名开启 CDN 鉴权 4.后端返回前端 m3u8 文件地址时,在地址后面加上当前请求播放用户的加密信息. 5.播放器使用 m3u8 获取 ts 文件时,触发阿里云 cdn 重写,将加密用户信息提交到自己设置的鉴权中心 6.鉴权中心,对用户身份,视频播放有效期,请求次数进行鉴权后,从数据库取出 key 字段进行 base64_decode 解密 7.播放器获得解密 key 进行播放 以上可以用户在获取 m3u8 和播放时都需要进行鉴权,同时都有时效限制.每个视频也都是不同秘钥.可以提高下载门槛 如果前端功底好的话可以在播放器 js 中进行对 m3u8 的操作进一步提高安全性. |
46 luwies Aug 31, 2020 自己做传输协议可以提高被下载的难度 |
47 enrolls Aug 31, 2020 前端组装 m3u8 文件。目的是想防下载,那就提高下载的门槛,用速度,请求次数区分正常用户和非正常用户。 |
48 myCupOfTea Sep 2, 2020 @Huang4966 播放器能获得解密的 key,那就肯定可以爬下来的啊,我现在爬一些 ts 文件,只要顺便把 m3u8 描述里面的 key 文件顺便爬下来就好了 |
49 Huang4966 Sep 2, 2020 @myCupOfTea 是的,key 是防范不了的.只要你有访问资源权限就可以获得. 只能通过对用户行为上进行区分,提高难度而已. |
50 myCupOfTea Sep 2, 2020 @Huang4966 恩,我之前爬某网站发现,m3u8 里的切片会过一段时间就变名字,估计不会花大代价重新切片只是重命名而已,然后我把老的 ts 列表和新的 ts 列表按索引自动替换下继续下没下载好的( |
51 dxppp Feb 19, 2024 via iPhone |
52 xzsljc Dec 14, 2025 只要能看,基本没办法防下载的 |