这个项目能做什么
mitmproxy2swagger 是一个命令行工具,可将 HTTP 流量捕获(来自 mitmproxy 的 flow 文件或浏览器 DevTools 的 HAR 导出)转换为 OpenAPI 3.0(Swagger)规范。这使得开发者只需运行应用程序并记录其网络请求,即可快速逆向工程 REST API,而无需手动检查端点和参数。
## 主要功能
- **输入格式**:接受 mitmproxy flow 文件(通过 mitmweb/mitmproxy 生成的 `.mitm` 文件)和 HAR 文件(自动检测)。
- **两遍工作流程**:第一遍生成包含所有发现路径的模板;用户编辑模板以选择要包含的端点并调整路径参数(例如,将动态 ID 替换为 `{id}` 占位符)。第二遍填充详细的请求/响应模式,结合多个捕获会话的数据,而不覆盖现有内容。
- **可扩展模式**:可以将新数据合并到现有模式文件中,允许跨捕获进行增量改进。
- **可选数据增强**:`--examples` 和 `--headers` 标志包含示例负载和头部信息(并警告可能包含敏感数据)。
- **输出格式**:生成与 OpenAPI 3.0 兼容的 YAML 文件,可用于 Redoc 等文档工具。
## 典型用法
1. 捕获 HTTP 流量(例如,使用 `mitmweb`,然后保存 flow 文件)。
2. 运行 `mitmproxy2swagger -i flow.mitm -o schema.yaml -p https://api.example.com/v1` 创建初始模板。
3. 编辑 schema.yaml:从所需路径中移除 `ignore:` 前缀。
4. 重新运行命令以生成完整的端点定义。
## 技术细节
- 使用 Python 编写,可通过 pip 安装或通过 Docker 运行。
- 可在 PyPI 和 Arch Linux 仓库中获取。
- 开发使用 uv、prek(代码检查)和 pytest 进行测试;欢迎贡献。
- 采用 MIT 许可证。
## 示例用例
给定一个向 `https://api.example.com/v1/login`、`/users/2` 和 `/users/2/profile` 发出请求的应用程序,该工具会建议 `https://api.example.com/v1` 作为前缀,然后引导用户定义路径模板,如 `/users/{id}` 和 `/users/{id}/profile`。
有关实际演示,请参阅随附的 `example_outputs/` 目录,其中包含生成的模式和渲染的 HTML 文档示例。
评论
0 评分人数达到10人后显示
登录后参与讨论。