关于 har-forensics-mcp
har-forensics-mcp 可在编辑器中审计本地 HAR 文件,识别潜在数据泄露和第三方请求,并生成脱敏报告;处理过程不发起网络请求。
主要功能
- 01查找磁盘上的 HAR 文件
- 02生成脱敏审计摘要
- 03检查第三方及其来源链
- 04分析性能与 CSP
- 05搜索、比较和查看请求
- 06写出脱敏后的 HAR 文件
适用场景
- 01检查捕获文件是否含泄露凭据
- 02识别第三方及其依赖项
- 03比较文件中的新增第三方或性能退化
- 04为工单准备脱敏 HAR 文件
MCP 相关
通过 stdio 向 MCP 客户端提供 HAR 分析工具。服务读取本地文件,不发起网络请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 此机器上 .har 文件的绝对或相对路径。 |
详细介绍
har-forensics-mcp
在编辑器中审计 .har 捕获文件。其他 HAR 工具只会列出请求,而这个工具会回答你打开文件时真正想知道的问题:泄露了什么、页面上有哪些人,以及发送到任何地方之前需要移除什么。
从本地磁盘读取文件、进行计算,然后写入标准输出。它不会发起任何网络请求,这正是关键所在:真实捕获文件中包含有效的会话 Cookie、Authorization 标头,有时甚至还有银行卡号。
适用于任何通过 stdio 使用 MCP 的工具——Cursor、Claude Code、Windsurf、Zed、VS Code Copilot。
设置
Claude Code:
claude mcp add --scope user har-forensics -- npx -y har-forensics-mcp
--scope user 会为所有目录注册此服务。不加该参数时,服务只会作用于运行命令时所在的目录——命令仍会报告成功,但在其他目录中会静默地无法使用这些工具。
Cursor——项目中的 .cursor/mcp.json,或全局配置 ~/.cursor/mcp.json:
{
"mcpServers": {
"har-forensics": {
"command": "npx",
"args": ["-y", "har-forensics-mcp"]
}
}
}
Windsurf / Zed / VS Code Copilot 在各自的 MCP 配置文件中使用相同的 command + args 结构。
重启编辑器,然后让工具处理一个捕获文件:
对
~/Downloads/checkout.har运行analyze_har
需要 Node 20+。除此之外不需要任何东西——无需克隆、构建、API 密钥或账户。
工具
| 工具 | 用途 |
|---|---|
find_captures | “我的 .har 文件在哪里?”——扫描 Downloads、Desktop、Documents、当前工作目录和临时目录。 |
analyze_har | “这个捕获文件里有什么?”——分诊概览,每项检查给出一个判定。从这里开始。 |
har_brief | 将完整审计结果输出为已脱敏的 Markdown,可供引用或粘贴的产物。 |
har_findings | 按严重程度筛选的发现,按严重程度从高到低排列。支持分页。 |
har_vendors | 所有第三方服务,按影响范围评分(0–100),并标注 HTTP Archive 审查等级。 |
har_provenance | 谁加载了谁——供应商引入的第四方服务。 |
har_perf | “为什么这么慢?”——按主要阶段列出最慢的请求、每个源的握手开销、未压缩资源,以及重定向造成的时间损耗。 |
har_csp | 根据观察到的流量生成一份起始版 Content-Security-Policy。 |
har_hunt | 查询请求——is:thirdparty、status:>=400、type:script、host:…。返回条目索引。 |
har_entry | 查看某个请求的所有信息:标头、Cookie、正文和计时阶段。 |
har_curl | 将该请求转换为可运行的 cURL 或 fetch(),并遮蔽凭据。 |
har_diff | 对比前后版本:新增了什么、哪些方面出现退化、哪些第三方服务是新增的。 |
sanitize_har | 写入可安全附加到工单的 .redacted.har 文件。 |
har_hunt → har_entry → har_curl 是完整流程:找到请求、查看请求、重放请求。每个返回列表的工具都接受 limit 参数并告知总数,因此不会静默地只返回第一页,却让人误以为这就是全部结果。
除 sanitize_har 外,所有工具都标注了 readOnlyHint,并且全部设置为 openWorldHint: false——这就是下文的无网络保证,它以客户端可读取并据此操作的形式呈现,而不是只靠一段文字让你自行相信。
它从 Web 应用继承的三个特性
**不联网。**分析器中没有 fetch,这种传输方式也不会添加 fetch。这是产品的核心原则——Cloudflare 于 2026 年 3 月推出了一种 DLP 配置文件,可以检测 HTTP 流量中的 HAR 文件,并允许管理员直接阻止上传,因为未经清理的 HAR 是已知的凭据窃取途径。
**只提供摘要,绝不倾倒原始数据。**每个工具返回的都是经过整理的结论,而非原始条目;每个列表都有数量上限,并会注明总数。这个工具所针对的捕获文件可能包含数万条记录,大小达数百 MB;把条目列表交给 Agent 会耗尽其上下文,还会让它处理分析器已经完成的任务时变慢。(在 0.2.0 之前,代码一直没有兑现这一承诺——har_findings 没有上限,在包含 10,000 条记录的捕获文件中返回约 93,000 个令牌。27 条记录的演示文件只返回约 175 个令牌,这正是问题一直未被发现的原因。)
默认脱敏。har_brief 和 har_findings 都使用与浏览器导出相同的脱敏器,该脱敏器基于一张共享的密钥模式表构建。与拥有下载文件夹的人类相比,在编辑器中读取捕获文件的 Agent 更可能把一条发现粘贴到聊天窗口中。
它不会做什么
- 覆盖任何内容。
sanitize_har会拒绝写入现有目标文件或原始捕获文件。 - **读取超过约 512 MB 的文件。**会主动进行限制,而不是任由程序因内存不足而崩溃——该上限略低于 V8 的最大字符串长度,因为文件会作为一个字符串整体读取。
- **回答它无法理解的查询。**拼错的筛选条件(
is:third-party、staus:404)会报错,而不是返回空结果。在 0.2.0 之前,这两种情况的响应相同,这意味着拼写错误可能会让人误以为捕获文件没有问题。 - **根据你的时钟判断时间。**HAR 是历史记录,因此令牌是否过期要根据每条记录的
startedDateTime来判断。与当前时间比较,会把一周前捕获文件中的每个令牌都标记为已过期,从而掩盖浏览器发送请求时确实已经失效的那个令牌。
阅读代码
此软件包只附带一个文件:dist/server.js。它有意不进行压缩——构建时将它视为供调试编辑器集成的人类阅读的文件,而不是供机器解析并压缩体积的文件——因此它就是构建产物中的代码,并且已预先构建。没有单独的源代码仓库可供克隆;随包提供的文件就是可供审计的产物。
许可证
MIT。捆绑的第三方数据由
third-party-web 生成,采用 MIT 许可证,
Copyright (c) 2017 Patrick Hulce,源自 HTTP Archive。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。