Clash订阅链接转换与节点筛选教程

2026-07-26 标签:订阅管理 阅读约 10 分钟

拿到机场订阅后,很多人直接粘贴到Clash里就用。但实际操作中,你可能会遇到订阅格式不兼容、节点太多太杂、部分地区节点不稳定等问题。这时候,订阅转换就是你的核心技能。

本教程从零开始,系统讲解Clash订阅转换的完整流程,包括工具选择、格式转换、节点筛选、自定义规则、自动化更新和多订阅管理。

什么是订阅转换

订阅转换的本质,是将一种代理协议格式翻译成另一种格式。

为什么需要转换

不同的客户端支持的配置格式不同。机场提供的原始订阅通常是以下几种格式之一:

典型场景

你的机场只提供SSR订阅,但你想用Clash Meta客户端。或者机场给了Clash配置,但里面包含了200多个节点,你只需要其中日本和美国的部分。这些场景都需要用到订阅转换。

转换的工作原理

订阅转换工具充当中间层,流程如下:

  1. 客户端向转换服务发起请求(附带原始订阅URL和目标格式参数)
  2. 转换服务下载原始订阅内容
  3. 解析节点信息(协议、服务器、端口、加密方式、密码等)
  4. 按照目标格式重新组装配置文件
  5. 返回转换后的配置给客户端

主流订阅转换工具介绍

1. subconverter(开源后端)

这是目前最流行的订阅转换后端程序,支持几乎所有主流协议格式的互转。

subconverter 核心特性
  • 支持 SS/SSR/Vmess/Trojan/Vless 等协议互转
  • 内置节点测速、过滤、重命名功能
  • 支持自定义配置文件模板(.ini/.yaml)
  • 可通过 URL 参数传递转换规则
  • 支持本地部署和公共实例

公共转换后端(可能不稳定,建议自建):

# 常用公共 subconverter 后端
https://sub.xeton.de/sub
https://api.v1.mk/sub
https://sub.dlsj.me/sub
公共后端风险

使用公共转换后端意味着你的订阅链接会经过第三方服务器。如果订阅包含敏感信息,建议自行搭建 subconverter 后端。

2. 自建 subconverter

使用Docker一键部署:

# 拉取镜像
docker pull tindy2013/subconverter:latest

# 启动容器
docker run -d --name subconverter \
  -p 25500:25500 \
  --restart=always \
  tindy2013/subconverter:latest

部署完成后,你的转换后端地址就是 http://你的服务器IP:25500/sub

3. 在线转换网站

如果不愿搭建后端,可以使用在线转换服务,它们本质上封装了subconverter API:

4. Clash Verge Rev 内置转换

Clash Verge Rev客户端内置了订阅转换功能,可以在导入订阅时自动完成格式转换,无需外部工具。

将各种格式转为Clash配置

subconverter URL参数详解

subconverter 通过URL参数控制转换行为,基本格式如下:

http://后端地址/sub?target=clash&url=原始订阅URL&config=配置文件路径

核心参数说明:

关键参数列表
  • target:目标格式。clash 表示 Clash 预处理器格式,clash 也可写为 clash&ver=4 指定版本
  • url:原始订阅链接(需URL编码)
  • config:使用的配置文件(模板),如 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini
  • include:节点名称过滤正则(只保留匹配节点)
  • exclude:节点名称排除正则(过滤匹配节点)
  • emoji:是否添加国旗emoji,true/false
  • udp:是否启用UDP转发,true/false

场景1:SSR订阅转Clash

SSR → Clash 转换示例
# 假设你的SSR订阅地址是:
https://example-airport.com/sub?token=abc123

# 转换后的Clash链接:
http://你的后端:25500/sub?target=clash&url=https%3A%2F%2Fexample-airport.com%2Fsub%3Ftoken%3Dabc123&config=https%3A%2F%2Fraw.githubusercontent.com%2FACL4SSR%2FACL4SSR%2Fmaster%2FClash%2Fconfig%2FACL4SSR_Online.ini

将转换后的链接导入Clash客户端即可。

场景2:Vmess单条链接转Clash

Vmess链接批量转换

如果你有多条 vmess:// 链接,先将它们Base64编码后作为订阅内容,然后使用subconverter转换:

# 将多条vmess链接Base64编码后,用url参数传入
# 或使用 pasteebin 等工具先托管为文本

# 方式1:直接使用base64编码后的内容
http://后端:25500/sub?target=clash&url=Base64编码后的内容

# 方式2:使用在线paste服务
# 先将链接文本上传到pastebin,获取raw URL
http://后端:25500/sub?target=clash&url=https://pastebin.com/raw/xxxxx

场景3:Trojan订阅转Clash

Trojan → Clash
# Trojan链接格式:trojan://密码@服务器:端口?sni=xxx
# 多条链接同样需要先Base64编码

http://后端:25500/sub?target=clash&url=Base64编码的trojan链接集合

注意:Trojan 需要 Clash Premium 或 Clash Meta 内核支持。

常用配置模板推荐

ACL4SSR 系列模板
  • ACL4SSR_Online.ini:在线版,包含完整的分流规则
  • ACL4SSR_Online_NoReject.ini:去广告规则版本
  • ACL4SSR_Online_Full.ini:全量规则版,包含更多分流策略
  • ACL4SSR_Online_Mini.ini:精简版,适合低性能设备

节点筛选策略

按地区筛选

通过 include 参数使用正则表达式筛选特定地区节点:

# 只保留日本节点
&include=(?i)(日本|Japan|JP|🇯🇵)

# 只保留美国节点
&include=(?i)(美国|United.?States|US|🇺🇸)

# 保留日本和美国节点
&include=(?i)(日本|Japan|JP|美国|United.?States|US)

# 排除香港节点
&exclude=(?i)(香港|Hong.?Kong|HK|🇭🇰)

按协议筛选

部分转换工具支持按协议类型过滤。在自定义配置模板中可以设置:

# 在配置文件的 [custom] 段中设置
; 只保留特定协议的节点
clash.new_name=true
clash.emoji=true

# 在规则段中,可以通过协议类型分流
# Clash Meta 支持的协议:vmess, vless, trojan, ss, ssr, tuic, hysteria2

按用途筛选

常见用途分类建议
  • 日常浏览:选择日本、韩国、新加坡等低延迟亚洲节点
  • 流媒体解锁:根据平台选择对应地区节点(Netflix→美区/日区,Disney+→美区)
  • 大文件下载:选择大流量、不限速的节点(通常为美国、德国节点)
  • 游戏加速:选择游戏服务器所在地区节点,优先低丢包率

组合筛选实战

创建一个日本+美国、排除免费节点的转换链接
http://你的后端:25500/sub?
  target=clash
  &url=你的原始订阅URL
  &include=(?i)(日本|Japan|JP|美国|US|🇯🇵|🇺🇸)
  &exclude=(?i)(免费|试用|expire|剩余)
  &emoji=true
  &udp=true
  &config=模板URL

注意:实际使用时URL参数需要URL编码,上面的换行和空格仅为展示。

自定义转换规则与节点过滤

subconverter 配置文件结构

subconverter 使用 .ini 格式的配置文件来控制转换行为。一个典型的配置文件包含以下段落:

[custom]
; 节点重命名规则
node_rename=日本-.*  🇯🇵  $0
node_rename=美国-.*  🇺🇸  $0
node_rename=香港-.*  🇭🇰  $0

; 过滤规则(正则表达式)
; 过滤掉特定关键词的节点
exclude_remarks=(??到期|剩余流量|套餐到期)

; 包含规则(只保留匹配节点,留空则保留全部)
include_remarks=

[proxy]
; 代理组设置
custom_proxy_group=🇯🇵 日本节点`select`(日本|Japan|JP)
custom_proxy_group=🇺🇸 美国节点`select`(美国|United.?States|US)
custom_proxy_group=🇭🇰 香港节点`select`(香港|Hong.?Kong|HK)
custom_proxy_group=🎬 流媒体`select`(NF|Netflix|流媒体|Media)
custom_proxy_group=🎮 游戏`select`(游戏|Game|低延迟)
custom_proxy_group=🚀 节点选择`fallback`.*`https://www.google.com/generate_204`300

节点重命名

通过正则表达式统一节点命名格式,方便管理:

; 格式:原名称正则`新名称格式
; 示例:将 "【日本】Tokyo-01" 改为 "JP-Tokyo-01"
node_rename=【日本】(.*)`JP-$1
node_rename=【美国】(.*)`US-$1
node_rename=【香港】(.*)`HK-$1
node_rename=Singapore-(\d+)`SG-$1

自定义代理组

通过配置文件自定义代理组,实现更精细的节点分组:

; 格式:组名`类型`正则`测速URL`测速间隔
; 类型:select(手动选择), url-test(自动选优), fallback(故障转移), load-balance(负载均衡)

; 自动选择延迟最低的日本节点
custom_proxy_group=🇯🇵 日本自动`url-test`(日本|Japan|JP)`https://www.google.com/generate_204`600

; 手动选择流媒体节点
custom_proxy_group=🎬 流媒体节点`select`(NF|Netflix|流媒体|Disney|HBO)

; 故障转移:主节点挂了自动切备用
custom_proxy_group=🚀 主节点`fallback`(香港01|香港02|香港03)`https://www.google.com/generate_204`300

订阅更新的自动化方案

方案1:客户端自动更新

大部分Clash客户端支持自动更新订阅:

更新间隔建议

订阅更新不宜过于频繁。机场节点通常不会频繁变动,建议设置6-24小时更新一次。过于频繁的更新可能触发机场的频率限制。

方案2:使用脚本定时拉取

在Linux服务器或NAS上使用cron定时任务:

# 创建更新脚本 update-sub.sh
#!/bin/bash
SUB_URL="http://你的后端:25500/sub?target=clash&url=原始订阅&config=模板"
OUTPUT="/path/to/config.yaml"

curl -s -o "$OUTPUT" "$SUB_URL"
echo "$(date): 订阅已更新" >> /var/log/sub-update.log

# 添加到crontab,每12小时更新一次
0 */12 * * * /path/to/update-sub.sh

方案3:使用订阅管理服务

部分第三方工具提供订阅管理服务,可以:

方案4:GitHub Actions 自动化

使用 GitHub Actions 定时转换订阅

创建一个 GitHub 仓库,设置 Actions 定时运行转换脚本,将结果推送到仓库或Gist,Clash客户端从仓库拉取更新。

# .github/workflows/update-sub.yml
name: Update Subscription
on:
  schedule:
    - cron: '0 */8 * * *'  # 每8小时执行一次
  workflow_dispatch:  # 支持手动触发

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - name: Convert subscription
        run: |
          curl -o config.yaml \
            "http://sub后端/sub?target=clash&url=你的订阅&config=模板"
      - name: Upload to Gist
        uses: actions/upload-artifact@v3
        with:
          name: config
          path: config.yaml

多订阅合并管理

为什么要合并多个订阅

很多用户拥有多个机场的订阅,各自有不同的优势节点。合并订阅可以:

方法1:subconverter 多链接合并

# 使用换行符分隔多个订阅URL(需URL编码)
# 实际使用时将多个URL用换行符连接后整体URL编码

http://后端:25500/sub?target=clash&url=订阅1的URL|订阅2的URL|订阅3的URL
合并后去重

不同订阅可能包含相同的节点。subconverter 默认会对节点进行去重处理(基于服务器地址+端口+协议的唯一性判断)。如果仍有重复,可以在配置模板中开启去重选项。

方法2:Clash 配置文件手动合并

如果需要对合并后的节点进行更精细的控制,可以手动编辑配置文件:

# 从多个订阅中提取 proxies 部分,合并到一个配置文件
proxies:
  # === 机场A 节点 ===
  - name: "A-日本-01"
    type: vmess
    server: jp.example-a.com
    port: 443
    # ...其他参数

  # === 机场B 节点 ===
  - name: "B-美国-01"
    type: trojan
    server: us.example-b.com
    port: 443
    # ...其他参数

proxy-groups:
  - name: "全部节点"
    type: select
    proxies:
      - A-日本-01
      - B-美国-01
      # ...

方法3:使用 Profile 叠加(Clash Verge Rev / Clash Meta)

Profile 叠加机制

Clash Verge Rev 和 Clash Meta 支持 Profile 叠加功能。你可以导入多个订阅配置文件,客户端会自动合并它们的 proxies、proxy-groups 和 rules 部分。

  • 主 Profile:基础配置和规则
  • 叠加 Profile:额外的节点和策略组
  • 可以单独启用/禁用每个 Profile

常见问题排查

问题1:转换后的节点无法连接

排查步骤:

  1. 检查原始订阅是否有效:在浏览器中直接打开原始订阅URL,确认返回的是节点数据而非错误页面
  2. 检查转换后端是否正常:访问后端首页,确认服务在运行
  3. 检查目标格式是否正确:确认 target=clash 没有拼写错误
  4. 检查内核版本兼容性:某些协议(如 Vless、Reality)需要 Clash Meta 内核
  5. 查看日志:Clash客户端的日志会显示连接失败的具体原因

问题2:转换后节点数量为零

可能原因:

问题3:转换后的配置没有分流规则

解决方案:

问题4:订阅更新后配置被覆盖

部分客户端在更新订阅时会覆盖手动修改的配置。

解决方案:

问题5:转换后端访问慢或不可用

建议: