Clash 订阅链接怎么导入:URL、Base64 与 YAML 三种格式的识别与处理

说明订阅链接在各客户端里的导入入口,教你从返回内容判断是 Clash YAML、Base64 节点列表还是通用订阅,并给出转换与更新间隔的设置建议。

先区分订阅 URL、节点列表与 Clash YAML

“订阅链接”首先是一个 URL,而不是固定的文件格式。客户端访问 URL 后,服务器才会返回实际内容。返回结果可能是完整的 Clash YAML、只包含节点的 YAML、经过 Base64 编码的通用节点列表,也可能是网页、JSON 错误信息或已失效提示。能否直接导入,取决于客户端是否能够处理最终返回的内容。

Clash 与 Clash Meta(现常用名称为 mihomo)内核的配置入口以 YAML 为基础。完整配置通常包含端口、运行模式、节点、代理组、规则和 DNS 等字段。部分图形客户端会在导入前识别通用订阅,并调用自身集成的转换功能;内核直接读取配置文件时,则通常要求输入已经是可解析的 YAML。

三种常见结果的核心差异

类型 开头或结构特征 常见处理方式
Clash YAML proxies:proxy-groups:rules: 作为远程配置导入,或保存为 YAML 文件
Base64 节点列表 连续字母、数字、+/=,正文很少换行 先解码确认协议,再转换为 Clash YAML
通用 URI 列表 ss://vmess://trojan://hysteria2:// 由支持对应协议的客户端导入,或转换为目标格式

在 Clash 客户端中导入订阅 URL

导入前先确认系统时间正确,并确保链接能通过 HTTPS 正常访问。系统时间相差数分钟,可能导致 TLS 证书校验失败;链接复制时多出空格、换行或中文标点,也会造成请求失败。URL 应从 https:// 开始,复制后不应在末尾附带句号。

Clash Verge Rev 的远程配置入口

以 Clash Verge Rev 2.3.1 的界面为例,可进入「订阅」→「新建」,将类型设为「Remote」,在 URL 输入框粘贴地址后确认。导入完成后,在配置卡片上执行启用操作。不同版本可能把新建入口显示为加号按钮,但远程配置、URL 和更新间隔三个字段的含义相同。

  1. 打开「订阅」页面,选择「新建」或加号按钮。
  2. 选择远程配置类型,粘贴完整 HTTPS 地址。
  3. 名称可填写服务用途,例如“日常规则配置”,避免使用令牌作为名称。
  4. 保存后等待下载与 YAML 解析完成,再将该配置设为当前配置。
  5. 进入「代理」页面选择代理组策略,最后在「设置」→「系统设置」中开启系统代理。

Clash for Windows 的历史界面路径

仍在维护旧环境时,Clash for Windows 0.20.39 的入口是「Profiles」→ 顶部 URL 输入框 →「Download」。下载成功后,需要点击对应配置卡片使其变为当前配置。该客户端已经停止更新,这一路径主要用于识别既有安装;新部署应优先选择仍在维护、使用 mihomo 内核的客户端。

导入后不要只检查“下载成功”

  • 检查配置卡片是否显示更新时间,而不是仅出现在历史列表中。
  • 检查「代理」页面是否出现预期的代理组,例如“节点选择”“自动选择”或“故障转移”。
  • 检查当前模式。规则配置通常应使用 Rule 模式,而不是 Global 模式。
  • 检查本地监听端口。常见混合端口是 7890,但实际值应以配置中的 mixed-port 为准。
  • 开启系统代理后,确认系统 HTTP 与 HTTPS 代理指向 127.0.0.1 和客户端实际端口。

从返回内容判断订阅格式

浏览器直接打开订阅 URL 时,可能下载文件,也可能显示一长串字符。最可靠的判断依据是 HTTP 状态、响应头和响应正文,而不是文件扩展名。服务端即使使用 .txt 路径,也可能返回标准 YAML;反过来,名为 config.yaml 的地址也可能返回登录页面。

使用 curl 查看状态与响应头

curl -L --compressed -D headers.txt \
  -o subscription.txt \
  "https://sub.example.net/profile?token=demo-token"

-L 会跟随 301、302、307 或 308 跳转,--compressed 允许 curl 解压 gzip 或 Brotli 之外其支持的压缩响应,-D 将响应头单独写入文件。检查最终状态是否为 200,再查看 Content-Type。常见 YAML 响应可能使用 text/yamlapplication/yaml 或普通的 text/plain,因此 MIME 类型只能辅助判断。

完整 Clash YAML 的结构

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

proxies:
  - name: Example-Trojan
    type: trojan
    server: edge.example.net
    port: 443
    password: sample-credential
    sni: edge.example.net

proxy-groups:
  - name: 节点选择
    type: select
    proxies:
      - Example-Trojan
      - DIRECT

rules:
  - DOMAIN-SUFFIX,example.org,节点选择
  - GEOIP,CN,DIRECT
  - MATCH,节点选择

只要缩进与字段合法,这类内容可以保存为 UTF-8 编码的 config.yaml。YAML 使用空格表达层级,不能把 Tab 当作缩进。名称含冒号、井号或前后空格时,建议使用引号包裹。配置能够解析,也不代表节点参数一定有效;协议类型、端口、TLS、SNI 和认证信息仍需与服务端一致。

只含节点的 provider YAML

另一种常见返回内容只有顶层 proxies:,没有 rules:proxy-groups:。它通常是代理提供者文件,适合被完整配置中的 proxy-providers 引用,而不一定能单独作为主配置启动。

proxy-providers:
  remote-nodes:
    type: http
    url: "https://sub.example.net/provider.yaml?token=demo-token"
    path: ./providers/remote-nodes.yaml
    interval: 21600
    health-check:
      enable: true
      interval: 600
      url: https://www.gstatic.com/generate_204

proxy-groups:
  - name: 自动选择
    type: url-test
    use:
      - remote-nodes
    url: https://www.gstatic.com/generate_204
    interval: 300

这里的 interval: 21600 表示每 21600 秒,也就是每 6 小时更新一次 provider;健康检查每 600 秒运行一次;代理组测速间隔是 300 秒。这三个间隔各自独立,不能把测速成功理解为订阅已经更新。

Base64 与通用节点订阅怎么处理

Base64 是编码方式,不是代理协议。它常用于把多行 URI 合并为一段便于传输的文本。典型正文由大小写字母、数字、加号、斜杠和结尾等号构成;URL-safe Base64 还可能使用连字符和下划线。只凭字符外观不能完全确定格式,必须解码后查看内容。

离线解码并识别 URI

在 macOS 或 Linux 中,可以先复制响应文件,再执行以下命令。GNU coreutils 常用 base64 -d,macOS 自带工具也支持 -D;若当前平台参数不同,可先运行 base64 --help 查看。

base64 -d subscription.txt > decoded.txt
head -n 8 decoded.txt

解码结果通常是一行一个节点 URI,例如 ss://trojan://vmess://。其中 VMess URI 的主体还可能再次包含 Base64 编码的 JSON。不要反复解码整份文件,应先确认第一层结果是否已经出现可读协议前缀。

为什么 Base64 订阅不能总是直接交给 Clash 内核

Clash 配置加载器读取的是 YAML 结构,而通用 Base64 列表只是若干节点 URI。图形客户端如果提供“通用订阅导入”或内置转换能力,可能自动把 URI 转成 proxies 项;直接运行 mihomo 二进制并通过 -f 指定配置时,则应先取得 Clash 或 mihomo 格式的 YAML。

  • 服务提供方同时提供“Clash”“Mihomo”或“Clash Meta”格式时,优先选择对应入口。
  • 需要转换时,优先使用服务提供方的格式转换功能或本机转换工具。
  • 转换目标要匹配内核能力。包含 VLESS、Reality、Hysteria 2 等字段时,应选择 mihomo 兼容格式。
  • 转换后检查节点数量、代理组、规则和 DNS,不能只看文件是否成功生成。

更新间隔、缓存与订阅失效处理

订阅不需要每分钟刷新。远程配置通常包含完整规则和节点列表,频繁请求会增加服务端压力,也可能触发速率限制。日常使用可设置为 6 至 24 小时更新一次;节点变化频繁时可缩短到 1 小时,但不建议把自动更新间隔设为几十秒。

常用间隔换算

更新频率 秒数 适用场景
每 1 小时 3600 节点变更较频繁的临时配置
每 6 小时 21600 常规远程 provider
每 12 小时 43200 规则与节点变化较少的配置
每 24 小时 86400 稳定的完整配置订阅

手动更新后仍显示旧节点

  1. 确认更新的是当前启用配置,而不是列表中的另一张同名配置。
  2. 查看客户端日志中的请求时间、HTTP 状态和解析错误。
  3. 关闭订阅 URL 的浏览器缓存影响,使用 curl 添加 Cache-Control: no-cache 请求头进行对照。
  4. 检查服务端是否通过 CDN 缓存旧内容,响应头中的 Age 可用于辅助判断。
  5. 如果使用 proxy-providers,同时检查 provider 文件更新时间,而不是只看主配置更新时间。
  6. 更新成功后重新选择代理组,已删除的节点可能仍被旧会话短暂占用。

HTTP 状态对应的排查方向

  • 401403:令牌无效、权限不足、来源限制或请求头要求不满足。
  • 404:路径已变更,或复制地址时丢失了部分参数。
  • 429:请求过于频繁,应延长更新间隔并等待限制解除。
  • 500502503:服务端或上游暂时异常,保留现有配置并稍后重试。
  • 200 但解析失败:响应可能是登录页、错误 JSON、Base64 文本或不兼容的 YAML。

YAML 解析失败与导入后无法联网

订阅导入报错应分成“下载阶段”“解析阶段”和“运行阶段”处理。下载阶段看 HTTP 与 TLS;解析阶段看 YAML 行号和字段类型;运行阶段则检查节点握手、DNS、路由规则和系统代理。把三类问题混在一起,容易反复更换订阅地址却没有定位到实际故障。

常见 YAML 报错

  • 缩进错误:列表项前的空格层级不一致,或混入 Tab。
  • 重复键:同一级出现两个 rules: 或两个 dns:,后者可能覆盖前者,也可能直接触发严格解析错误。
  • 冒号未引用:节点名称含“地区:线路”时,未加引号可能被识别为键值结构。
  • 字段类型错误:port 应为数字,却被写成无法转换的文本;布尔值应使用 truefalse
  • 内核不兼容:配置包含 mihomo 扩展字段,但客户端仍使用较旧的 Clash 内核。

导入正常但浏览器打不开网页

  1. 确认当前代理组已选择可用节点,而不是处于空组或已失效节点。
  2. 确认系统代理监听地址与端口一致。配置为 mixed-port: 7890 时,系统代理通常指向 127.0.0.1:7890
  3. Rule 模式下查看请求命中了哪条规则。末尾 MATCH 的策略会影响未被前序规则匹配的流量。
  4. 检查 DNS 配置。启用 fake-ip 时,应确保相关应用流量确实经过内核,避免解析路径与连接路径分离。
  5. 只在需要接管不遵循系统代理的应用时开启 TUN。开启后若完全断网,应检查 TUN 栈、路由安装权限和 DNS 劫持设置。

订阅导入的稳妥配置流程

初次设置时,优先选择服务端直接提供的 Clash 或 mihomo YAML。导入后保留一份最近可用的本地配置,远程更新失败时可以迅速回退。客户端支持配置合并时,可把个人规则、DNS 和脚本放在本地覆写层,避免每次订阅更新都覆盖手工修改。

  • 订阅 URL 只用于客户端配置,不放入公开同步仓库。
  • 完整配置与 provider 文件分开管理,明确各自的更新间隔。
  • 节点名称保持唯一,避免代理组选择到同名但参数不同的节点。
  • 规则修改后重新载入配置,并在连接日志中核对命中策略。
  • 更换内核版本后先验证配置语法,再开启系统代理或 TUN。

判断订阅格式的关键不是链接看起来像什么,而是它最终返回什么。YAML 可以直接进入配置流程;Base64 需要先解码识别;通用 URI 列表需要由兼容客户端或可信转换流程生成目标 YAML。按下载、解析、启用、接管流量四个阶段检查,绝大多数导入问题都能被准确定位。

下载 Clash 客户端