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 自动化实战