本文详解Clash RESTful API的启用方法与核心接口调用,涵盖代理组切换、流量统计、规则管理等实战场景,帮助用户实现国际网络加速工具的自动化配置与远程管理。
启用RESTful API服务
Clash RESTful API使用教程的第一步是修改配置文件,在config.yaml顶部添加:
external-controller: 127.0.0.1:9090 secret: "your-password"
external-controller指定监听地址与端口,secret设置访问密钥,建议绑定127.0.0.1避免公网暴露,如需远程管理请配合Nginx反向代理添加HTTPS,Windows用户推荐使用Clash Verge Rev客户端,在设置界面可直接开启API端口而无需手动编辑YAML。
核心接口调用方法
获取代理组状态
通过GET请求http://127.0.0.1:9090/proxies可获取所有代理组信息,返回JSON包含延迟数据与当前选中节点,适合开发状态监控面板,Mac用户配合ClashX Pro使用时,可通过AppleScript调用该接口实现菜单栏快捷切换。
切换代理节点
发送PUT请求至/proxies/{group-name}实现自动切换:
curl -X PUT http://127.0.0.1:9090/proxies/自动选择 \
-H "Authorization: Bearer your-password" \
-d '{"name": "香港节点01"}'
代理组类型区别:
- select:手动选择,适合固定跨境办公需求
- url-test:自动测速选优,基于延迟自动切换,适合多节点负载均衡
- fallback:故障转移,主节点失效时自动降级,保障学术资源访问连续性
流量统计接口
GET /traffic返回实时上传下载速率(字节/秒),GET /connections展示当前活跃连接详情,数据可用于编写流量告警脚本,监控异常连接。
TUN模式与系统代理差异
通过API PATCH /configs可切换运行模式:
- 系统代理:仅接管HTTP/HTTPS流量,浏览器和应用需手动配置代理端口,适合常规网页浏览
- TUN模式:创建虚拟网卡接管所有流量(含UDP、ICMP),游戏加速与视频会议场景必需,但需管理员权限
Android设备使用FlClash时,TUN模式需开启VPN服务权限;iOS用户通过Shadowrocket等客户端可实现类似功能。
分流规则配置要点
RESTful API支持动态修改规则,但建议预先在YAML中定义规则集:
rules: - DOMAIN,github.com,自动选择 - DOMAIN-SUFFIX,google.com,美国节点 - IP-CIDR,142.250.0.0/16,美国节点,no-resolve - GEOIP,CN,DIRECT
优先级逻辑:自上而下匹配,命中即停止。DOMAIN精确匹配单域名,DOMAIN-SUFFIX匹配后缀(含子域),IP-CIDR处理IP段,GEOIP基于地理数据库分流。no-resolve参数表示不匹配DNS解析后的IP,提升匹配效率。
常见问题排查
现象:API返回401 Unauthorized
原因:请求头未携带Authorization或secret错误
解决:检查请求头格式为Authorization: Bearer {secret},注意Bearer后空格
现象:切换节点后流量仍走旧线路
原因:连接保持导致未立即生效
解决:先DELETE /connections断开现有连接,或等待TCP长连接自然超时
现象:TUN模式启动失败
原因:Windows未安装WinTun驱动或Mac未授权网络扩展
解决:Windows需以管理员身份运行首次安装,Mac在系统设置-网络中允许Clash扩展
自动化场景应用
结合Python脚本可实现定时任务:
import requests
# 凌晨自动切换低延迟节点
requests.put('http://127.0.0.1:9090/proxies/自动选择',
headers={'Authorization': 'Bearer your-password'},
json={'name': '新加坡专线'})
对于需要稳定国际网络加速的用户,建议选择支持Clash订阅格式的服务商,通过API动态更新订阅链接实现节点自动刷新,优质订阅源通常提供YAML格式配置,包含完整的规则集与代理组定义,避免手动维护节点列表的繁琐操作,配置完成后,可通过RESTful API实现跨境办公环境的无人值守自动优化。