最近沉迷小说,更新有所放缓。恰逢书荒,想找几本好书,便打算写个爬虫程序,抓取某茄小说网站的各大排行榜数据。在数据抓包实战分析过程中,我发现请求参数里有两位”老朋友”——msToken和a_bogus。本文将完整呈现针对某茄小说的a_bogus参数逆向过程,重点分析加密逻辑的定位与还原技巧。
与《JS逆向实战系列一|某头条a_bogus参数逆向分析与算法还原》相比,本次某茄小说加密分析的调用链路更为隐蔽,需要通过特定调试技巧才能精准定位加密位置。
本文目录
- 抓包分析:锁定目标接口与参数
- 初步尝试:全局搜索遇阻
- XHR断点:精准拦截请求
- 堆栈分析:追踪加密调用链
- 精准定位:条件断点锁定目标
- 扣取代码:提取加密逻辑
- 环境补全:适配Node.js环境
- 本地验证:运行结果对比
- 扩展思考:调试技巧分析
- 常见问题与解决方案
- 获取完整课件
1. 抓包分析:锁定目标接口与参数
在某茄小说排行榜页面进行抓包,点击任意排行榜分类后,会捕获到/api/rank/category/list接口。该接口的请求链接中包含两个关键加密参数,这次我们重点进行加密参数的分析。

2. 初步尝试:全局搜索遇阻
按照常规思路,首先在Sources面板使用全局搜索查找a_bogus关键词,但搜索结果并没有给a_bogus赋值的代码。这表明需要进行更深层次的加密分析来定位加密位置。

3. XHR断点:精准拦截请求
在Sources面板中添加XHR断点,URL片段设置为/api/rank/category/list。刷新页面并点击排行榜分类后,代码执行暂停在关键位置:
return (0 === i.length || l) && _ ? _.apply(O, R) : o

4. 堆栈分析:追踪加密调用链
通过Call Stack面板分析调用堆栈,在栈帧中发现了熟悉的bdms.js文件。点击进入关键栈帧,定位到核心代码:
(b = s.apply(l, u), p[++d] = b);
在此处添加日志断点,输出变量b的值,确认这就是a_bogus参数的生成位置。

5. 精准定位:条件断点锁定目标
将日志断点升级为条件断点:b.length == 44。这样只有当生成44位长度的字符串时才会暂停,精准过滤其他加密过程。这次的bdms.js算法还原过程体现了精准定位的重要性。
else if (59 === m) c = f[r++], s = p[d--], (u = function e() { var r = e._v; return (0, e._u)(r[0], arguments, r[1], r[2], this) } )._v = [s, c, v], u._u = e, p[++d] = u; else
6. 扣取代码:提取加密逻辑
将bdms.js文件完整复制到本地,在关键位置添加代码暴露加密函数:
u._u = e, window.task = u, // 暴露加密函数到全局 p[++d] = u;
7. 环境补全:适配Node.js环境
在文件开头添加环境补全代码,完成环境配置:
// 环境补全 window = global self = window; XMLHttpRequest = function(){} window.requestAnimationFrame = function(){} navigator = {}
在文件末尾添加调用函数,实现完整的a_bogus参数逆向功能。
function get_a_bogus(Path = null) { args =[ 0,1,0, "app_id=2503&rank_list_type=3&offset=0&limit=10&category_id=8&rank_version=&gender=0&rankMold=2&msToken=...", "","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..." ] if(Path) args[3] = Path return window.task.apply(null, args); }
8. 本地验证:运行结果对比
在终端中运行node bdms.js,成功生成a_bogus参数值,与浏览器中的格式完全一致,标志着本次某茄小说加密分析的成功完成。

9. 扩展思考:调试技巧分析
为什么不直接跟栈找加密函数?因为该代码处于循环中,负责生成多个参数。使用条件断点b.length == 44可以精准锁定目标,这是逆向分析中的关键调试技巧。
10. 常见问题与解决方案
- Q:补环境是否太简单?
A:JS逆向的目标是让代码能运行,这种”够用就行”的方式最有效。 - Q:不同站点加密为何差异大?
A:核心算法相同,但集成方式和调用链可能完全不同。 - Q:条件断点条件如何设置?
A:通过抓包观察目标参数的长度特征来设定。
11. 获取完整课件
关注公众号:孤狼网络科技,回复:fanqie_a_bogus,获取完整代码课件。
技术总结
通过本JS逆向教程,我们完成了某茄小说的加密参数分析。与之前案例相比,本次重点在于条件断点的精准定位和最小化代码扣取方案。本文由林石工作室提供技术支持。
下篇预告: 下一篇《JS逆向实战:某看视频hk_sign参数逆向实战全记录》中,我们将直击某看视频核心接口,通过数据抓包实战,完整解析hk_sign参数逆向与MD5签名算法还原过程,并提供可落地的代码方案。

