这个项目能做什么

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 文档示例。