觉得挺有意思的,但是操作比较麻烦,所以现学了python操作了下。
使用方法:
1.下载视频的“.key”、“M3U8”、“.json”文件;
浏览器打开视频-> F12 ->network-》filter
分别过滤“.key”、“M3U8”、“.json”关键字,选中request URL——》右键——》复制,下载或者直接点转到,会跳转下载。
注意:下载M3U8时要注意,有些视频因为可以选择清晰度,所以会有多个M3U8文件,自己注意判断
插图3.png (38.84 KB, 下载次数: 0)
下载附件
2022-5-24 17:43 上传
2.将脚本放在“.key”、“M3U8”、“.json”同一文件夹下;
插图.png (12.45 KB, 下载次数: 0)
下载附件
2022-5-24 17:29 上传
3.运行脚本得到key
标记1和标记2的计算结果是一样的,只是用空格隔开了而已。
插图2.png (33.45 KB, 下载次数: 0)
下载附件
2022-5-24 17:35 上传
网络key解析.zip
(1.47 KB, 下载次数: 487)
2022-5-24 17:35 上传
点击文件名下载附件
python脚本
下载积分: 吾爱币 -1 CB
扩展思考:其实第3步生成的key就是下载的“.key”文件的解密版本;加密的“.key”文件用HEX查看器看可以看到是32位的;用我们计算到的key用HEX编辑器编辑好就是解密后的“.key”文件了。
而一些视频是可以离线缓存的,查看缓存文件,可以发现除了切片后的TS文件也有“.key”、“M3U8”、“.json”文件;
所以说,我们如果懒得一个一个的从网站抓,可以用缓存文件直接解密、合并TS文件生成目标视频;
但是经过验证,没成功;发现的问题如下:
1)缓存文件的“.key”文件和网页抓的“.key”文件是不同的;
2)json文件名不一样,发现只是命名规则做了修改,如把末尾的“_0”改成了“_2”,调整了脚本,发现json文件解析出来的json结构体内容是相同的,最重要的是seed值是一样的;——》由1、2两条可知计算到的key值是不一样的;
3)但是!!用网页抓的“.key”文件计算到的key值可以把缓存的ts文件解密合并生成目标视频;
我猜测是缓存文件的“.key”文件所用的AES加密的iv值和网页视频用的不一样。
如果有那位能好心人能给我解惑或者将iv值告诉我将不胜感激。