Clash 的核心是一個無介面的命令列程序,但它內建了完整的 RESTful API,允許外部程式透過 HTTP 介面即時查詢狀態、切換節點、修改配置。Dashboard(控制面板)正是基於這套 API 構建的 Web 前端,無需重啟 Clash 即可完成幾乎所有管理操作。本文從 API 配置開始,帶你搭建一套完整的視覺化管控體系。
開啟 Clash 的 External Controller
Clash 的 API 服務由 external-controller 欄位啟用。將以下配置加入 config.yaml:
# Clash 外部控制器配置 external-controller: 127.0.0.1:9090 # 仅本地访问(推荐) secret: your-api-secret # Bearer Token 认证,留空则无鉴权 external-ui: ui # Dashboard 静态文件目录(相对 Home 目录) external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip
external-controller 繫結 127.0.0.1 時 API 只能本機訪問。如果需要區域網內其他裝置訪問(如手機遠端管理路由器上的 Clash),可以改為 0.0.0.0:9090,但務必設定強 secret,防止區域網內其他裝置未授權訪問。
主流 Dashboard 對比
目前有多個開源 Dashboard 可供選擇,各有側重:
| 名稱 | 定位 | 特點 |
|---|---|---|
| Yacd | 輕量經典 | 介面簡潔,資源佔用極低,功能覆蓋基本需求,適合入門使用者 |
| Yacd-meta | Yacd 的 Mihomo 增強版 | 在 Yacd 基礎上添加了 Mihomo 特有功能(Provider 管理、連線詳情等) |
| Metacubexd | 功能全面,現代 UI | 支援全部 Mihomo API,即時流量圖、規則集更新、連線溯源均有支援,推薦使用 |
| Zashboard | 極簡風格 | 介面非常精簡,適合只需要節點切換的輕度使用者 |
安裝 Metacubexd(推薦)
Metacubexd 是功能最完整的 Dashboard,官方提供 CDN 線上版,無需安裝即可使用。
方式一:直接訪問 CDN 線上版
開啟瀏覽器訪問 https://metacubex.github.io/metacubexd/,在輸入框中填入:
- 後端地址:
http://127.0.0.1:9090 - 金鑰:你在
config.yaml中設定的secret值
方式二:本地部署(離線使用)
在 Mihomo 的 Home 目錄中建立 ui/ 資料夾,將 Metacubexd 的 gh-pages 分支檔案下載解壓到該目錄。啟動 Clash 後訪問 http://127.0.0.1:9090/ui/ 即可進入本地 Dashboard。
external-ui-url 後,Mihomo 會在首次啟動時自動下載並解壓 Dashboard 檔案到 external-ui 指定目錄,無需手動操作。後續可透過 Dashboard 的「檢查更新」按鈕升級。Dashboard 核心功能詳解
代理節點管理
Dashboard 的「代理」頁面以卡片形式展示所有策略組和節點。點選策略組中的節點即可立即切換,無需重啟 Clash。延遲數值旁的顏色指示器(綠/黃/紅)直觀顯示節點可用狀態。點選「測速」按鈕可觸發單個策略組的節點延遲測試。
即時連線監控
「連線」頁面(Connections)是排查問題的利器。每條活動連線都顯示:目標域名/IP、命中的規則(及規則來源)、使用的策略組、已傳輸位元組數和連線時長。當某個應用走了錯誤的規則(如本應直連卻走了代理),在這裡可以立刻發現並定位。
規則集與 Provider 管理
Mihomo 的 Dashboard 可以檢視所有已載入的規則集(Rule Provider),顯示最後更新時間,並支援手動觸發更新——無需重啟即可讓新的規則集內容生效。Proxy Provider 同理,可以在不重啟的情況下拉取訂閱更新後的節點列表。
# 触发名为 proxy-list 的规则集更新 curl -X PUT http://127.0.0.1:9090/providers/rules/proxy-list \ -H "Authorization: Bearer your-api-secret" # 触发节点订阅更新 curl -X PUT http://127.0.0.1:9090/providers/proxies/my-subscription \ -H "Authorization: Bearer your-api-secret"
使用 API 實現自動化管理
Clash RESTful API 的能力遠不止 Dashboard 所展示的。透過指令碼,你可以實現更高階的自動化:
# 获取所有代理节点状态 GET /proxies # 切换策略组到指定节点 PUT /proxies/{group-name} Body: {"name": "节点名称"} # 获取实时流量统计(WebSocket) GET /traffic # 获取日志流(WebSocket) GET /logs?level=info # 热重载配置文件 PUT /configs?force=false Body: {"path": "/path/to/config.yaml"}
配合 Shell 指令碼或定時任務,可以實現諸如「每天凌晨 3 點自動更新所有規則集和訂閱」「當檢測到節點延遲超過閾值時自動切換策略組」等功能,打造真正無人值守的代理管理體系。
external-controller 繫結到公網 IP(如 0.0.0.0)並且不設定 secret,任何人都可以不經授權控制你的 Clash 例項,包括切換節點、檢視所有連線記錄。務必配置 secret 並考慮防火牆規則。