Install
openclaw skills install clash-verge-controllerClash Verge 外部控制(RESTful API)技能。基于 mihomo 内核,提供完整的 API 调用指南、配置说明和代码示例。 当用户提到以下场景时触发: - Clash Verge 外部控制、RESTful API、远程管理 - 通过 API 切换节点、查看连接、管理规则 - clash-verg...
openclaw skills install clash-verge-controller##必要信息 开始前需要获取用户的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 记录 |
详细 API 文档(包含所有端点、参数、返回值)见: references/api_reference.md
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")
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 }
);
secret127.0.0.1,需要远程访问再改 0.0.0.0