对于资深网络玩家或具备 DevOps 运维基础的用户而言,简单在 GUI 客户端手动勾选节点往往无法满足自动化脚本、软路由与集群服务器的高可用路由要求。一元机场 (yiyuan-jic.my) 提供了完备的开放 API 订阅接口,支持通过 Clash RESTful API 实现外部控制与节点批量合并导入。
一、理解 Clash External Controller (API 接口)
Clash 内部自带一个 RESTful API 控制服务,通过在 config.yaml 中开启 external-controller: 127.0.0.1:9090 即可监听到本地 9090 端口。
常用 API 端点列表
GET /proxies:获取所有当前已导入的节点及延迟测速历史。GET /proxies/{name}/delay:即时发起特定节点的网络延迟响应测试。PUT /selectors/{group}:通过 HTTP 请求无感切换指定策略组的默认代理节点。PUT /configs:在线动态热重载订阅配置文件,无需重启 Clash 软件。
二、Python 自动化测速与节点自动切换代码
import requests
import json
CLASH_API = "http://127.0.0.1:9090"
HEADERS = {"Content-Type": "application/json"}
def switch_node(group_name, node_name):
url = f"{CLASH_API}/selectors/{group_name}"
payload = {"name": node_name}
r = requests.put(url, data=json.dumps(payload), headers=HEADERS)
if r.status_code == 204:
print(f"成功将 {group_name} 策略组节点切换为: {node_name}")
# 测试并自动切到一元机场香港 IPLC 节点
switch_node("PROXY", "香港 01 IPLC [4K/8K]")
三、使用 Subconverter 批量合并多订阅技巧
如果您拥有多个加速订阅,可以使用开放的 Subconverter 工具将其合并为单一 YAML 链接:
# Subconverter 合并订阅 URL 示例:
https://sub.x.com/sub?target=clash&url=一元机场订阅链接|备用订阅链接&rename=[一元机场]
四、Clash API 与节点批量导入 FAQ
Q1: 什么是 Clash API 接口 (External Controller)?
Clash API 接口是 Clash 内核开放的 RESTful HTTP 服务(通常运行在 `http://127.0.0.1:9090`),允许外部脚本或 UI(如 Yacd、Clash Dashboard)实时控制代理策略与节点切换。
Q2: 如何通过 API 接口批量测试一元机场节点的延迟?
可通过发起 `GET /proxies/{name}/delay?timeout=5000&url=http://www.gstatic.com/generate_204` 请求,获取指定节点的毫秒延迟数据。
Q3: 批量导入多个机场订阅时如何避免节点同名冲突?
使用 Subconverter 订阅转换器设置 `rename` 参数,或者在一元机场生成的配置中为节点名称添加前缀(如 `[一元机场]`)。