异常五_2025_01_关于爬取m3u8遇到的坑_关于QINIU-PROTECTION-10加密的问题

研究目的:(课题目的:为了拿m3u8的视频,但除了iv值之外还要解决万恶的QINIU-PROTECTION-10加密的key值)

参考资料:

(一)为了爬取视频网站,参考文章(
[C#/Java] 针对 QINIU-PROTECTION-10 的m3u8视频文件解密 - 码荣 - 博客园

(个人感触:关于QINIU-PROTECTION-10的解决方案,读完下载代码后感受就是,虽说大体上的思路是有了的,但是具体的一些代码需要标注下,然后要根据不同平台自自行修改。建议读者先读完大神的文章再看如下)

(二)还有第二位大神(简称大神二)的一个手工操作的过程,这个自行去b站搜加密方式找(大致流程如下):

一、问题再现:陈列一个问题关于DRMKey,这个f12很好拿得到

 拿到的m3u8的文件也和大神的差不多,这里不展示了,大家记得将ts的相对地址改回绝对地址就行了。

二、(重要!!)实践感觉到的出入:他说这个key值是这样加密的,但跟我的实践后的理解有区别,有出入

截图他说:“每一位数字转换成16进制字符串,然后把16进制字符串转为ASCII码”。(也就是10进制转16进制,然后转ASCII码)。但是转后的key值估计只是对他的网站是对的,但跟我平常操作以及自己的网站不太对。。。

(一)说一遍平常操作:

具体来说就是从10进制转16进制是对的,得到十六进制的KEY值也一样,但是后面我用如下这个工具,得到最终(蓝色部分)KEY值是这样的:OWU0ZTRlZjY0YTdhMmU4Mg==

然后拿到的key值,放到下载器那里,填上url其他信息就行了,iv值他也会自动获取,这个工具还挺强!如下:

三、(修改一)加密方法修改:

用大神缩写的java的工具是这样的(这边单独调用工具类试了下)备注:这里是启动类里面改的,只是为了测试

得到的值:bc3f46522d5d8190 ,所以就跟我们实际操作的不太一样。而且根据手工操作来说,放到下载器,命令窗口报错误说这个key是无效的!

那么这个十六进制的:“39653465346566363461376132653832”,到“OWU0ZTRlZjY0YTdhMmU4Mg==”字符串,背后到底是怎么转的呢?所以,就问了gpt,后来才知道是十六进制之后转base64才对!而且base64也算是ASCII码

其实是我的对base64的理解有点问题吧,真他喵的怪我理解不够。。。

 python代码过程如下:

import base64

def hex_to_base64(hex_string):
    # 将十六进制字符串转换为字节
    byte_data = bytes.fromhex(hex_string)
    # 将字节编码为Base64字符串
    base64_string = base64.b64encode(byte_data).decode('utf-8')
    return base64_string

# 示例输入
hex_string = "39653465346566363461376132653832"
base64_string = hex_to_base64(hex_string)

print(f"Hex string: {hex_string}")
print(f"Base64 string: {base64_string}")

 得到结果是这样才对:

 

实际上base64也估计是对应的ASCII编码吧。。。

然后他java有个接口是、getAESKey这里各位大神们可以自行修改一下

截图大神的代码: 

所以我有点怀疑是不是他转ASCII码不太对,这一步,但具体逻辑我也不太懂他的,因为没仔细读(尴尬。。。)所以第二张图的convertHexToString还是各位看官自己重写一个转base64吧。

哦对了:最后如果用下载器的话,key值哪怕给十六进制也是可以的,下载器会将其自动转为base64。但是编程环境就不会转的,代码层面要自己改下,还有以后有空会出个python版本加个多线程吧

四、代码部分修改二:关于ts正则匹配的修改:

还是截图下我的m3u8吧,看看ts地址长啥样。然后修改,各个网站的ts地址和大神的是不一样的,这里要灵活改改,因为大神的是这样的(图一):

而我的是这样的如下(图二):

(图三)这里是自己修改后的:

 这里正则匹配主要是用来取文件名用的,因为这里用foreach,所以要用索引的话可以这样,举个栗子:(图四&图五:)当然有能力的改回普通for循环吧,都行,相信各位大神都是妥妥的高手,这里不需要教了,在下只是提点建设性的小意见,各位看官图个乐就行

最后,如果各位有自己独到的见解,欢迎各位留言!!!

总结就是:大神说的密钥DRMKey从十进制转十六进制也是对的,但是从十六进制转ASCii码就有问题。

个人感想:真他喵的傻x废w,居然花了3个晚上debug还没看出来。。。浪费时间。。。恶心,呵tui~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值