|
发表于 2024-2-8 14:32:12
|
显示全部楼层
河北省石家庄市
我们先抓包看一下
得到真实音频url是“xxx.com/760be8faad/0005.mp3?ts=Za5W9PPotANlSUU5FYPeJA&e=1707369944”
发现其中有一项是未知的,即ts的值“Za5W9PPotANlSUU5FYPeJA”,其它大概看一眼,应该都是已知值,比如e应该是10位时间戳,我们向上追溯一下ts看看:
通过向上溯源,我们发现“Za5W9PPotANlSUU5FYPeJA”值来自于一个请求,但是这个请求中仍然有个未知的值“sign=d59676cd33449365a7ce995bb3e36979”,不过我们再次向上溯源,发现搜不到这个值,那么这个值很有可能就是计算得出的,那么我们就不要搜索值,搜索“sign”这个关键词,看下哪里有“sign”,以及是sign如何生成的:
果真找到了一个JS里面有很可疑的代码啊:sign:hex_md5((new Date).getTime()+T+b+U)
那我们不如直接试试,先格式化一下看看JS:
哦,这个sign实际是个md5,md5的值是计算了哪些东西?把代码换成人话,再看下:取MD5(时间戳 + T + b + U),那我们再看看这里面的“T”、“b”、“U”都是什么不就行了吗,那就继续找:
有点眉目了,T是X[1],b是x[2],x有些像易语言里面的数组啊!还有一个U=lalalala + "FSKVKSKFKS",很像易语言里面的赋值,FSKVKSKFKS加了双引号,是字符串,那lalalala就是变量吗?
我们先找x看看:
根据代码,可以看出:
h是当前页面的路径,如"/play/1234/5"
w是去掉第一个"/"后的路径字符串,如"play/1234/5"
x是通过"/"分割w得到的数组,如["play", "1234", "5"]
T是数组x的第1个元素,即小说的代码"1234"
b是数组x的第2个元素,即集数"5"
所以T和b其实是从当前页面路径中提取出来的小说代码和集数,用于后续请求中的参数。
x是通过分割路径字符串得到的一个数组,T和b只是从这个数组中取出了对应位置的元素,代表了小说代码和集数。
OK,那x没问题了,T和b也就没问题了,我们继续看“U”,这个JS里面没有发现lalalala的赋值,那继续向上追溯:
当我们向上溯源到序号第61个请求,我们发现这里面有给lalalala在赋值,具体逻辑是:
获取class为audio-iframe的元素
从这个元素的data-info属性值中取子字符串
取前5个字符作为lalalala的值
那就继续找data-info就好了:
看到data-info的值是FRDSHFSKV,取前5个字符,即“FRDSH”就是lalalala的值,再结合以上所述,拼接“FSKVKSKFKS”就得出U的值,即U=“FRDSH”+“FSKVKSKFKS”。
到这里我们得到了最终请求中所用到的所有参数或参数计算方法,现在到了尝试阶段了,试一下:
Content-Type不对,而且Content-Length只有548,我们再检查下:
是我们获取的url里面符号都被编码了,那对URL解码再次访问试试:
OK,Content-Length: 4334832,Content-Type现在也是audio了。证明我们解析流程是正确的:
demo_有声小说.e
(949.78 KB, 下载次数: 2)
|
-
评分
-
查看全部评分
|