代理订阅是代理服务商提供的一个私密 URL,返回你的服务器列表。 代理 App 下载它,一次性导入所有服务器,之后还会定期重新下载,新增或变更的服务器会自动出现。Clash 订阅链接也是同样的思路,只不过这个 URL 返回的是一份完整的 Clash 配置,除了服务器,还有代理组和规则。

本文介绍订阅里包含什么、三种常见格式、App 如何获取和更新订阅,以及如何保护好你的订阅链接。

代理订阅是什么?

单台服务器可以用一条分享链接来分享,例如 ss://… 或 vless://…。对于你自己搭建的一台服务器,这样就够了。但服务商通常会给你很多位于不同地区的服务器,而且时不时会更换地址、端口和密钥。每次都给你发新链接,显然行不通。

所以他们会给你一个 URL,例如:

https://sub.example.com/api/v1/client/subscribe?token=abc123

这个 URL 背后是一份列出你的服务器的文档。其中的 token 部分用来识别你的账号,所以同一个 URL 只会返回你自己的服务器,不会返回别人的。你只需把它粘贴到 App 里一次,App 就会保持同步。

分享链接 订阅 URL
包含 一台服务器 服务器列表,常常还有代理组和规则
形式 ss://、vless://、trojan:// 等 https://…
是否变化 从不:新服务器意味着新链接 服务商会更新返回的内容
在 App 中更新 否 是,按计划或在你手动更新时

常见的订阅格式

订阅没有统一的标准。以下三种格式覆盖了大多数服务商。

Base64 订阅(V2Ray、Xray、Shadowsocks)

最早也最简单的格式,是一份每行一条分享链接的纯文本列表,并经过 Base64 编码。解码后是这样的:

ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Tokyo
vless://3971e1b2-18a3-4f83-8fa6-bf9b142ee258@vless.example.com:443?security=tls&sni=vless.example.com#Singapore
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Frankfurt

任何 App 都能轻松读取,但它只列出服务器,没有代理组也没有规则,流量怎么路由由 App 自己决定。

Clash 与 Mihomo YAML

Clash 订阅返回的是一份 YAML 配置。Mihomo 是当前大多数 Clash 类 App 背后的内核,它读取同样的格式,并支持更多协议。下面是一个精简的示例:

proxies:
  - name: Tokyo
    type: ss
    server: ss.example.com
    port: 8388
    cipher: aes-256-gcm
    password: secret
proxy-groups:
  - name: Auto
    type: url-test
    proxies: [Tokyo]
    url: https://www.gstatic.com/generate_204
    interval: 300
rules:
  - DOMAIN-SUFFIX,example.org,DIRECT
  - MATCH,Auto

除了 proxies,Clash 配置还可以包含 proxy-groups(手动选择、自动选最快或故障转移)、决定哪些流量走代理的 rules、从其他 URL 拉取更多列表的 rule-providers 和 proxy-providers,以及 dns 设置。这就是为什么服务商提供 Clash 订阅时大家更愿意用它:你拿到的是一套现成的分流方案,而不只是服务器。

Surge 配置

Surge 使用 INI 风格的文本文件,包含 [Proxy]、[Proxy Group] 和 [Rule] 等段落。很多服务商也提供这种格式。Surge 以外的 App 可以读取通用部分,但脚本、URL 重写等 Surge 独有的段落,在其他 App 中没有对应功能。

App 如何获取订阅

App 下载订阅时,发送的是一个普通的 HTTPS 请求。其中有两个细节值得注意。

User-Agent 决定返回格式

很多服务商面板会根据请求的 App 返回不同格式,并通过 User-Agent 请求头来区分 App。自称 Clash 客户端的请求会拿到 YAML,其他请求则可能拿到 Base64 列表。有些面板还允许你在 URL 中加一段参数来指定格式,请查看服务商的说明。

Potatso 下载订阅时会把自己标识为 clash.meta。因此,按 App 选择格式的面板也会把带有代理组和规则的 Clash / Mihomo 配置发给 Potatso。

响应头里带着流量信息

很多面板会在响应中加上一个 subscription-userinfo 头:

subscription-userinfo: upload=1234; download=5678; total=107374182400; expire=1798761600

upload 和 download 是你已使用的字节数,total 是套餐的总流量,expire 是套餐到期时间的 Unix 时间戳。能读取这个头的 App 可以直接显示已用流量和到期日期,无需登录服务商网站。带有文件名的 Content-Disposition 头通常会成为配置的名称。

Potatso 中的订阅配置,显示已用流量、到期时间、上次和下次更新时间,以及“立即更新”

自动更新

订阅只有保持最新才有用。App 会按计划重新下载订阅(通常是每天一次),用新的服务器列表替换旧的。大多数 App 也允许你在某台服务器失效时手动更新。

好的 App 还会保留你自己做的修改。如果你重命名了某个代理组或添加了一条规则,你肯定不希望下次更新把它撤销。以 Potatso 为例,它会把你的修改记录为覆写,并在每次更新后重新应用,而不会改动原始订阅。

保护好你的订阅 URL

订阅 URL 实际上就是一个密码:

  • 拿到它的人就能使用你的账号。 他们可以导入你的服务器,耗光你的流量。
  • 不要公开发布。 包括截图、二维码、问题反馈和群聊。
  • 优先使用 HTTPS。 通过明文 http:// 获取的订阅可能在传输途中被读取和篡改。配置通过明文 HTTP 获取时,Potatso 会显示提示。
  • 泄露后立即重置。 大多数服务商控制面板都有重置订阅链接的按钮。重置后导入新的 URL。
  • 小心在线转换工具。 把 URL 粘贴到第三方转换网站,就等于把你的服务器交给了那个网站。

订阅与协议

订阅只是一个容器。其中的服务器使用 Shadowsocks、VLESS、Trojan、Hysteria 2 或 AnyTLS 等协议,App 必须支持相应协议才能使用这些服务器。App 通常会跳过无法使用的服务器,并告诉你原因。这些协议有何不同,见代理协议对比;最常见的协议见 Shadowsocks 是什么?

在 iPhone 上使用订阅

Potatso 是一款免费的 iPhone 和 iPad 代理客户端,可以导入 Clash / Mihomo YAML、Base64 订阅、V2Ray / Xray JSON、Surge 配置和 Shadowsocks SIP008。它会在导入前显示预览,显示已用流量和到期时间,默认每天更新。

按照分步教程操作:iPhone 如何导入 Clash 订阅,或在导入订阅和配置中查看完整的格式列表。

常见问题

Clash 订阅链接是什么?
它是代理服务商提供的一个 URL,返回一份 Clash 或 Mihomo 的 YAML 配置。文件中列出了你的服务器,通常还有代理组和规则,App 会定期重新下载它以保持最新。
订阅 URL 和分享链接是一回事吗?
不是。ss:// 或 vless:// 这样的分享链接描述的是一台服务器,而且永远不变。订阅 URL 指向服务商服务器上的一份列表,服务商可以增加、删除或修改其中的服务器,App 重新获取后就能拿到这些变化。
为什么我的订阅在浏览器里打开是一堆乱码?
很多 V2Ray 和 Shadowsocks 订阅是经过 Base64 编码的分享链接列表,代理 App 会负责解码。有些服务商还会根据请求的 App 返回不同格式,所以浏览器看到的可能和 App 拿到的不一样。
订阅 URL 被别人拿到会怎样?
对方可以导入你的服务器、消耗你的流量,因为 URL 中通常带有一个作用相当于密码的令牌。如果泄露了,请在服务商的控制面板中重置订阅链接,然后导入新的链接。

其他语言版本: English · 繁體中文 · 日本語 · Русский