# 订阅更新失败的几种原因，看报错原文就能分开

> 来源 https://jichangtuijianweb.co/kepu/dingyue-gengxin-shibai/，更新于 2026 年 9 月 20 日。机场推荐网（https://jichangtuijianweb.co/）原创内容。
> 分类 排障。

订阅更新失败先看卡在哪一步。服务器没给内容，查账户、链接和网络；给了内容却解析不出节点，多半是格式和客户端没对上。两类报错的原文长得不一样，对着看就能分开。

点一下更新，客户端做的事分两步。先把[订阅地址](https://jichangtuijianweb.co/cidian/#subscription)当成一个网址去下载，再把下回来的文字解析成节点。两步都可能出错，报出来的话也不一样。

我把 [Clash Verge Rev](https://jichangtuijianweb.co/kehuduan/clash-verge-rev/) 2.5.2 和 [v2rayN](https://jichangtuijianweb.co/kehuduan/v2rayn/) 7.24.9 处理订阅的源码读了一遍，又对照了开源面板 Xboard 生成订阅的代码。本站收录的机场各用什么面板，我没有逐家核实，下文说到服务器那头怎么处理，都以 Xboard 为例。

## 一次更新走哪条网络，两个客户端做法不同

Clash Verge Rev 的订阅卡片右键菜单里有更新和更新（代理）两项。点更新，它先直接连订阅服务器，失败了后台会自己换路重试，先借内核的代理，再借系统代理，三条路都不通才报错。换路成功的话，界面会提示使用 Clash 代理更新成功。单次请求默认等 20 秒，这个数在订阅的编辑信息里叫 HTTP 请求超时。更新失败时原来的配置原样保留，节点还能接着用。

v2rayN 不会自动换路，要自己选。订阅分组菜单里有四项，更新全部订阅和更新当前订阅各分不通过代理、通过代理两种。通过代理借的是 v2rayN 自己的 socks 端口，走不通会退回直连再试一次，每次请求最多等 15 秒。过程逐行打在主界面下方的信息栏里，顺利的话是这几行。

```
更新订阅开始
开始获取订阅内容
获取订阅内容成功
开始解析和处理订阅内容
更新订阅结束
```

停在哪一行，就是哪一步出了事。

两个客户端请求时都会在 User-Agent 里报上自己的名字和版本，Clash Verge Rev 写的是 `clash-verge/v2.5.2`，v2rayN 写的是 `v2rayN/7.24.9`。服务器靠这一行决定发哪种格式，后面好几个问题都和它有关。

## 九种报错原文，各自卡在下载还是解析

| 看到的报错 | 客户端 | 卡在哪一步 |
|---|---|---|
| `failed to fetch remote profile with status 403 Forbidden` | Clash Verge Rev | 下载，服务器拒绝了 |
| 信息栏里带 403 的英文报错，后面跟着无效的订阅内容 | v2rayN | 下载，服务器拒绝了 |
| 状态码是 404 | 两个都会有 | 下载，地址不对 |
| `failed to fetch remote profile`，后面没有状态码 | Clash Verge Rev | 下载，没连上服务器 |
| `invalid peer certificate: UnknownIssuer` | Clash Verge Rev | 下载，证书不被信任 |
| `the remote profile data is invalid yaml` | Clash Verge Rev | 解析，回来的不是 Clash 格式 |
| ``profile does not contain `proxies` or `proxy-providers` `` | Clash Verge Rev | 解析，配置里没有节点 |
| 获取订阅内容成功，紧跟着导入订阅内容失败 | v2rayN | 解析，内容认不出来 |
| 订阅配置校验失败，变更已撤销 | Clash Verge Rev | 内核校验，有节点或字段内核不认 |

404 最简单，链接复制错了，或者复制成了面板网页的地址，回用户中心用复制按钮重新拿一次。下面按剩下几类分开讲。

## 403 说明面板认出了请求，但不给节点

Xboard 返回 403 分两种情况。一种是链接里的 token 缺了或者对不上，响应正文分别写着 token is null 和 token is error，订阅被重置过的旧链接就落在这里。另一种是账户不可用，被封禁、已经到期、套餐额度为零，这时正文是空的。

所以看到 403，先登录用户中心看到期日，再确认手里的链接是不是最新的。自己或别人点过重置订阅，就重新复制一份，每台设备都要换。重置会同时换掉哪些东西，[订阅链接为什么不能外传](https://jichangtuijianweb.co/kepu/dingyue-lianjie-anquan/)里对着源码讲过。

流量用完反而不会走到 403。Xboard 判断账户能不能拿订阅时，只看封禁、到期和额度，不看已经用掉多少，所以流量见底以后订阅照样能更新成功。节点服务器那边的判断更严，只放行已用量小于额度的账户，结果就是更新一切正常、节点全部超时。碰到这种情况，按[连不上的排查顺序](https://jichangtuijianweb.co/kepu/lianbushang-paicha/)看一眼订阅卡片就明白了，流量怎么算的见[流量倍率和重置日](https://jichangtuijianweb.co/kepu/liuliang-beilv-chongzhi/)。

Clash Verge Rev 的常见问题里另有一条导入订阅报错 401，官方的办法是删掉配置目录里的所有文件再重启。这一步会清掉本地全部订阅和设置，设置页配置目录那一项的说明也要求先备份。同一条链接换个客户端能正常更新，才说明毛病在本地，这时再动手。

## 报错里没有状态码，请求没到服务器

没有状态码，意思是请求连服务器都没见着。订阅地址在当前网络下打不开就是这样。用 Clash Verge Rev 的话，它已经替你试过内核代理和系统代理，三条路都失败，说明手上也没有能用的节点。

先换网络。手机从 Wi-Fi 换到流量再更新，电脑连手机热点也行。

换了网络还不行，就找一台能打开订阅地址的设备把内容取下来，存成文件带回来导入。这里有个坑，用浏览器直接打开订阅地址，浏览器的 UA 不在 Xboard 认识的名单里，拿到的是分享链接格式。要给 Clash Verge Rev 用，得用文末那条 curl 命令带上它的 UA 去取。文件拿到以后，在订阅页点新建，类型选 Local，再选这个文件，官方文档写明 1.6.2 以后也能把文件直接拖进订阅页。v2rayN 认的是分享链接，把内容复制下来，在配置项菜单里点从剪贴板导入分享链接。这样导进来的内容不会自己更新，网络恢复以后换回订阅地址。

自己写配置、用 proxy-providers 引入节点的，mihomo 文档里给 proxy-providers 留了一个 `proxy` 字段，填上配置里已有的代理组名，更新节点时就经过这个代理去下载。

```yaml
proxy-providers:
  jichang:
    type: http
    url: "https://你的订阅地址"
    interval: 86400
    proxy: 节点选择
```

`UnknownIssuer` 这个报错单独说。它的意思是订阅服务器出示的证书，签发者不被信任。Clash Verge Rev 文档给的办法是在编辑信息里勾选允许无效证书（危险），勾上以后客户端不再核对证书，中间有人换掉内容也看不出来。我会先查两样东西。一是系统时间，证书有效期按时间判断，钟差太远会校验失败。二是杀毒软件的 HTTPS 扫描和公司网络的上网审计，它们会在中间解密再用自己的证书重新加密，签发者自然对不上。

## 内容下来了，却解析不出节点

这一步服务器已经回了 200，问题出在回来的东西和客户端要的对不上。

Xboard 决定发什么格式，先看链接里有没有 `flag` 参数，没有就看 User-Agent。UA 里带 verge、flclash、meta、clashmetaforandroid 或 nekobox 的，拿到 Clash Meta 的 YAML。带 v2rayn、v2rayng、passwall、ssrplus 或 sagernet 的，拿到分享链接。一个都不沾的，也按分享链接发。

从这张名单能推出两种失败。在 Clash Verge Rev 的编辑信息里改过 User Agent，填了个名单外的名字，回来的就是分享链接，客户端报 invalid yaml。清空那一栏，它会恢复默认的 `clash-verge/v2.5.2`。反过来，用 v2rayN 导入了带 `flag=clash` 一类参数的链接，拿到的是 YAML。v2rayN 7.24.9 不会为此报错，它把整份 Clash 配置当成一条自定义配置导进来交给 mihomo 内核跑，列表里只多出一行。想要一个个节点，回用户中心换通用订阅或标着 v2rayN 的那条。

还有一种是服务器回了一个网页。登录页、拦截页、要人点一下验证的页面都是 HTML。Clash Verge Rev 碰到它报 invalid yaml，v2rayN 7.24.9 会识别出这是网页，报导入订阅内容失败。

v2rayN 在这里有个细节。它在解析新内容之前，先把这条订阅下的旧节点删了，新内容解析不出来，列表就空了。下载失败时不会走到这一步，旧节点还在。Clash Verge Rev 在任何一步失败时都保留旧配置。所以同样是更新出错，v2rayN 用户可能会看到一个空列表，这不代表账户出了事。

有人会想用订阅转换把格式凑上。v2rayN 的订阅分组设置里有一栏订阅转换目标类型，填了它，v2rayN 会把你的订阅地址交给一个转换服务，没在设置里改过订阅转换网址的话，用的是内置列表里第一个公共服务 `sub.xeton.dev`。订阅地址就是账户凭据，交出去之前想清楚。

## 更新成功了，节点却少了一批

Xboard 会按客户端再筛一遍节点。每种输出格式有一张能装的协议清单，装不下的节点直接去掉。版本也要查，代码里写着给 v2rayN 的 Hysteria2 节点要求版本不低于 6.31，给 v2rayNG 的要求不低于 1.9.5，版本号取自 User-Agent。客户端太旧，或者 UA 里的版本号被改成了旧的，某一类节点就会整批消失。升级客户端，或者把自定义的 UA 清掉。

Clash Verge Rev 这边还有一道关。下载和解析都过了，内核还要把整份配置校验一遍，某个节点的协议或参数内核不认，就提示订阅配置校验失败，变更已撤销，后面附着错误详情。这时要升级的是客户端和它带的内核，订阅本身没问题。

## 自己请求一次，看服务器回了什么

想绕开客户端看服务器的原始回应，就自己发一次请求，User-Agent 照着客户端的写法填。Windows 里写 `curl.exe`，macOS 和 Linux 写 `curl`。

```
curl.exe -s -D - -o sub.txt -A "clash-verge/v2.5.2" "https://你的订阅地址"
```

`-D -` 把响应头打在屏幕上，`-o sub.txt` 把正文存进文件。先看第一行的状态码，200 以外的对照上面的表。再找 `subscription-userinfo` 这一行，Xboard 给 Clash 格式的回应里会带上它，upload 和 download 是已用的上传下载量，total 是总额度，expire 是到期时间的时间戳，Clash Verge Rev 订阅卡片上的流量和到期日就是从这里读的。

然后打开 sub.txt 看开头。有 `proxies:` 的是 Clash 的 YAML。一整段看不出意思的字母和数字，多半是 Base64 编码的分享链接。以 `<!DOCTYPE html` 或 `<html` 开头的是网页，要么订阅地址被拦了，要么复制成了面板的网址。把 `-A` 后面换成 `v2rayN/7.24.9` 再请求一次，就能看到同一条链接发给 v2rayN 的是什么。

sub.txt 里是全部节点和你的凭据，看完删掉。命令里带着完整的订阅地址，别截图外发。

## 常见问题

### Clash Verge Rev 更新订阅提示 invalid yaml 是什么意思

服务器回了内容，但不是 Clash 能读的 YAML。常见的是回了一串分享链接，或者回了一个网页。先看订阅的编辑信息里 User Agent 有没有被改过，改过就清空。再用 curl 带上 clash-verge 的 UA 请求一次，打开存下来的文件看开头是什么。

### v2rayN 更新订阅以后节点列表全空了

多半是内容下载下来了，却解析不出节点。v2rayN 7.24.9 在解析新内容之前会先删掉这条订阅下的旧节点，解析失败列表就空了。看信息栏，获取订阅内容成功后面跟着导入订阅内容失败，就是这种情况，回来的常常是网页。

### 为什么 v2rayN 导入订阅后只多出一条配置

它拿到的是 Clash 格式的 YAML。v2rayN 7.24.9 认不出分享链接时，会把整份 Clash 配置当成一条自定义配置导进来，交给 mihomo 内核运行。想看到一个个节点，回用户中心换通用订阅或标着 v2rayN 的那条链接。

### 订阅更新提示 403 Forbidden 怎么办

403 是服务器认出了请求但拒绝给内容。以 Xboard 面板为例，链接里的 token 不对，或者账户被封、到期、额度为零，都会返回 403。先看用户中心的到期日，再确认链接是不是重置之后的新链接，旧链接要全部换掉。

### 订阅能正常更新，节点却全部超时，是订阅坏了吗

订阅多半没坏，先看流量。Xboard 判断能不能拿订阅时不看已用流量，流量用完照样更新成功，而节点服务器只放行已用量小于额度的账户。订阅卡片上的已用流量追上了总量，就是这个原因，续流量或等重置日。

### 勾了允许无效证书以后能更新了，会有风险吗

有。勾上以后客户端不再核对订阅服务器的证书，有人在中间换掉内容也发现不了。先排查系统时间和杀毒软件的 HTTPS 扫描，这两样都会让证书校验失败。确实要勾，更新完找到原因再取消。

## 参考来源

- [Clash Verge Rev 文档，订阅导入](https://www.clashverge.dev/guide/profile.html)
- [Clash Verge Rev 文档，其他问题](https://www.clashverge.dev/faq/other.html)
- [Clash Verge Rev v2.5.2 源码，下载和校验订阅的 prfitem.rs](https://github.com/clash-verge-rev/clash-verge-rev/blob/v2.5.2/src-tauri/src/config/prfitem.rs)
- [Clash Verge Rev v2.5.2 源码，更新失败后换路重试的 profile.rs](https://github.com/clash-verge-rev/clash-verge-rev/blob/v2.5.2/src-tauri/src/feat/profile.rs)
- [v2rayN 7.24.9 源码，SubscriptionHandler.cs](https://github.com/2dust/v2rayN/blob/7.24.9/v2rayN/ServiceLib/Handler/SubscriptionHandler.cs)
- [v2rayN 7.24.9 源码，DownloadService.cs](https://github.com/2dust/v2rayN/blob/7.24.9/v2rayN/ServiceLib/Services/DownloadService.cs)
- [v2rayN 7.24.9 源码，ConfigHandler.cs 的批量导入](https://github.com/2dust/v2rayN/blob/7.24.9/v2rayN/ServiceLib/Handler/ConfigHandler.cs)
- [v2rayN Wiki，订阅格式](https://github.com/2dust/v2rayN/wiki/Description-of-Subscription)
- [Xboard 源码，订阅请求的 token 校验](https://github.com/cedar2025/Xboard/blob/master/app/Http/Middleware/Client.php)
- [Xboard 源码，ClientController.php](https://github.com/cedar2025/Xboard/blob/master/app/Http/Controllers/V1/Client/ClientController.php)
- [Xboard 源码，按客户端筛节点的 AbstractProtocol.php](https://github.com/cedar2025/Xboard/blob/master/app/Support/AbstractProtocol.php)
- [Xboard 源码，ClashMeta.php 与 General.php](https://github.com/cedar2025/Xboard/blob/master/app/Protocols/ClashMeta.php)
- [Xboard 源码，节点服务器取用户的 ServerService.php](https://github.com/cedar2025/Xboard/blob/master/app/Services/ServerService.php)
- [mihomo 文档，proxy-providers](https://wiki.metacubex.one/config/proxy-providers/)
