一種用於自動轉換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麻省理工學院