用 AI 做 JS 逆向:从抓包到复现的完整方法论
0x01 前言
JS 逆向这门手艺,过去几年最大的变量不是工具,而是你身边多了一个不知疲倦的分析助手。
以前面对一坨 1.4 MB 的压缩代码,人的第一反应是"从哪一行看起"。现在这个问题的答案变了 ------ 你不该自己去看,你该让 AI 去看,而你负责问对问题。
但这篇不是"AI 一键破解"的爽文。真实情况是:AI 会把整个过程提速 5~10 倍,但它不会替你判断方向。 方向错了,AI 只会更快地把你带进沟里。
下面这套流程是我完整走通一个真实站点后总结的。有一点值得先说:整个实战环节,我实际只发出去一句话。 但那句话是精心组织的,而验证环节我一步没敢省。
全文只讲怎么用 AI 分析,不涉及目标站点任何具体的算法细节。
0x02 先搞清楚:AI 在逆向里扮演什么角色
很多人的误区是把 AI 当"自动破解器"。它不是。它在逆向里的真实价值只有三块:
| 能力 | 说明 | 为什么关键 |
|---|---|---|
| 信息压缩 | 把几十万字符的压缩代码,压成 500 字的人话结论 | 人的阅读带宽是瓶颈,AI 不是 |
| 模式识别 | 在混乱代码里认出"这是签名函数""这是密钥""这是参数拼接" | 靠的是见过的代码量 |
| 跨语言翻译 | 把浏览器里的 JS 逻辑,改写成 Node / Python 可跑的实现 | 省掉最枯燥的搬运 |

一个前提:你得知道要问什么。
AI 不会自己产生"我应该去抓包看看请求体"这个念头。方向感来自你,速度来自 AI。这就是为什么下面的流程里,每一步都是"你先定目标,再让 AI 执行"。

0x03 工具准备:让 AI"看得见"目标
这是整个方法论里最关键、也最容易被忽略的一环。
核心原则:不要让 AI 靠你复制粘贴来获取信息。要让它通过 MCP 直接看到流量、看到文件、看到浏览器。
为什么?因为逆向是高频迭代的过程。一个环节要来回十几轮,每次都要你手动复制,光搬运就把耐心耗光了。
推荐三件套:
| 角色 | 工具类型 | 作用 |
|---|---|---|
| 抓包 | Proxypin(开启 MCP) | 让 AI 能直接检索流量、读取请求/响应体 |
| 浏览器 / Hook | jshookmcp(CDP 能力) | 让 AI 能开页面、跑 JS、监控网络、下断点 |
| 分析主体 | 能读写文件 + 执行命令的 AI Agent | 下载 JS、提取片段、本地跑验证 |
三者打通之后,你会进入一个很舒服的状态:
"把刚才那条请求的请求体拉出来给我看看" ------ 一句话,AI 自己就去查了。
"把这个站点的主 JS 下载下来,搜一下有没有可疑关键词" ------ 一句话,AI 自己下载、自己搜、自己汇报。



0x04 核心心法:Observe → Capture → Rebuild → Verify
别一上来就啃代码。正确的顺序是四步,顺序错了会浪费大量时间。
① Observe 先看流量,定形状 ------ 不写代码
② Capture 定位脚本,提取关键片段 ------ 只读不跑
③ Rebuild 本地重建,绕开浏览器 ------ 开始写代码
④ Verify 回算验证,对不上就回到 ② ------ 硬门槛
其中 Verify 是硬门槛。什么叫硬门槛?就是:
你没能用抓到的真实参数,算出和抓包里一模一样的那个签名值 ------ 那就不算逆向完成。
这条线一卡,后面所有工作都没有意义。很多人在 Rebuild 阶段"看起来跑通了"就收工,结果线上环境稍微一变就挂,根因就是跳过了 Verify。

0x05 实战:其实只需要一句话
说明:为了保护站点,下文把目标称为"目标站 ",所有具体参数名、字段名、算法均已脱敏。本文只讲方法,不讲算法。
0x05.1 我发出去的,就这一句
先把真实情况摆出来 ------ 整个实战环节,我的全部输入是:
"你可以使用 proxypin_desktop 和 jshookmcp,帮我分析有道翻译的翻译接口的实现,推荐逆向顺序。"
没有补充说明,没有第二轮澄清,没有中途纠正。AI 拿到这一句之后自己跑完了全程,最后交回一份带验证结果的接口分析。
它不像一份"操作手册",更像一次委托。

0x05.2 这句话为什么管用:工具 + 目标 + 产出
看着随口一句,其实三个要素齐了,缺一个都不行:
| 要素 | 句中的对应 | 缺了会怎样 |
|---|---|---|
| 授权工具 | "你都可以使用 proxypin_desktop 和 jshookmcp" | 它不知道手上有抓包和浏览器能力,只能凭空推理 |
| 说清目标 | "分析翻译接口的实现" | 不知道要查什么,会漫无目的地翻代码 |
| 指定产出 | "推荐逆向顺序" | 倒给你一堆原始流量,不成结论 |
一句话公式:工具 + 目标 + 产出。
反面例子:
- "帮我分析这个接口" ------ 没给工具,AI 只能纸上谈兵
- "用抓包工具看看" ------ 没给产出,回来一堆原始数据
- "帮我逆向一下" ------ 目标太虚,它不知道从哪下手

0x05.3 中间那些步骤,是 AI 自己走的
目标明确、工具在手,AI 的动作就连成了一条线,中间没有回来问我:
抓流量 → 判可疑字段 → 下载 JS → 检索关键词 → 提取关键片段 → 回算验证 → 端到端复现 → 输出逆向顺序

其中最关键的一步是局部提取:面对单行几十万字符的压缩文件,它没有通读,而是以关键词为中心取前后一小段,再逐句解释。

这里有个隐藏前提:它能随手"取前后一小段",是因为文件已经在它手上、命令也能自己跑。如果只能靠你复制粘贴,这一步根本做不到 ------ 这就是 0x03 为什么重要。
0x05.4 我只在一个地方必须亲自盯着
AI 很擅长"看起来跑通了"。整条链路里,我唯一必须亲自确认的只有一件事:
它有没有用抓包里的真实参数,算出和抓包里完全一致的结果。
这一步糊弄不了 ------ 一样就是一样,不一样就是不一样。

确认之后,端到端重建就是水到渠成:脚本跑通,浏览器彻底退出。

所以这篇文章真正想教你的,其实只有两件事:
- 怎么把一句话说对 ------ 工具 + 目标 + 产出
- 在哪一步必须亲自盯着 ------ 回算验证
其余的,交给它。
0x06 我踩过的坑(AI 时代的新坑)
坑 1:报错了就先怀疑算法 ------ 其实该先怀疑请求本身
有一次接口报错,我的第一反应是"签名算错了",反复核对了半小时。
结论是:HTTP 方法用错了。 参数格式完全正确,只是该用 POST 的地方用了 GET。
教训 :让 AI 排错时,明确要求它按"请求层 → 参数层 → 算法层"的顺序排查。请求层的问题(方法、编码、头部、Content-Type)比算法层常见得多,而且排查成本极低。
可以这样说:"先列出所有可能原因并按可能性排序,逐条给出验证方法。不要先怀疑算法,先排除请求本身的问题。"
坑 2:AI 会把"调试字段"一起拼进请求
这个坑非常隐蔽。
AI 在执行"生成签名并组装请求"时,可能把本来只是用来调试的中间变量也一并合并进了请求参数,导致请求被污染、服务端直接拒绝。
在表单提交场景下它甚至不报错(多余字段被忽略),只在 query string 场景下暴露 ------ 问题被延迟到很久以后才出现,极难定位。
教训:让 AI 组装请求时,明确要求**"只取需要的字段,并打印出最终实际发送的完整请求"**。看到实际请求,问题一眼就出来了。
可以这样说:"组装完把实际发出的完整请求打印出来,我要逐个核对字段。"
坑 3:贪图省事,让 AI 通读混淆代码
一次让 AI"分析整个文件",它读了很久,最后给了一堆泛泛而谈的总结,关键的几行反而没提。
教训 :混淆代码的正确打开方式是检索 + 局部提取,不是阅读理解。
可以这样说:"该文件是压缩后的单行代码。以 X 为中心打印前后 500 字符原文,再逐句说明每句在做什么。只读这一小段,不要通读全文。"
坑 4:字段"有时有、有时没有"
某个数据字段在 A 词上有值,在 B 词上整个字段都不存在。直接访问就崩。
教训:让 AI 写解析代码时,统一要求**"所有可选字段必须兜底"**。它默认会写出乐观代码。
可以这样说:"所有可选字段都要兜底,缺字段不能崩。"
坑 5:跨语言的顺序差异
同一份参数列表,在不同语言里"排序"的结果可能不一样(比如大小写字母的相对位置)。
代码里用的是哪种排序,你必须原样复刻,不能用自己语言的默认排序想当然。
教训 :凡是涉及"排序后拼接"的逻辑,都要让 AI 明确回答:"这里用的是哪种排序规则?"

0x07 什么时候 AI 帮不上忙
说点实话,以下几种情况 AI 的价值会明显下降:
- 你需要"直觉"的时候 ------ AI 可以穷举可能性,但判断"哪个最像"仍需经验
- 需要真实设备的场景 ------ 握手、证书锚定、硬件指纹,AI 只能给思路,执行还得靠你
- 强混淆 / 虚拟机保护的代码 ------ 直接读懂难度极高,需要专门的还原手段,AI 只能辅助
- 需要长期观察的行为 ------ 比如风控策略随时间的漂移,AI 没有时间维度
AI 放大的是你的判断力,不是替代它。

0x08 合规边界
技术本身中立,但用途决定性质。几条必须守住的原则:
- 只分析公开可访问的前端资源
- 控制请求频率,不做高频抓取、不影响对方服务
- 不用来绕过付费、获取非公开数据
- 遵守目标站点的服务条款与
robots协议 - 学习研究可以,商业抓取和滥用不行
0x09 总结
把整套流程再压一遍:
- 一句话就够,但那句话要说全 ------ 工具 + 目标 + 产出
- 让 AI 做信息压缩,你做方向判断 ------ 它负责快,你负责对
- 关键词 ± 上下文提片段 ------ 永远不要通读混淆代码
- 回算验证是硬门槛 ------ 对不上就是没做完,这是你唯一不能偷懒的地方
- 排错按"请求层 → 参数层 → 算法层" ------ 别一上来就怀疑算法
其实 AI 带给 JS 逆向最大的改变,不是"能自动破解了",而是:
你终于可以把宝贵的注意力,从"搬运信息"转移到"判断方向"上了。
这才是它真正的价值。
免责声明:本文仅供技术交流与学习,所有站点信息已脱敏,不含任何具体接口的还原算法。请勿将相关技术用于非法数据抓取或绕过服务限制,请自觉遵守相关法律法规及目标站点服务条款。