🔗 Provider · YAML · 自动更新

Clash 订阅机制深度剖析

从订阅链接到节点同步,从 Provider 配置到 YAML 结构规范,全面理解 Clash Meta 的远程配置与节点管理系统。

什么是订阅机制?

理解 Clash 如何通过订阅链接获取节点信息,以及 Provider 在其中的角色

订阅机制的核心思想是“配置与节点分离”。传统方式下,用户需要手动将每个代理节点的信息写入配置文件,一旦节点变更就需要重新编辑。订阅机制通过一个远程 URL(俗称“订阅链接”),让 Clash 内核自动拉取最新的节点列表,并动态注入到配置中。这种设计极大地降低了维护成本。

为什么 Clash 需要 Provider?Clash Meta 引入 Provider 系统,将订阅功能进一步模块化。Proxy Provider 负责从远程链接下载节点信息并格式化为标准代理列表;Rule Provider 则负责拉取规则集合。两者均支持定时更新(interval)、健康检查(health-check)和本地缓存(path),使得整个配置体系具备了自维护能力。

YAML 与远程配置的关系:Clash 的配置文件采用 YAML 格式,它是一种对人类友好的数据序列化语言。在配置文件中,你只需声明一个 proxy-provider 块,指定 url 和更新间隔,Clash 就会在启动时及按照间隔定期下载节点数据,动态合并到内存中的代理列表里。你无需再手动维护冗长的 proxies 列表。

订阅链接通常由机场或代理服务商提供,格式一般为 Base64 编码或直接为 URI 列表。Clash 支持解码这些格式并转换为内部节点结构。更重要的是,你可以同时配置多个 Provider,将不同来源的节点聚合到一个策略组中,实现多订阅源的负载均衡或故障转移。

Provider 系统详解

Proxy Provider 与 Rule Provider 的配置参数、更新机制与实战示例

📥 Proxy Provider

  • url:订阅链接地址
  • path:本地缓存文件路径
  • interval:更新间隔(秒),如 3600
  • health-check:启用节点健康检测
  • type:http(远程)/ file(本地)
  • proxy:通过指定代理更新订阅
proxy-providers: my_sub: type: http url: "https://..." path: ./subs/my_sub.yaml interval: 3600 health-check: enable: true url: http://www.gstatic.com/generate_204 interval: 300

📐 Rule Provider

  • url:规则集远程地址
  • path:本地规则文件缓存路径
  • behavior:classical / domain / ipcidr
  • interval:规则更新间隔
  • format:yaml / text
  • proxy:通过代理更新规则集
rule-providers: reject: type: http behavior: domain url: "https://cdn...reject.list" path: ./ruleset/reject.yaml interval: 86400

两种 Provider 共享相同的更新机制:启动时立即拉取,之后按 interval 定时检查。如果更新失败,Clash 会继续使用本地缓存,确保服务不中断。

YAML 配置结构深度解析

掌握 Clash Meta 配置文件的核心字段与节点协议表达方式

🔌 端口与运行模式

mixed-port:统一 HTTP/SOCKS5 代理端口,简化客户端设置。
socks-port / port:分别指定 SOCKS5 和 HTTP 代理端口。
allow-lan:是否允许局域网设备连接代理。
mode:运行模式,通常为 Rule(规则模式),也可选 Global(全局)或 Direct(直连)。

📋 proxies 节点列表与协议表达

每个节点是一个包含 type、server、port 等字段的字典。Meta 支持的协议类型丰富:

ss vmess trojan vless hysteria2 tuic http socks5

示例:一个典型的 Shadowsocks 节点

proxies:
  - name: "🇺🇸 美国节点"
    type: ss
    server: us.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "your_password"

使用 proxy-provider 后,这些节点将自动从订阅链接生成,你无需手动编写 proxies 列表。

🧭 proxy-groups 策略组

策略组定义了如何从候选节点中选择出口。proxies 字段列出静态候选节点,use 字段引用 provider 提供的动态节点。常见 type 包括 select、url-test、fallback、load-balance。一个典型的策略组配置:

proxy-groups:
  - name: "🚀 自动选择"
    type: url-test
    use:
      - my_sub
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

多订阅与 Profile 配置切换

管理多个订阅源,实现不同网络环境的配置一键切换

📂

多订阅聚合

在配置中定义多个 proxy-provider,分别指向不同机场或自建节点,统一纳入策略组管理。

🔄

Profile 切换

Clash Verge Rev 等客户端支持保存多个完整配置文件,点击即可切换不同订阅组合、规则集和 DNS 设置。

💾

本地配置备份

将远程订阅与本地静态节点混合使用,即使订阅链接失效,本地节点依然可用,保障连接可靠性。

🧩

动态选择器

利用 select 策略组手动切换订阅源,或使用 fallback 按优先级自动切换,实现订阅级别的容灾。

常见订阅问题排查

遇到订阅更新失败、Provider 不生效?这里有你需要的解答

❓ 为什么订阅更新失败?

常见原因包括:订阅链接过期或被服务商刷新;本地网络无法访问订阅服务器(尤其在国内环境);User-Agent 被屏蔽。解决方案:为 provider 添加 proxy 字段,通过代理更新订阅;或使用 cfw-bypass 等工具辅助更新。

❓ Provider 不生效,proxies 列表为空?

检查 path 路径是否正确且有写入权限;确认订阅链接返回的格式与 type 匹配(通常为 http);查看 Clash 日志是否有解析错误。如果订阅内容是 Base64 编码,Clash 会自动解码,但需确保解码后为有效的节点列表。

❓ Rule-Set 无法加载,规则不工作?

确认 behavior 设置与规则文件内容一致:domain 类规则文件每行应仅为域名;确保 rule-provider 的 format 正确(通常为 yaml 或 text);检查 url 是否返回 200 状态码,且未被重定向到登录页面。

❓ YAML 格式错误导致 Clash 启动失败?

YAML 严格依赖缩进(通常为 2 空格),禁止使用 Tab。常见错误包括:proxies 列表项未对齐、proxy-groups 中 use 引用的 provider 名称不匹配、字符串值包含特殊字符未加引号。可使用在线 YAML 校验器排查。

📥 获取你的 Clash 客户端与配置

下载支持 Meta 内核的客户端,导入订阅链接,即刻享受自动节点更新与智能分流体验。

📦 浏览客户端下载资源
Verge 客户端指南 规则分流教程 DNS 深入解析