crab

crab

The 'crabs in a barrel' mentality only exists if we view ourselves as a crab. The truth is on the map.

極簡介面錄製工具-選擇需要的API保存到資料庫

簡約介面錄製工具#

在一天的時間內完成了一個簡約介面錄製工具,主要功能包括:

  1. 將 API 請求錄製到數據庫中,可以是 sqlite/postgresql。
  2. 在手動錄製 API 時,可以手動設置瀏覽器代理,使用命令行或 UI 方式一鍵完成。

錄製的 API 請求的主要目的是為了方便生成 API 測試代碼,測試和開發都可以使用。選擇需要的 API 保存到數據庫,方便後續繼續使用。

這個工具的好處就是成本很低,只需要一天的時間實現最需要的功能。

命令行工具 Commandline Features#

  • 啟動 mitmproxy 和自製插件錄製 API 請求
poetry run qacli capture start --name="scenario_name"

start

  • 可以在 configs/settings.toml 中配置要錄製的網站請求
mitm = { recorded_url = "https://www.baidu.com,https://www.bing.com" }

上面的例子表示所有 baidu 和 bing 地址的請求都會被抓取保存到數據庫。

  • 數據庫表結構:
class ApiMonitorRecord(SQLModel, table=True):
    __tablename__ = "api_monitor_record"

    id: Optional[int] = Field(default=None, primary_key=True)
    app: Optional[str] = None
    service: Optional[str] = None
    api: Optional[str] = None
    path: Optional[str] = None
    request_url: Optional[str] = None
    method: Optional[str] = None
    request_headers: Optional[str] = None
    request_body: Optional[str] = None
    response_headers: Optional[str] = None
    status_code: int
    response_body: Optional[str] = None
    scenario_name: Optional[str] = None

  • 開啟 / 關閉 MAC 代理:不需要再進行瀏覽器操作,一切在命令行中完成
poetry run qacli mac-proxy --help
                                                                                                                                                         
 Usage: qacli mac-proxy [OPTIONS] COMMAND [ARGS]...                                                                                                      
                                                                                                                                                         
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 --help          Show this message and exit.
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 off                  disable api capture proxy
 on                   enable api capture proxy 

UI 界面功能 UI Feature#

運行 UI:

poetry run qaui

qaui

UI 功能操作:

  • 輸入錄取的場景名稱:可以是任何名字
  • 操作相關頁面,API 接口都會被錄製
  • 查詢數據庫,所有該場景名稱的 API 請求都會被記錄
select * from api_monitor_record where scenario_name=<your_record_name>
  • 可以將保存的數據批量轉換為所需的自動化測試或數據準備工具

這個工具非常簡單,代碼量很少,有記錄並結合其他工具基本上能夠滿足快速構建日常接口訪問代碼生成和數據準備功能。

使用到的 Python 相關工具#

主要包括:

  1. typer:命令行構建工具
  2. gradio:UI 構建工具
  3. 數據庫操作:原先自己就有的基於 sqlmodel 的訪問工具
  4. poetry:Python 項目管理,打包 / 依賴管理
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。