Clash 内核自带一套 RESTful API(默认监听 127.0.0.1:9090),Clash for Windows 的图形界面本质上也是这套 API 的一个客户端。理解它之后,你可以使用第三方网页面板,甚至写脚本自动化控制 Clash。
确认 API 可用
curl http://127.0.0.1:9090/version
返回类似 {"premium":true,"version":"2023.08.17"} 即为正常。
常用端点一览
| 端点 | 作用 |
|---|---|
GET /proxies | 列出所有代理组与节点及其当前选择。 |
PUT /proxies/:name | 切换某个 select 组的选中节点。 |
GET /connections | 获取实时连接列表(Connections 页面的数据源)。 |
PATCH /configs | 运行时修改模式、端口等,如 {"mode":"Global"}。 |
GET /traffic | 实时上下行速率流(长连接)。 |
使用网页面板
常见的开源面板(如 yacd、clash-dashboard)都是纯静态页面,打开后填入 API 地址 http://127.0.0.1:9090 即可使用,功能与客户端界面大同小异,但适合远程管理另一台机器上的 Clash(把 API 地址换成那台机器的局域网 IP)。
为 API 加密钥
如果把 API 暴露给局域网(external-controller: 0.0.0.0:9090),务必设置密钥。通过 Mixin 注入:
mixin:
external-controller: 0.0.0.0:9090
secret: "a-long-random-string"
之后所有请求需携带 Authorization: Bearer a-long-random-string 头。
安全提醒:不设密钥就把 9090 端口暴露到局域网/公网,等于任何人都能改你的代理设置、看你的连接记录。仅本机使用时保持默认 127.0.0.1 监听即可。
用 API 做定时任务、自动切换节点的完整例子见外部控制 API 自动化实战。