运行时依赖
无特殊依赖
安装命令
点击复制官方npx clawhub@latest install clash-verge-controller
镜像加速npx clawhub@latest install clash-verge-controller --registry https://cn.longxiaskill.com镜像同步中
技能文档
Clash Verge 外部控制
必要信息
开始前需获取用户的 Clash Verge 外部监听地址与密钥,并确认已开启外部监听。核心原理 Clash Verge 内置 mihomo(Clash.Meta)内核,通过 RESTful API 实现外部控制,支持切换节点、管理规则、监控连接等。
配置文件 在 Clash 配置文件中添加:
# 外部控制 (API) 配置
external-controller: 127.0.0.1:9090
# API 访问密钥(强烈建议设置)
secret: "your-secret-key-here"
# CORS 跨域配置
external-controller-cors:
allow-origins:
- '*'
allow-private-network: true
配置说明
| 配置项 | 说明 |
|---|---|
| external-controller | API 监听地址,127.0.0.1 仅本地,0.0.0.0 允许外部 |
| secret | API 密钥,请求需带 Authorization: Bearer ${secret} |
# 无密钥
curl http://127.0.0.1:9090/{endpoint}
# 有密钥
curl -H "Authorization: Bearer ${secret}" http://127.0.0.1:9090/{endpoint}
代理操作
| 操作 | 方法 | 端点 | 说明 |
|---|---|---|---|
| 获取代理列表 | GET | /proxies | 查看所有代理与策略组 |
| 切换节点 | PUT | /proxies/{name} | {"name": "香港节点"} |
| 测试延迟 | GET | /proxies/{name}/delay?url=https://www.google.com&timeout=5000 | 返回延迟(ms) |
| 操作 | 方法 | 端点 | 说明 |
|---|---|---|---|
| 获取策略组 | GET | /group | 列出所有策略组 |
| 获取指定组 | GET | /group/{name} | 查看详情 |
| 清除自动选择 | DELETE | /group/{name} | 清除 auto 组 fixed 选择 |
| 操作 | 方法 | 端点 | 说明 |
|---|---|---|---|
| 获取配置 | GET | /configs | 查看当前配置 |
| 更新配置 | PATCH | /configs | {"mixed-port": 7890} |
| 重启内核 | POST | /restart | 重载配置 |
| 更新 GEO | POST | /configs/geo | {"path": "", "payload": ""} |
| 操作 | 方法 | 端点 | 说明 |
|---|---|---|---|
| 实时日志 | WS | /logs?level=info | WebSocket 日志 |
| 流量信息 | WS | /traffic | 实时流量(kbps) |
| 连接列表 | GET | /connections | 查看连接 |
| 关闭连接 | DELETE | /connections | 关闭所有连接 |
| DNS 查询 | GET | /dns/query?name=example.com&type=A | 查询 DNS |
代码示例 Python
import requests API = "http://127.0.0.1:9090" SECRET = "your-secret-key" headers = {"Authorization": f"Bearer {SECRET}"}
proxies = requests.get(f"{API}/proxies", headers=headers).json() requests.put(f"{API}/proxies/Proxy", headers=headers, json={"name": "香港节点-01"}) result = requests.get(f"{API}/proxies/香港节点/delay", params={"url": "https://www.google.com", "timeout": 5000}).json() print(f"延迟: {result.get('delay')}ms")
Node.js
const axios = require('axios'); const API = 'http://127.0.0.1:9090'; const SECRET = 'your-secret-key'; const headers = { Authorization:Bearer ${SECRET}};
const { data } = await axios.get(${API}/proxies, { headers }); await axios.put(${API}/proxies/Proxy, { name: '香港节点-01' }, { headers });
安全建议
- 使用密钥:生产环境务必设置 secret
- 限制监听:仅本地用 127.0.0.1,需远程再改 0.0.0.0
- 配合防火墙:开启外部访问时限制 IP
- 使用 HTTPS:敏感网络配置 TLS
官方文档 Clash Verge Rev: https://github.com/clash-verge-rev/clash-verge-rev mihomo API 文档: https://wiki.metacubex.one/api/