一种用于自动转换MITMProxy的工具,可捕获OpenAPI 3.0规格。这意味着您可以通过运行应用程序并捕获流量来自动反向工程REST API。
?新的!
从浏览器DevTools导出的处理HAR的添加了支持。有关更多详细信息,请参见用法 - HAR。
首先,您需要Python3和pip3。
$ pip install mitmproxy2swagger
# ... or ...
$ pip3 install mitmproxy2swagger
# ... or ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger .然后根据以下示例克隆回购并运行mitmproxy2swagger 。
要通过检查HTTP流量来创建规范,您需要:
使用MITMProxy工具捕获流量。我个人建议使用MITMWEB,这是MITMProxy内置的Web接口。
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...重要的
要配置客户以使用MITM代理所展示的代理,请咨询MITMProxy文档以获取更多信息。
将流量保存到流文件。
在MITMWEB中,您可以使用“文件”菜单并选择“保存”:

运行Mitmproxy2swagger的第一个通行证:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >请注意,您可以使用现有的架构,在这种情况下,现有模式将使用新数据扩展。您还可以使用不同的流量捕获来运行几次,将安全合并捕获的数据。
<api_prefix>是您希望反向工程的API的基本URL。您需要通过观察Mitmproxy的请求来获得它。
例如,如果应用程序提出了类似的请求:
https://api.example.com/v1/login
https://api.example.com/v1/users/2
https://api.example.com/v1/users/2/profile可能的前缀是https://api.example.com/v1 。
运行第一个通行证应该在架构文件中创建一个部分:
x-path-templates :
# Remove the ignore: prefix to generate an endpoint with its URL
# Lines that are closer to the top take precedence, the matching is greedy
- ignore:/addresses
- ignore:/basket
- ignore:/basket/add
- ignore:/basket/checkouts
- ignore:/basket/coupons/attach/{id}
- ignore:/basket/coupons/attach/104754您应该使用文本编辑器编辑模式文件,然后从要生成的路径中删除ignore:前缀:前缀。您还可以调整路径中出现的参数。
运行Mitmproxy2swagger的第二次通过:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]第二次运行命令(使用相同的架构文件)。它将拾取编辑的行并生成端点描述。
请注意,Mitmproxy2swagger不会覆盖现有的端点描述,如果您想覆盖它们,则可以在运行第二次通过之前删除它们。
通过--examples将在请求和响应中添加示例数据。使用此选项时要谨慎,因为它可能会将敏感数据(令牌,密码,个人信息等)添加到模式中。传递--headers会将标头数据添加到请求和响应中。使用此选项时要谨慎,因为它可能会将敏感数据(令牌,密码,个人信息等)添加到模式中。
从浏览器DevTools捕获和导出流量。
在浏览器DevTools中,转到“网络”选项卡,然后单击“导出har”按钮。

继续使用MITMProxy垃圾场进行相同的方式。 mitmproxy2swagger将自动检测HAR文件并处理它。
请参阅示例。您将在那里找到一个生成的模式和带有生成文档的HTML文件(通过REDOC-CLI)。
在此处查看生成的HTML文件。
该项目使用:
安装依赖项:
poetry install运行衬里:
pre-commit run --all-files安装预加入挂钩:
pre-commit install运行测试:
poetry run pytest运行覆盖范围的测试:
poetry run pytest --cov=mitmproxy2swagger麻省理工学院