HAR 转 cURL — 将 HAR 文件转换为 cURL、fetch、Python 或 Go 代码
将 HAR (HTTP Archive) 文件转换为 cURL 命令,或转换为 fetch、Python、Go 或 Node.js 代码。完全在浏览器中运行。无上传、无限制。
HAR to cURL / fetch / Python / Go / Node
Convert HAR (HTTP Archive) files to runnable code in 5 languages. 100% local — your traffic never leaves the browser.
HAR (HTTP Archive) 是从浏览器捕获 HTTP 流量的标准格式。自 2012 年起,所有浏览器都能从 Network 标签页导出 HAR 文件;该格式是一份结构良好、文档齐全的 JSON,记录下页面发出的每一条请求:方法、URL、请求头、Cookie、查询参数、请求体、响应状态、响应头、响应体,以及耗时。它的典型使用场景是调试 —— 当一个 API 调用在生产环境失败、在开发环境却正常,或第三方 API 在测试环境中的行为与文档描述不符时,导出一份 HAR、检查实际的 HTTP 流量是定位差异的最快方式。本工具把 HAR 转换成五种语言的可运行代码,让捕获到的请求可以在受控环境里被精确重放。
HAR 文件「不那么显然」的一点是它暴露的内容。一份 HAR 会记录录制期间发出的每一个请求头、每一个 Cookie、每一个 Authorization token。如果你在登录银行网站、社交网络或内部管理后台时录制了 HAR,那么这份 HAR 里就包含你的会话凭证。公开分享 HAR,等同于公开分享你已登录的会话。工具的请求详情面板允许你在转换之前编辑请求头 —— 如果这份 HAR 需要分享,正确做法是在导出转换代码前先脱敏 Authorization、Cookie 以及所有自定义认证请求头。同一原则也适用于分享 HAR 文件本身。
最后的交接建议:如果目标是重放单条请求以重现 bug,就在列表里选中那条请求、选择 cURL,然后在终端里运行输出。如果目标是写一份测试 fixture,就选 fetch 或 Python,把输出粘到测试文件里并配上合适的断言。如果目标是理解一个多步流程(登录、获取用户数据、登出),就把所有请求都选中、整序列一起转换 —— 输出会保留原始顺序,你可以按步骤逐步重放整个流程。本工具能在几秒内给你可运行的代码;下一步通常是针对你具体的用例补上合适的断言和错误处理。
使用方法
拖入一个 HAR 文件
把一个 .har 文件拖到拖放区,或者把 HAR JSON 直接粘贴到输入框里。HAR 也就是 HTTP Archive 格式 —— Chrome、Firefox、Edge 和 Safari 都能从网络面板导出网络追踪为 HAR。工具会解析 JSON 并显示请求列表。
选择要转换的请求
请求列表会展示 HAR 里的每一次 HTTP 调用 —— 方法、URL、状态、大小、耗时。可以选择一个、多个或全部请求。当 HAR 抓取的是完整用户流程(登录、获取数据、登出)时,多选就是正确选择。
选择输出语言
可选 cURL(shell 脚本里 HTTP 的通用语)、fetch(浏览器/Node.js)、Python `requests`、Go `net/http`,或者任意组合。输出按请求分成一个个代码块,可以直接粘贴使用。
常见问题
怎么从浏览器获取 HAR 文件?
打开 DevTools(F12 或 Cmd+Opt+I),进入 Network 标签页,重现你想捕获的那条请求,在列表里右键任意请求,选择「Save all as HAR with content」(Chrome)或「Save All As HAR」(Firefox)。文件就是纯 JSON。
HAR 格式里都包含些什么?
HAR 文件是一份 JSON 文档,包含一个 `log` 对象,`log` 里有一个 `entries` 数组。每条 entry 都包含 request(方法、URL、请求头、Cookie、queryString、postData)和 response(状态、响应头、内容、timing)。像 Authorization 这样的敏感请求头也会包含在文件里。
能在转换之前编辑请求吗?
可以 —— 请求详情面板会展示所有请求头、Cookie 和请求体字段。可以直接内联编辑;转换时用的是编辑后的值,而不是原始 HAR 里的值。这在需要脱敏 Authorization 请求头或把 host 替换成测试服务器时非常有用。
输出包含响应处理吗?
输出只是请求代码,不是完整的请求-响应处理器。对于 cURL,响应会被打印到 stdout。对于 fetch,输出只是一次调用,不带 response.json() 或错误处理 —— 这些可以在代码里按需添加。
能转换包含上千条 entry 的 HAR 吗?
可以 —— 解析器处理稍大的 HAR 文件(几 MB)毫无压力。转换本身是按 entry 进行的,所以全选再转换只是输出更长而已。对于非常大的 HAR 文件(10 MB 以上),初次解析时界面可能会短暂卡住。
限制说明
- Authorization 请求头会被暴露HAR 文件包含每一条请求头,包括 Authorization、Cookie 和 API key。从已登录的浏览器会话里保存 HAR 会把你的会话凭证一并暴露出去。把 HAR 文件当密码看待 —— 切勿公开分享,分享前先做脱敏处理。
- 不支持 WebSocket 条目HAR 规范里包含 WebSocket 帧,但浏览器的导出器基本不会真正填充这些字段。本工具专注于 HTTP/HTTPS 请求。对于 WebSocket 追踪,请使用浏览器的 WebSocket 检查器或 Wireshark 这类专业工具。
- 二进制 body 不会被还原HAR 里请求和响应的 body 在二进制时是 base64 编码的。工具会把 base64 字符串原样输出,但不会还原成原始文件。如果要下载二进制内容,请直接从浏览器保存响应,而不是去转换 HAR。
平台说明
- macOS
- Safari 的 Web 检查器可以从 Network 标签导出 HAR。浏览器版工具直接接受 Safari 导出的 HAR(格式与 Chrome 完全相同)。对于命令行场景,驱动本工具的同一个库就是 `curlconverter` 这个 npm 包。
- Windows
- Edge 的 DevTools 导出的 HAR 格式与 Chrome 一致。浏览器版工具无需任何修改就能直接接受 Edge 导出的 HAR。对于命令行场景,把 HAR 用 jq 管道传给一个 cURL 生成脚本即可。
- Linux
- Firefox 的 DevTools 可以从 Network 标签导出 HAR。浏览器版工具接受 Firefox 导出的 HAR。对于命令行场景,`har-to-curl`(配套 npm CLI)做的是同样的转换,而且不需要浏览器:`npx har-to-curl input.har > output.sh`。
- CLI
- 驱动本工具的同一个库在 npm 上以 `har-to-curl` 和 `curlconverter` 两个包发布,并提供 CLI 模式。适合嵌入到构建脚本、测试 fixture 里,或用于批量转换已保存的 HAR 文件。
- Web
- 完全在客户端运行。页面加载完成后即可离线使用。HAR 文件在内存中解析,永远不会发送到服务器。即便是包含会话凭证的 HAR 也能放心使用,不过「不要把密钥粘到浏览器里」这一通用建议依然适用。