ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

抓包即文档:mitmproxy2swagger 如何把 API 逆向工程变成一条命令的事

抓包即文档:mitmproxy2swagger 如何把 API 逆向工程变成一条命令的事 抓包即文档mitmproxy2swagger 如何把 API 逆向工程变成一条命令的事【免费下载链接】mitmproxy2swaggerAutomagically reverse-engineer REST APIs via capturing traffic项目地址: https://gitcode.com/GitHub_Trending/mi/mitmproxy2swaggermitmproxy2swagger 是一款开源工具能把 mitmproxy 抓包文件或浏览器 HAR 文件自动转换成 OpenAPI 3.0 规范一次抓包即可逆向出 REST API 文档适合需要逆向接口、补充 API 文档的开发者与测试人员。场景接口没有文档你只能猜如果你正被这样的局面困扰接手一个没有文档的 REST API只能打开浏览器 DevTools 一条条翻请求手动记下 URL、参数、请求体和响应结构移动端 App 的接口更是连页面都没有只能靠 mitmproxy 抓包然后对着几百条流量发呆。mitmproxy2swagger 把这件事变成让 App 或网页正常跑一遍把流量存下来一条命令生成 OpenAPI 3.0 文档。整个过程通常不到 5 分钟。它到底能做什么抓包转 OpenAPI输入 mitmproxy 的.flow文件或浏览器导出的 HAR 文件直接产出符合 OpenAPI 3.0 的 YAML 规范请求参数、请求体、响应结构都会自动推断。两种抓包来源通吃App、CLI 工具这类没有 DevTools 的场景用 mitmproxy 抓Web 页面直接用浏览器 Network 面板导出 HAR工具会自动识别文件类型。路径参数自动占位符化/users/2、/users/8这类请求会被归并成/users/{id}而不是生成一堆重复接口。增量合并对同一个输出文件多次运行新捕获的接口会合并进已有文档方便分批抓包。5 分钟跑通安装与最小闭环前提是本机有 Python 3 和 pippip install mitmproxy2swagger如果你只想先看看效果可以克隆仓库用自带的测试 HAR 文件试跑gitcode.com/GitHub_Trending/mi/mitmproxy2swaggergit clone https://link.gitcode.com/i/b50dee975922941c0535ff56f98b1418 cd mitmproxy2swagger mitmproxy2swagger -i testdata/headers_and_params_har.har -o schema.yaml -p https://api.example.com跑完打开schema.yaml你会看到接口路径、query 参数和响应 schema 已经自动生成好了——这就是完整效果的最小版本。完整工作流从一次抓包到一份文档下面以 mitmweb 抓包为主线走一遍真实流程。第一步抓流量启动 mitmweb把客户端的代理指到它监听的端口默认 9999正常操作目标应用。操作完成后在 mitmweb 界面用 File 菜单把流量保存成一个.flow文件第二步跑第一轮拿到路径模板mitmproxy2swagger -i capture.flow -o schema.yaml -p https://api.example.com/v1-p是 API 基础前缀需要观察抓包里的请求自行确定如果 App 请求的是https://api.example.com/v1/login、https://api.example.com/v1/users/2前缀就是https://api.example.com/v1。这一轮不会生成完整接口而是在schema.yaml末尾写入一个x-path-templates清单所有路径默认带ignore:前缀x-path-templates: - ignore:/addresses - ignore:/basket - ignore:/basket/coupons/attach/{id}第三步删掉 ignore声明要哪些接口用文本编辑器打开schema.yaml把你想要的接口那行ignore:前缀删掉不想生成的静态资源、图片等保留即可。顺带还能手改路径里的参数名。第四步跑第二轮生成正式文档mitmproxy2swagger -i capture.flow -o schema.yaml -p https://api.example.com/v1 --examples同一个命令再跑一遍它会读取你编辑后的模板为选中的路径生成完整的参数、请求体、响应 schema。--examples会附加真实示例数据文档更直观但注意可能带入敏感信息见下一节。如果你的流量来自 Web 页面跳过 mitmproxy 也行在浏览器 DevTools 的 Network 面板勾选 Preserve log操作页面后点击导出按钮得到 HAR 文件HAR 文件直接当-i传入即可格式会被自动识别后续步骤完全一致。进阶与避坑小心--examples和--headers这两个开关会把抓到的真实数据token、密码、个人信息写进文档。文档要公开或分享给他人前确认不需要它们或者把示例删掉。数字以外的路径参数要靠正则默认只把纯数字路径段识别为参数[0-9]。如果 URL 里是 UUID 之类的标识符用--param-regex自定义例如--param-regex [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}否则它们会被当成独立路径。二次运行是合并而非覆盖已有接口描述不会被重写想重新生成某个接口先手动删掉它再跑。这也意味着你可以今天抓一批、明天抓一批最终拼出完整文档。参数解析、请求体推断支持 JSON、msgpack、表单等细节可以看主程序 mitmproxy2swagger/mitmproxy2swagger.py 和文档生成逻辑 mitmproxy2swagger/swagger_util.py。成果长什么样仓库里放了一份真实跑出来的产物example_outputs/lisek-static.html 是用某电商站点 HAR 抓包生成的 API 文档页面配套的 schema 结构可以参考 specs.yml。对照它你就能预期自己的文档最终的样子。开始动手mitmproxy2swagger 的价值一句话概括把翻抓包、抄文档的体力活变成抓一遍、跑一条命令。现在就去pip install mitmproxy2swagger挑一个你手头没文档的 API 抓一次包5 分钟后你会拿到第一份自动生成的 OpenAPI 文档。【免费下载链接】mitmproxy2swaggerAutomagically reverse-engineer REST APIs via capturing traffic项目地址: https://gitcode.com/GitHub_Trending/mi/mitmproxy2swagger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表