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