自动工作流之-web 网站
基于 AI 的 Web 前端 JS 自动化分析与接口提取实战
在 Web 渗透测试中,前端 JS 文件是接口发现的"金矿"。现代单页应用(SPA)普遍采用 webpack 打包,业务接口路径、请求参数、加密逻辑往往全部裸露在 JS 中。手工下载、解压、grep 逐一分析耗时费力。本文介绍一套用 AI(Claude Code)驱动的自动化工作流,从登录页 URL 出发,自动完成 JS 下载、接口提取、参数结构还原。
一、适用场景
- Vue / React / Angular 等 webpack 打包的 SPA 站点
- 登录页可访问(无需先登录即可拿到 HTML 与 JS 入口)
- 目标已获合法授权(仅用于授权安全测试)
二、环境与工具
| 工具 | 用途 |
|---|---|
| Claude Code (CLI) | AI 驱动的分析大脑,负责解析、grep、生成报告 |
| curl | 下载 HTML / JS 文件,支持代理 |
| Burp Suite (可选) | 8080 代理拦截,用于复测与重放 |
| 浏览器 | 辅助定位入口、抓包对照 |
核心思路:让 AI 读取 webpack 的 chunk 映射函数,自动构造所有 JS 文件路径并批量下载,再按规则提取接口与参数。
三、自动化工作流
1. curl 访问登录页 URL → 获取 HTML
↓
2. 解析 HTML 中的 <script src> + webpack app.js 入口
↓
3. 下载 app.js → 解析 n.u=function(e){...} 获取 chunk 映射
↓ (递归解析 common.js / chunk-vendors.js 的二级 chunk)
4. 批量下载所有 JS → 保存到指定目录
↓
5. 分析阶段(按需):
a. 接口清单提取(e["XXX"]="path" 模式)
b. baseURL 映射(createAxios({baseURL:...}))
c. 接口参数构成(定位调用点,提取 {field:...} 对象)
d. 公共字段头(axios 请求拦截器注入逻辑)
↓
6. 输出:api_list.txt / api_by_baseurl.txt / 参数结构报告
关键技术点
1. webpack chunk 映射解析
webpack 打包后,app.js 中存在一个 chunk 文件名映射函数:
n.u = function(e) {
return "js/" + e + "." + {197:"a960d963", 7242:"0e3100f8", ...}[e] + ".js"
}
AI 读取该函数,即可还原所有 chunk 的完整文件名,构造下载列表批量 curl,无需手工逐个翻找。
2. 模块联邦(Module Federation)递归
部分站点采用模块联邦,host 的 app.js 引用 remote 的 /common/common.js 容器,后者再分包。需递归解析:
app.js → 引用 /common/common.js
↓
common.js → 暴露 ./custom/request 等模块
↓
7743.xxx.js → 实际的 createAxios({baseURL:...}) 定义
3. 接口提取规则
接口常量通常以 IIFE 注入对象的形式定义:
(function(t){
t["ENT_ACCOUNT_CHECK"] = "t0/entAccountCheck"
t["FILE_PARSE"] = "fileParse"
t["HOME_IMAGE_QUERY"] = "t1/homeImageQry"
})(a || (a = {}))
正则 t\["([A-Z_]+)"\]="([^"]+)" 可批量提取 常量名 → 接口路径。
4. baseURL 映射
http 客户端通过 createAxios 集中定义:
httpEntmanagement = createAxios({baseURL:"/api/EIB.entmanagement/"})
httpComDowload = createAxios({baseURL:"/api/eibDownload/EIB.common/"})
httpCorporatebank = createAxios({baseURL:"/api/EIB.corporatebank/"})
将接口函数与 baseURL 对应,即可还原完整请求 URL:
httpEntmanagement.post({url:"t0/entAccountCheck"})
→ POST /api/EIB.entmanagement/t0/entAccountCheck
5. 参数结构还原
定位接口封装函数的调用点,提取传入的对象字面量:
// 接口定义
function o(t){ return httpEntmanagement.post({url:a.ENT_ACCOUNT_CHECK, data:t}) }
// 调用点(业务代码)
(0, Ae.t7)({
makeFlag: "1",
cifName: this.echoData.depositorNameCh,
orgno: this.orgno
})
结合 axios 请求拦截器注入的公共字段(ch/sid/token/scene/head 等),还原完整请求体。
四、需要提供的参数
使用时,只需向 AI 提供以下 4 项参数:
| 项 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 登录页 URL | ✅ | 站点登录入口 | https://xxx.cn:port/eib/#/login |
| 保存目录 | ✅ | JS 文件落盘目录(相对工作目录) | 公司金融/ 或自定义名 |
| 是否经 burp | ✅ | 流量是否走 8080 代理 | 是 / 否(直连) |
| 分析深度 | ✅ | 见下方选项 | 1 / 2 / 3 |
分析深度选项
| 选项 | 深度 | 输出 |
|---|---|---|
| 1 | 仅下载 JS | 文件落盘,不做接口分析 |
| 2 | 下载 + 接口清单 + baseURL 映射 | api_list.txt + api_by_baseurl.txt |
| 3 | 下载 + 接口清单 + 参数构成分析 | 每个接口的请求结构报告(方法/URL/业务字段/公共字段) |
💡 提示:深度 3 会定位每个接口的调用点,提取业务参数对象,结合拦截器逻辑还原完整请求体,可直接用于后续 POC 构造。
五、实战案例(脱敏)
对某银行网银系统执行深度 3 分析,结果:
| 指标 | 数量 |
|---|---|
| 下载 JS 文件 | 70 个 chunk + app.js + common.js |
| 提取接口 | 179 个 |
| baseURL 分类 | 4 个(entmanagement / common / corporatebank / eibDownload) |
| 参数结构还原 | 含 makeFlag 多场景、文件下载、开户校验等 |
单接口参数分析示例(t0/entAccountCheck):
POST /api/EIB.entmanagement/t0/entAccountCheck
Content-Type: application/json
{
"makeFlag": "1", // 校验场景:1=按户名 2=按CIF序号 3=按账号
"cifName": "<存款人名称>", // makeFlag=1 时必填
"orgno": "<机构号>", // 公共必填
"ch": "eibs", // 以下为拦截器注入公共字段
"scene": "openAccountApply",
"capCode": 1,
"sid": "<会话ID>",
"token": "<令牌>",
"verifyToken": "<验证令牌>",
"head": { "cnlTxnCd":"029999999", "deviceOS":"...", "isClient":"0" }
}
六、输出文件结构
项目目录/
├── <保存目录>/
│ ├── app.xxxxxxxx.js # webpack 入口
│ ├── common.js # 模块联邦容器(如有)
│ ├── chunk-vendors.xxxxxxxx.js
│ ├── 197.xxxxxxxx.js # 业务 chunk
│ ├── 7242.xxxxxxxx.js
│ └── ... # 其余 chunk
├── output/
│ ├── api_list.txt # 接口清单(深度≥2)
│ ├── api_by_baseurl.txt # baseURL 分类(深度≥2)
│ └── api_params_report.md # 参数结构报告(深度=3)
七、注意事项
- 授权优先:仅对已获书面授权的目标使用,遵守当地法律法规。
- 频率控制:批量下载 JS 时注意请求间隔,避免触发 WAF。
- 代理可选:经 burp 便于后续重放复测;直连速度更快。
- 加密接口:部分接口含前端加密(如 SM2/RSA),参数结构可还原但请求体需额外处理加密字段(本文不涉及加密逻辑破解)。
- 登录态依赖:区分"预审/公开接口"(未授权可达)与"登录后接口"(依赖 token),后者参数中的公共字段需从登录态获取。
八、总结
传统 JS 分析靠手工 grep + 浏览器断点,效率低且易遗漏。借助 AI 的代码理解能力,可自动化完成 下载 → 解析 → 提取 → 结构还原 全链路,将数小时的人工分析压缩到几分钟。尤其在大型 webpack 应用中,AI 能跨 chunk 追踪模块联邦依赖、还原完整调用链,这是手工分析难以覆盖的。
下一步可结合参数结构报告,直接生成 POC 请求脚本,进入漏洞验证阶段。
🔒 声明:本文所述技术仅用于已获授权的安全测试与防御研究。未经授权对他人系统进行测试属违法行为,作者不承担任何非法使用的法律责任。

浙公网安备 33010602011771号