搜索 K
深色模式
深色模式
直接答案:
proxy-providers(代理集提供者)是 Clash 进阶配置中实现配置与订阅彻底解耦的现代化特性。传统模式下,机场更新节点必须重写整个配置;而引入 Proxy Provider 后,主配置文件仅保留精简的策略组和路由规则,节点列表则交由 Provider 从远端或本地文件动态挂载、按正则过滤、独立定时更新。这彻底解决了配置臃肿、手动更新烦琐、以及多订阅无法灵活聚合的核心痛点。
在 Clash 的配置发展史上,管理节点的方式经历了重大变革。以下为在拥有 150+ 节点的多订阅生产环境下的实测对比指标:
| 评估维度 | 传统单文件硬编码模式 (proxies: [...]) | Proxy Provider 模块化解耦模式 (proxy-providers) |
|---|---|---|
| 主配置文件体积 | 动辄 5,000 ~ 20,000 行,滚动艰难 | 通常 200 ~ 500 行,结构清晰紧凑 |
| 订阅更新影响 | 必须覆盖替换整个 YAML,自定义分流规则被冲刷 | 仅后台静默拉取节点集,核心分流规则零影响 |
| 多订阅源整合 | 需依赖第三方外部 Subconverter 拼接 URL | 内置原生支持多 HTTP/File 来源并行调度 |
| 节点动态筛选 | 手工逐行增删,容易因语法错误导致配置崩溃 | 支持 filter / exclude-filter 正则自动化筛选 |
| 客户端内存开销 | 文本解析器单次加载开销大 | 节点落盘缓存,异步增量比对热加载 |
在 YAML 根节点下声明 proxy-providers 字典。每个 Provider 由唯一的键名标识:
proxy-providers:
provider_name:
type: http # 类型:http 或 file
url: "https://..." # 远程订阅地址(仅 type: http 生效)
path: ./providers/sub1.yaml # 本地持久化缓存路径
interval: 86400 # 自动拉取更新周期(秒)
proxy: DIRECT # 拉取订阅时使用的出站代理
header: # 自定义 HTTP 请求头(可选)
User-Agent: ["ClashMeta/v1.18.0", "Clash/1.18.0"]
health-check: # 节点存活与延迟自动探测引擎
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
timeout: 5000
lazy: true
override: # 覆盖节点特定属性(Mihomo/Meta 特性)
udp: true
tfo: false
filter: "(?i)香港|日本|新加坡" # 正则白名单过滤
exclude-filter: "(?i)官网|流量|到期" # 正则黑名单过滤
exclude-type: "ss|snell" # 协议类型排除(Mihomo 特性)type: http:从远程 HTTP/HTTPS URL 获取订阅。最主流模式。file:从本地文件读取。适合本地挂载自建私有节点库或私有同步盘。path:本地持久化文件存放路径。极重要! 当外部网络断开或订阅服务器宕机时,Clash 会直接从该本地路径加载上次成功落盘的节点,保障客户端即便断网也能正常启动并提供核心服务。interval:远程刷新间隔(单位:秒)。常规订阅建议设置为 86400(24小时)或 43200(12小时)。不建议设置过短,频繁请求机场订阅端点极易触发服务商的反爬频控。health-check) enable:必须开启。策略组依靠 Provider 内部的健康检查数据来进行延迟排序。url:优先推荐 https://www.gstatic.com/generate_204 或 https://cp.cloudflare.com/generate_204。lazy:强烈建议设为 true。仅当该 Provider 内部的节点实际被上层策略组调度时才唤醒测速,降低高负载功耗。机场下发的节点列表中,往往夹杂着大量“网站公告”、“剩余流量 200G”、“到期时间:2026-12-31”等非代理信息伪节点,或者包含高倍率、低品质节点。通过 filter 和 exclude-filter 可以实现无感清洗。
exclude-filter) 无论在哪个策略组中,首先应当在 Provider 层面将垃圾节点完全剔除:
exclude-filter: "(?i)剩余|到期|官网|通知|提示|重置|群|返利|高倍|客服"除了在 Provider 定义全局过滤外,更强大的用法是在 策略组的 use 块 中做按需精细化提取:
proxy-groups:
# 提取香港所有 IPLC/IEPL 优质节点
- name: "🇭🇰 香港专线"
type: url-test
use:
- Airport-A
- Airport-B
filter: "(?i)(?=.*(港|hk|hongkong))(?=.*(专线|iepl|iplc)).*"
# 提取低倍率节点用于大文件下载
- name: "⚡ 低倍率下载"
type: load-balance
strategy: consistent-hashing
use:
- Airport-A
filter: "(?i)(0\\.[1-9]|0\\.0[1-9]|1\\.0)x"
# 剔除指定协议(如排除不支持 UDP 的旧节点)
- name: "🎮 游戏低延迟"
type: fallback
use:
- Airport-A
filter: "(?i)港|台|日"
exclude-filter: "(?i)高延迟|故障"以下是一套完整的实战模板,展示了如何聚合两家不同机场的订阅源,并自动按地区和用途进行编排:
# ========================================================
# 外部代理集定义 (Proxy Providers)
# ========================================================
proxy-providers:
Airport-A:
type: http
url: "https://sub.airport-a.example/api/v1/client/subscribe?token=token_a_xxx"
path: ./providers/airport_a.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
lazy: true
exclude-filter: "(?i)剩余|到期|官网|通知"
Airport-B:
type: http
url: "https://sub.airport-b.example/api/v1/client/subscribe?token=token_b_xxx"
path: ./providers/airport_b.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
lazy: true
exclude-filter: "(?i)剩余|到期|官网|通知"
# ========================================================
# 策略组调度池 (Proxy Groups)
# ========================================================
proxy-groups:
- name: "🚀 节点选择"
type: select
proxies:
- "♻️ 自动优选"
- "🇭🇰 香港集群"
- "🇯🇵 日本集群"
- "🇺🇸 美国集群"
- DIRECT
- name: "♻️ 自动优选"
type: url-test
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 50
use:
- Airport-A
- Airport-B
- name: "🇭🇰 香港集群"
type: url-test
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 30
use:
- Airport-A
- Airport-B
filter: "(?i)港|hk|hongkong"
- name: "🇯🇵 日本集群"
type: url-test
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 30
use:
- Airport-A
- Airport-B
filter: "(?i)日|jp|japan"
- name: "🇺🇸 美国集群"
type: url-test
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 50
use:
- Airport-A
- Airport-B
filter: "(?i)美|us|united states"
# ========================================================
# 分流规则引擎 (Rules)
# ========================================================
rules:
- GEOIP,CN,DIRECT,no-resolve
- MATCH,🚀 节点选择proxy-provider path error (目录写入权限不足) open ./providers/airport_a.yaml: no such file or directory。~/.config/clash/ 或客户端配置文件目录)下建立名为 providers 的文件夹;或者将路径直接写在当前同级目录:path: ./airport_a.yaml。403 Forbidden 订阅防盗链拦截 status code 403。User-Agent 校验,拦截了默认的 Go 原生 HTTP Client 请求头。header:
User-Agent: ["ClashforWindows/0.20.39", "ClashMeta"]filter: ".*") filter 时优先采用不区分大小写的或分支语法 (?i)香港|hk|hong kong,并在图形客户端控制台核对节点名称。A: 不会。只要配置中声明了 path 且本地缓存文件存在,内核启动时会瞬间读取本地磁盘文件完成初始化。只有当距离上次文件修改时间超过了 interval 设定值,或者在客户端界面手动点击了“更新”按钮时,内核才会发起远程 HTTP 请求。
A: 不会。Provider 级别的健康检查(health-check)是在底层独立运行的单例服务。多个上级策略组只是读取同一个节点的延迟指标缓存,不会对同一个节点并发发起多倍的心跳请求。
file 类型的 Provider? A: type: file 是高级极客玩家的最爱。可以通过外部 Python 脚本、Shell 脚本或者 GitHub Actions 定时抓取多个节点源,在本地进行延迟清洗、去重与重命名后写入本地文件,再由 Clash 直接读取本地文件,既安全又脱离了对第三方云端转换服务的依赖。