常规订阅是“节点 + 规则”打包下发,你没法只换规则不换节点。proxy-providers 把节点来源抽出来独立更新:主配置写你自己的规则,节点从一个或多个 provider 拉取——这是“多机场用户自建配置”的核心机制。
基本写法
proxy-providers:
airport-a:
type: http
url: "https://a.example.com/sub?clash=1"
path: ./providers/airport-a.yaml
interval: 3600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
airport-b:
type: http
url: "https://b.example.com/clash"
path: ./providers/airport-b.yaml
interval: 3600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
在代理组中使用 provider
proxy-groups:
- name: "节点选择"
type: select
use: # 引用 provider(注意是 use 不是 proxies)
- airport-a
- airport-b
proxies: # 也可以同时混用手写节点
- DIRECT
- name: "自动选择"
type: url-test
use: [airport-a, airport-b]
url: http://www.gstatic.com/generate_204
interval: 300
use 与 proxies 可以并存,provider 里的全部节点会自动展开进组。
要点与坑
- url 必须返回 Clash 格式(含 proxies 段的 YAML)。只支持节点列表,provider 文件里的规则会被忽略。
path各 provider 必须不同,且建议放在./providers/子目录,避免与主配置互相覆盖。health-check强烈建议开启:url-test/fallback 组依赖它的延迟数据。- provider 更新失败不影响已缓存的节点(继续用旧文件),Logs 中会有
provider ... update failed提示。 - 过滤节点:
filter: "香港|HK"可以只保留名称匹配正则的节点,用于按地区建组。
典型架构
“自建规则 + 多 provider”的完整思路:主配置里写 分流规则和按地区过滤的代理组,节点全部来自 providers。机场换订阅地址时只改一行 url,规则体系纹丝不动。
提示:CFW 的 Proxies 页面会在下方单独展示各 provider 的节点与健康状态,也可以手动触发 provider 更新。