本帖最后由 lenvy1 于 2025-3-20 19:17 编辑
免责声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.
目标网址:aHR0cHM6Ly93d3cudGluZ3poLmNvbS9wbGF5LzE2MTI0LTAtMC5odG1s
PS:心血来潮找免费的听书网站,以学习巩固更多逆向知识,逆向过程纯小白操作,难免有错漏之处请见谅,谢谢指教多多交流~
一、查找音频地址生成入口
1、首先,直接按F12键打开定位播放音频地址元素,发现是嵌套在 iframe 页面框架里的,说明可能是异步动态加载,按照经验一般不会在页面源代码出现明文地址;在工具面板“网络”选项卡里也没能找到数据包请求。
2、切换到工具源代码选项卡,试着搜索mp3关键字,直接找到了音频生成的关键js代码。
看变量名/函数名就猜出来了,var now = FonHen_JieMa()就是解码当前音频地址,var next = FonHen_JieMa()就是解码下一个音频地址。
3、咱们直接在控制台输入变量名now (因为源码里面将当前解码音频地址赋值给了now),或者复制输入FonHen_JieMa("104116116112…),
控制台打印出来的结果,果然如心中所料就是解码后的真实音频地址!
也就是说,FonHen_JieMa()就是音频解码函数,找到它如何实现就OK了。
二、分析FonHen_JieMa()代码
1、既然确定FonHen_JieMa()就是解密音频地址的关键,就要查出它的具体实现方式(即函数定义方法代码)。
有一个直接的方式,可以在控制台直接输入FonHen_JieMa回车,控制台显示它实现的方式。
2、鼠标单击进去,直接打开FonHen_JieMa()函数代码。
到了这一步,音频地址解码的实现代码找到了,下一步就是验证这个函数代码。
function FonHen_JieMa(u) {
var a = u.split("*");
var b = '';
for (var i = 1, n = a.length; i < n; i++) {
b += String.fromCharCode(a[i])
}
return b
}
三、验证FonHen_JieMa()解码
1、因为小白完全看不懂JS代码啊,就让AI助手转换成本人略懂的Python方法了。
这是Python实现方法:
[Python] 纯文本查看 复制代码 1 2 3 4 5 6 | def FonHen_JieMa(u):
a = u.split( "*" )
b = ''
for i in range ( 1 , len (a)):
b + = chr ( int (a[zxsq - anti - bbcode - i]))
return b
|
2、测试该方法
在音频播放页找到音频加密字符串,传入FonHen_JieMa(),最终实现解码。
3、调用mpv播放该解密音频地址,也是可以直接播放收听的。
yt-dlp 直接下载也行:
四、后处理批量下载思路
可以使用py写一个抓取专辑封面章节目录信息(titles 和 urls),for遍历,
然后通过xpath 或 正则 或者其他方法,取得章节音频加密字符串,再通过上术FonHen_JieMa()函数解码,
就可以实现批量下载某个书籍专辑的所有章节音频了。
大概思路就是这样,感兴趣的可以试着写一个py程序。
免责声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.
|