某网站音频地址逆向分析
本文最后更新于:2025年6月30日 下午
目标网站:aHR0cDovL3d3dy55dWV0aW5nYmEuY24vYm9vay9kZXRhaWwvM2ExYWI4YjUtOTUwZi0yOTFhLTBkNzctMzlkZDJkMjg1ZDgzLzA=
要获取网络上免费站的音视频真实地址的方法其实有很多,比如直接用IDman插件嗅探,或者抓包缓存等。但是这只是单个音频地址的获取方法,而且不一定有效,比如音频地址使用异步动态加载,甚至是加密包装过的,使用嗅探工具不一定能嗅探到。如果想要批量获取,就必须了解这个音频真实地址的产生过程,这个过程就是解析(逆向)其算法过程。
反调试
可以发现右键和F12
都打开不了调试页面,以及提前打开进入也会关闭,估计加了反调试。
下载这个脚本,控制台防检测
然后在脚本中添加,重启浏览器,提前打开调试界面,访问目标网站(不过好像播放图片那里可以右键打开😅)
逆向
首先在页面里搜索mp3
或者m4a
等常用音频后缀,如果能搜到,那就最好,可以直接了解音频地址的格式。这里发现地址是有规律的,但是音频名称是一串像是哈希字符样式的字符串,还是需要分析加解密的流程才能批量爬取。

在源代码中搜索音频后缀无果,说明可能是通过接口得到的音频地址,查看网络选项卡。
发现就两个请求,一个ting-with-efi
,一个create
。经过分析ting-with-efi
请求才是关键的,所以下面只分析这个。

查看调用链,打上断点

直接到initGetData
这个方法上,这个方法明显看出是请求发送出的地方,传入的e
值可能是章节的id
,去源代码中搜索可以验证。

调试到这个方法的末尾,查看值发现efi
应该就是接口返回的加密的音频地址,往下进入initAudio
方法

在赋值给r
这一步得到了真实的地址,接着分析vs.d(ef,n,pad)
这个方法,一眼看着也很像加解密相关的,因为有pad
这个填充标识在。传入的n
是音频的id
,i
是时间转化出来的字符串

解密函数,AES
解密,CBC
模式,密钥通过gk
方法生成,iv
通过gi
方法生成,都经过Base64编码,解密即可得到

到这里就分析完了,很简单,写一个完整的爬取demo,仅供参考