wdmatrix404-cyber/xhrscan
GitHub: wdmatrix404-cyber/xhrscan
基于 Playwright 的通用 Web 应用 XHR/API 发现工具,通过主动遍历已登录应用来枚举其后端接口调用。
Stars: 0 | Forks: 0
# xhrscan
🌐 **English** | [日本語](README.ja.md) | [中文](README.zh.md)
一个通用的、不针对特定站点的扫描器,它会在已登录的 Web 应用中进行点击遍历,
并报告其发出的每一个 XHR/fetch/document 请求 —— 无需源代码,
无需现有的 API 文档,也无需进行特定站点的配置。
**提供两种运行方式,底层引擎相同:** 作为简单且确定性的 CLI 运行
(`xhrscan scan`,不使用 LLM,不需要 API key —— 可直接在脚本或 CI 任务中运行,
无需安装任何其他组件),或者由你已有的 coding agent
(如 Claude Code/Codex)驱动,进行自适应修复阶段(repair waves),它能读取屏幕上的文本并
判断何时停止,而不是盲目运行固定的遍历次数。请参阅快速入门。
## 核心亮点
- **主动而非被动** —— 它会亲自点击并遍历整个应用,
包括那些手动侦察通常会跳过的删除/重置/完成类操作。
- **针对目标零配置** —— 不需要选择器,不需要编写应用专属脚本;将其
指向任何已通过身份验证的应用即可。
- **安全地体验完整的 CRUD 生命周期** —— 创建真实的测试实体,
执行它们完整的生命周期,并精确清理它所创建的一切。
- **可直接用于报告的输出** —— 经过去重和来源标记的 XHR 模板,
而不是原始的 HAR 转储。
- **拒绝虚假的安全感** —— 会直白地说明它将触碰哪些数据;至于
将其指向何处,由你决定。
## 功能说明
将其指向 Web 应用的主页,它会:
1. **发现** 从主页(导航链接、菜单、选项卡)中发现应用的各个功能区域
—— 无需硬编码的选择器或特定站点的知识。
2. **探索** 以通用方式探索每个区域:点击按钮/链接,使用
合理的测试数据填写表单,处理确认对话框和模态框(包括
像 SweetAlert2 这样的第三方组件),并捕获其触发的每一个 XHR/fetch/document
请求。
3. **去重** 将所有内容去重,整理成一份清晰的 **XHR 模板**
列表(方法 + 规范化后的 URL + 状态),并附带完整的来源信息 —— 即哪个 UI 路径
触发了它、发送了什么内容、以及返回了什么结果。
4. **报告** 将所有内容汇总为单个 CSV 文件。
每一个底层决策(什么算作表单字段、什么算作模态框、
什么算作破坏性操作)都是基于结构/DOM 信号做出的 —— 其探索
引擎本身并不使用 LLM,也不需要 API key。
## 适用人群
适合任何需要知道 **Web 应用实际调用了哪些后端 API**,
但又不想阅读其前端源代码的人:
- **逆向工程无文档的 API**,以便在在此基础上构建集成之前进行了解。
- **安全测试/攻击面映射**,用于在已授权评估的侦察阶段 —— 这是一种快速、通用的方法,用于枚举整个应用中真实的
endpoint、方法以及请求/响应的数据结构。
- **API 文档补全**,为那些从未有过文档的遗留应用生成文档。
- **回归基准**,在重构或迁移前:捕获当前应用自身的 API 表面
长什么样,并在迁移后进行对比。
- **QA/测试工程师**,希望获取某个特定功能所涉及的具体 endpoint 列表,
以便在此基础上构建测试覆盖率。
你需要像本工具那样对目标进行测试一样,获得相应的授权 ——
请参阅下文的安全须知。
## ⚠️ 安全须知 —— 仅限测试账户和环境
**每次扫描都可能修改或删除目标上的真实数据,包括在扫描
之前已经存在的已有数据 —— 没有任何标志可以关闭此行为。**
它会像点击任何其他按钮一样,点击任何匹配此关键词启发式规则(元素的
名称、`onclick`、CSS 类或 i18n key)的内容:**delete, remove, archive, deactivate, disable, terminate, destroy, revoke, drop, purge, unsubscribe, suspend, reset, ban, complete, cancel**。
该启发式算法并不理解特定按钮实际执行的操作,因此请将任何
匹配的操作视为可能是不可逆的。
**真正的安全边界在于你将此工具指向何处,而不是某个标志。**
请仅在完全由你控制、并且被明确授权进行破坏性测试的一次性测试账户/环境中运行它。每次运行时,它都会在你提供的任何 URL 上创建、
编辑和删除真实数据。
请勿针对生产账户、共享账户或任何你无法承受数据丢失后果的环境运行此工具。
它也不是一款隐秘工具 —— 它不会试图规避速率限制、CAPTCHA 或机器人检测,
它也不打算这样做。
**自创建的实体总是会被清理。** 在探索过程中,此工具会
创建虚拟测试数据(如“新分组”、“新模板”等),并在每个区域都有机会引用它们后,删除本次运行中*由其自身创建*的特定实体
—— 它只会对刚刚从成功的创建请求中返回的 id 执行操作,绝不进行猜测。检查 `report` 运行摘要中的
`selfCreatedEntitiesCleanedUp` 计数(以及
`dossier-finalizer.json`)以查看它触碰了哪些内容 —— 而不是 `cleanupActions`,
后者计算的是另一回事,范围更窄(针对本次运行之前*已经存在*的实体执行的破坏性操作)。
**独立的 `
标签:API发现, Playwright, SOC Prime, Web探索, 开发工具, 文档结构分析, 特征检测, 网络请求扫描, 逆向工具