ARTICLE DETAIL

资讯详情

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

三步把抓包变成接口文档:mitmproxy2swagger API 逆向工程实战教程

三步把抓包变成接口文档:mitmproxy2swagger API 逆向工程实战教程 三步把抓包变成接口文档mitmproxy2swagger API 逆向工程实战教程【免费下载链接】mitmproxy2swaggerAutomagically reverse-engineer REST APIs via capturing traffic项目地址: https://gitcode.com/GitHub_Trending/mi/mitmproxy2swagger拿到一个只有安装包、没有接口文档的第三方 App周五前却要把接口说明交给同事mitmproxy2swagger 做的事情很直白你照常运行 App 并保存抓包文件它负责把流量自动转成 OpenAPI 3.0 规范路径、方法、参数、请求与响应结构都能从流量里推断出来。没文档的 API逆向起来有多费劲手动逆向一个 REST 接口基本流程是打开抓包工具 → 逐条翻请求 → 认出哪些 URL 片段是参数 → 对照响应体猜字段结构 → 写进文档。接口多、参数乱的时候这套动作既慢又容易漏。mitmproxy2swagger 换了个思路让工具直接看流量。它支持两种输入源——mitmproxy 的.flow抓包文件和浏览器 DevTools 导出的.har文件输出则是可以直接喂给 Swagger UI、Redoc 这类渲染器的 YAML 规范。 安装 mitmproxy2swaggerpip 与 Docker 两条路本机有 python3 的话执行下面这条命令就能装上装完后会得到一个全局可用的mitmproxy2swagger命令pip install mitmproxy2swagger不想动本机 Python 环境可以用 Docker 镜像。先拉取仓库并构建会得到一个名为mitmproxy2swagger的本地镜像git clone https://gitcode.com/GitHub_Trending/mi/mitmproxy2swagger cd mitmproxy2swagger docker build -t mitmproxy2swagger .之后所有转换都通过容器执行挂载当前目录即可读写文件docker run -it -v $PWD:/app mitmproxy2swagger \ mitmproxy2swagger -i cap.flow -o schema.yaml -p https://api.example.com/v1 两种抓取保存方式mitmweb flow 文件与浏览器 HARApp 或任意走代理的流量用 mitmproxy 自带的 Web 界面最顺手。启动后会看到 Web 服务与代理服务的监听地址mitmweb把客户端代理指向 mitmproxy 后正常操作目标应用流量会实时列在页面里。操作完成后在顶部 File 菜单选择 Save即可把会话落盘为一个.flow文件Web 端请求则完全不需要装代理。打开浏览器 DevTools 的 Network 面板勾上 Preserve log把功能点一遍再点工具栏上的导出按钮得到一个.har文件这两种文件格式不同但转换阶段可以互换——工具会自动识别输入文件类型识别不准时还能用-f flow或-f har手动指定。从 flow 到 OpenAPI 文档转换走查整个转换分两轮执行这是使用中最容易卡住的点值得说清楚。第一轮生成路径清单。下面的命令会读入抓包文件输出一份骨架规范mitmproxy2swagger -i capture.flow -o schema.yaml \ -p https://api.example.com/v1-p是这批请求的公共前缀去抓包里找 URL 的公共部分即可。跑完后schema.yaml里会出现一段x-path-templates把观察到过的路径全部列出来并默认全部挂上ignore:前缀x-path-templates: - ignore:/users/{id} - ignore:/basket/add - ignore:/login注意排序规则靠上的行优先匹配匹配是贪婪的所以宽泛的模板要放前面。然后用编辑器打开文件把想生成文档的路径前面的ignore:删掉顺手核对一下{id}这类参数占位符是否合理。第二轮真正生成端点描述。命令不变可加--examples附上真实样例mitmproxy2swagger -i capture.flow -o schema.yaml \ -p https://api.example.com/v1 --examples这一轮会读取你编辑过的ignore:开关为选中的路径补齐方法、参数和响应结构。两个容易踩的坑--examples会把请求体、响应体里的真实数据token、个人信息等写进规范对外发布前记得清理另外已有端点的描述不会被覆盖想重新生成得先手动删掉旧内容。⚙️ mitmproxy2swagger 参数速查表参数什么时候用-i/--input指定输入支持.flow与.har自动识别-o/--output指定输出的 YAML文件已存在时是追加扩展而非覆盖-p/--api-prefixAPI 基础前缀从抓包的 URL 公共部分推断--examples附请求/响应示例⚠️ 可能带入敏感数据--headers附请求/响应头⚠️ 可能暴露认证信息默认不附--param-regex自定义路径参数识别规则默认只认[0-9]-f/--format强制按flow或har解析跳过自动识别当路径里的参数不是纯数字时--param-regex就是刚需。比如参数是 UUID默认规则认不出来可以这样指定mitmproxy2swagger -i capture.flow -o schema.yaml \ -p https://api.example.com \ --param-regex [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}进阶增量合并与源码结构多批次抓包不用重头再来。今天抓一批、明天再抓一批甚至 App 流量和浏览器 HAR 混着来只要-o指向同一份文件反复执行数据会安全合并进已有规范——这对边测边补文档的团队尤其友好。想理解实现核心逻辑都在 mitmproxy2swagger/ 目录mitmproxy2swagger.py 负责命令行与流程调度mitmproxy_capture_reader.py 解析 flow 文件har_capture_reader.py 解析 HARswagger_util.py 负责规范生成。想确认最终效果可以浏览仓库里渲染好的示例文档 example_outputs/lisek-static.html。️ 一句话总结与速查清单一句话抓包是原料ignore:是开关跑两轮命令就是一份能直接用的 OpenAPI 文档。安装pip install mitmproxy2swagger或 Docker 构建镜像抓包mitmweb 里 File → Save 得.flowDevTools 导出得.har第一轮-i 抓包文件 -o schema.yaml -p 前缀拿到x-path-templates编辑删掉想要的路径前的ignore:第二轮同命令复跑需要样例时加--examples发布前清理敏感数据【免费下载链接】mitmproxy2swaggerAutomagically reverse-engineer REST APIs via capturing traffic项目地址: https://gitcode.com/GitHub_Trending/mi/mitmproxy2swagger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表