请教大家一个问题, m3u8 文件如何防下载 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hyy1995
V2EX    HLS

请教大家一个问题, m3u8 文件如何防下载

  •  1
     
  •   hyy1995 2020-08-30 19:23:05 +08:00 9693 次点击
    这是一个创建于 1866 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟是前端,我司项目的视频资源都是用 m3u8 去播,m3u8 文件已经设置了#EXT-X-KEY,但还是能被别人破解下载下来(也不知道是不是后端搞的 key 姿势不对)。

    目前我们的处理方案是后端对整个 m3u8 文件进行一个加密(混淆字符什么的),然后前端播放的时候自己先解密得到真实的 m3u8 文件内容,再去播,不知道这样做管不管用。

    大家有什么好办法能够防止 m3u8 被破解下载呢?或者提高被破解的成本?

    第 1 条附言    2020-08-30 20:17:46 +08:00
    我们目前的这种方法,对业务的改动较大,并且我个人觉得也不怎么靠谱。至于 drm 也上了,用的是腾讯云的,大家还有什么 drm 之外的防下载方式吗?

    盗版是阻止不了的,我们只求提高盗下成本就行…
    51 条回复    2024-02-19 05:28:35 +08:00
    delectate
        1
    delectate  
       2020-08-30 19:37:18 +08:00
    视频加 drm 。m3u8 被下载就下了吧。
    murmur
        2
    murmur  
       2020-08-30 19:38:43 +08:00   1
    没用的,你的东西如果值钱,抗得住录屏么
    crella
        3
    crella  
       2020-08-30 19:42:10 +08:00 via Android
    用 websocket 传输?
    yuzo555
        4
    yuzo555  
       2020-08-30 19:42:49 +08:00
    EXT-X-KEY 是 HLS 标准里面定义的加密。
    任何支持 M3U8 播放的播放器、下载工具都能正确处理 EXT-X-KEY 。
    这就像你给你家大门上了密码锁,然后密码用纸条写在了门上一样... 根本没用
    ysc3839
        5
    ysc3839  
       2020-08-30 19:56:07 +08:00 via Android
    防不了,就连 Netflix 这种用了 DRM 方案的都能被下载。
    8023
        6
    8023  
       2020-08-30 19:57:26 +08:00 via iPhone
    drm+1,但只要你的视频在客户端播放,就肯定没办法彻底放得住的。
    hyy1995
        7
    hyy1995  
    OP
       2020-08-30 20:13:11 +08:00
    @delectate
    @8023

    drm 已经加了,用的腾讯云的,但还是能被盗下,而且还直接放了个网站,能让用户自行操作就能下载的那种。

    老板看不下去了让我们去提高下防盗门槛,我们目前就想到对整个 m3u8 文件加密的这种方式,但我感觉也不太靠谱,唉
    hyy1995
        8
    hyy1995  
    OP
       2020-08-30 20:13:58 +08:00
    @ysc3839

    确实防不了,但想提高下盗下成本,除了 drm 之外,有什么建议吗?
    hyy1995
        9
    hyy1995  
    OP
       2020-08-30 20:15:33 +08:00
    @murmur

    哈哈,录屏这种就管不了了,现在已经有网站直接挂着我司的名字,提供一键下载视频的功能,并且还收费(几块钱那种),老板看不下去了。

    主要是想针对这种网站,提高盗下的成本
    heyjei
        10
    heyjei  
       2020-08-30 20:24:02 +08:00
    当做普通的反爬来处理不就好了嘛
    1. 如果有 IP 只下载视频或者 m3u8,不下载 js,css 文件的,肯定是爬虫,直接把 IP 封了吧;
    2. m3u8 的加密改成可配置的,3 天换一次加密方式,如果不是利润特别大的话,对方自己就会放弃的。
    martinsu
        11
    martinsu  
       2020-08-30 20:31:48 +08:00 via iPhone
    我觉得防盗方法不是用某一个高水平防盗方法。而是用一套中等水平的防盗方法,隔一段时间就改变规则让盗版手段失效,不断改,盗版者的手段不断失效,最后让盗版者精疲力尽放弃。
    greatbody
        12
    greatbody  
       2020-08-30 20:33:56 +08:00
    @martinsu 高招
    ochatokori
        13
    ochatokori  
       2020-08-30 20:37:28 +08:00 via Android
    @martinsu #11 这只是比谁的精力多,你只能上新的规则让盗版者的手段失效
    littlewing
        14
    littlewing  
       2020-08-30 21:16:38 +08:00
    在前端解密就不要想着能防破解了
    hyy1995
        15
    hyy1995  
    OP
       2020-08-30 21:21:35 +08:00
    @littlewing
    @heyjei
    @martinsu

    几位老哥,有个问题想请教一下。视频资源是付费的,没付费之前接口不返回 m3u8 的,前端也是不能播的,这样的话是如何被盗下的呢?
    gggxxxx
        16
    gggxxxx  
       2020-08-30 21:24:54 +08:00
    做盗版的账号是付费用户.....
    musi
        17
    musi  
       2020-08-30 21:27:16 +08:00
    可以看一下阿里云的付费点播
    luvroot
        18
    luvroot  
       2020-08-30 21:32:14 +08:00
    阿里云的 3 种 URL 鉴权方式,或则每次请求带 jwt token 过校验服务器。
    hyy1995
        19
    hyy1995  
    OP
       2020-08-30 21:38:17 +08:00
    @gggxxxx

    不太像,因为每个视频都需要单独付费的,有些视频单个都得几百元,他网站上面下载一次就收几块钱,能回本吗?不太可能
    fredcc
        20
    fredcc  
       2020-08-30 21:38:20 +08:00
    阿里云 CDN 不是有成品的防盗链么。分发 cdn 地址的接口做好验证,重放攻击这种都是起码的。然后把 CDN 防盗链 token 的失效时间设短点,再加上全局 token ip 限次差不多了。
    linuxvalue
        21
    linuxvalue  
       2020-08-30 22:59:14 +08:00
    对文件内容进行流加密 边解密边播 下载到本地的也是加密的
    no1xsyzy
        22
    no1xsyzy  
       2020-08-30 23:15:34 +08:00
    @hyy1995 #19 盲狙一个内鬼,不然就是你这边对于 DRM 的使用其实做的一塌糊涂。
    @murmur 录屏可以被 HDCP 抗,摄屏好像还有用亮暗噪点抗(视觉上不明显,但摄像机会认为亮度改变而自动修正,导致最后的摄屏结果不能看),但似乎又有对应的处理方式。



    现在是有真DRM 方案的。可信计算 + HDCP,直到显示器显示出来为止完全处于加密状态。
    但是,相应地,真DRM 的方案也有弊端,就是观看的平台被限定了。
    首先,ARM 杀一半;其次,Linux 杀大部分;然后 HDCP 杀掉部分显示器(自组别想了);最后,代码不能直接访问 IO (所以游戏别想了)。
    就是你只能带上那群组织提供的整套方案,在你的整个设备和接口中硬嵌另一套设备和接口(或者说,后门)进去。
    这些后门价格不高,几乎白送,就是为了让 DRM 内容能够播放。
    hyy1995
        23
    hyy1995  
    OP
       2020-08-30 23:38:33 +08:00
    @gggxxxx
    @no1xsyzy

    是我搞错了。其实那些盗下网站要求的是自己已购的视频才行,相当于是花了钱买视频,然后想下到本地看…

    我还以为是有什么神通广大的招数能直接拿到我们的 m3u8…
    systemcall
        24
    systemcall  
       2020-08-31 00:45:19 +08:00 via Android
    @no1xsyzy HDCP 就安全吗?上采集卡,刷个固件照样采集
    蓝光播放机够理想了吧?用户连第三方软件都安装不了,整个设备都足够安全。照样可以被提取出来视频,只能提高一般人接触盗。版的难度
    网飞,也是一套 DRM,浏览器、操作系统、显示设备都有要求,还不是有盗。版的
    而且你把东西的门槛提得太高并不好,用户会用脚投票
    jingcoco
        25
    jingcoco  
       2020-08-31 08:04:20 +08:00 via iPhone
    加水印?
    myCupOfTea
        26
    myCupOfTea  
       2020-08-31 08:37:27 +08:00
    @hyy1995 付费播放是对 url 携带的 token 做了权限校验,其实 p 站除了付费的也是可以直接爬下来的,这东西不太好防(要不就是防御的成本过大)
    no1xsyzy
        27
    no1xsyzy  
       2020-08-31 09:17:16 +08:00
    @systemcall #24 哦看了下 HDCP 技术细节,线性密钥是真的犯蠢了
    然后英特尔承认了主密钥泄漏还在做…… 向厂商收用户的智商税,最后还是用户买单(
    hornets
        28
    hornets  
       2020-08-31 09:29:13 +08:00
    一般都是正常类似资源站之类的一个下载,或者录屏了,全都用一个资源,只有有利可图,就没有办法
    uTuw2C6uf964Kx6o
        29
    uTuw2C6uf964Kx6o  
       2020-08-31 09:43:03 +08:00
    不知道怎么防,但是我知道 p 站视频用手机 uc 、qq 浏览器能下载;朋友买的付费视频课,我登录后他账号后用 uc 也能下载
    takemeaway
        30
    takemeaway  
       2020-08-31 10:00:29 +08:00
    能播就能下,你问的是防止别的网站盗播吧?
    这个跟防盗链原理差不多,你可以多去了解一下
    buffzty
        31
    buffzty  
       2020-08-31 10:43:19 +08:00
    防不了下载. 但是可以抓大鱼. 就像慕课平台视频 他里面每隔一段时间移动显示会员 id. 只要传播数量过大. 到时候报警就像.他收的钱最后还是要还回来. 你前端所有东西都相当于明文,不管你怎么传输,加密. 你的加密方式永远都会在前端找到
    Yutang
        32
    Yutang  
       2020-08-31 10:53:32 +08:00
    M3U8 二级目录提供 ts 的下载链接,可以动态生成,多久后链接失效。各大视屏网站好像是这种。或者也可以客户端对 ts 链接进行处理之后,才是正确地址。感觉对 ts 链接做改动比较靠谱。
    youxiachai
        33
    youxiachai  
       2020-08-31 11:18:07 +08:00
    国内网站都有备案。。。
    一告一个准。。。
    tankren
        34
    tankren  
       2020-08-31 11:28:39 +08:00
    把对方网站搞了索赔巨额赔偿 杀鸡儆猴
    gelilaohuang
        35
    gelilaohuang  
       2020-08-31 11:40:26 +08:00
    把链接发一下,我看看 一分钟之内能不能扒下来
    flowercoder
        36
    flowercoder  
       2020-08-31 11:58:22 +08:00
    去 52 看下,前两天刚看一个基于 idm 的 m3u8 插件,比较靠谱的方式可以学下 heima,那家应该是被盗的最多的。还有就是账号实名制,法律协议加,加本用户水印,这确实是一个相当靠谱的方法。
    kuner0614
        37
    kuner0614  
       2020-08-31 12:07:55 +08:00
    你们公司可以自己做一个网站,学习盗版网站的经验,把盗版流量通过这个站点收回来,后台加一个看板。可以针对性的用这些人群来做数据分析分类营销,明面的钱和暗地的钱都能赚到。
    zhw2590582
        38
    zhw2590582  
       2020-08-31 12:11:41 +08:00
    就算 m3u8 防得了,视频是肯定防不了,任何加密视频,我分分钟都能录下来
    yolee599
        39
    yolee599  
       2020-08-31 12:16:55 +08:00
    换个思路,加隐形水印,即使录屏,水印也不能去除,发现盗版流出直接律师函,参考各个视频 APP 的收费播放。
    richChou
        40
    richChou  
       2020-08-31 13:33:48 +08:00
    @murmur 我记得安卓客户端可以禁止录屏。不过拿其他设备翻录确实就没办法了。
    JCZ2MkKb5S8ZX9pq
        41
    JCZ2MkKb5S8ZX9pq  
       2020-08-31 13:58:20 +08:00
    感觉除了定期嵌 ID 也没啥好办法,连 P 站 /mgstage/dmm 这种规模都防不了盗版……
    最近一次摸 ameba 的视频,是无法播放的 ts 片段,感觉也是前端加密而已。
    fengmumu
        42
    fengmumu  
       2020-08-31 15:09:16 +08:00
    是这个逻辑,你们老板发现的是别人提供了下载工具,不是发售你们的视频,说明啥啊,你们做的不合理啊,要不要考虑一下 视频加水印,然后提供下载功能,毕竟有需求就总会有市场,索性你们直接把市场干死
    jon
        43
    jon  
       2020-08-31 15:17:22 +08:00
    传播盗版发律师函呗
    Huang4966
        44
    Huang4966  
       2020-08-31 15:48:44 +08:00
    我这边的方案是. 视频使用 hls 标准加密,切片脚本设置为每个视频单独生成解密 key 文件. 然后将生成的解密秘钥进行 base64_encode 存储到数据库. 切片后文件上传阿里云 OSS.
    Huang4966
        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 的操作进一步提高安全性.
    luwies
        46
    luwies  
       2020-08-31 17:29:10 +08:00
    自己做传输协议可以提高被下载的难度
    enrolls
        47
    enrolls  
       2020-08-31 19:54:50 +08:00
    前端组装 m3u8 文件。目的是想防下载,那就提高下载的门槛,用速度,请求次数区分正常用户和非正常用户。
    myCupOfTea
        48
    myCupOfTea  
       2020-09-02 09:40:13 +08:00
    @Huang4966 播放器能获得解密的 key,那就肯定可以爬下来的啊,我现在爬一些 ts 文件,只要顺便把 m3u8 描述里面的 key 文件顺便爬下来就好了
    Huang4966
        49
    Huang4966  
       2020-09-02 09:46:43 +08:00
    @myCupOfTea 是的,key 是防范不了的.只要你有访问资源权限就可以获得. 只能通过对用户行为上进行区分,提高难度而已.
    myCupOfTea
        50
    myCupOfTea  
       2020-09-02 13:53:59 +08:00
    @Huang4966 恩,我之前爬某网站发现,m3u8 里的切片会过一段时间就变名字,估计不会花大代价重新切片只是重命名而已,然后我把老的 ts 列表和新的 ts 列表按索引自动替换下继续下没下载好的(
    dxppp
        51
    dxppp  
       2024-02-19 05:28:35 +08:00 via iPhone
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1094 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:15 PVG 07:15 LAX 16:15 JFK 19:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86