Clash订阅链接转换与节点筛选教程
拿到机场订阅后,很多人直接粘贴到Clash里就用。但实际操作中,你可能会遇到订阅格式不兼容、节点太多太杂、部分地区节点不稳定等问题。这时候,订阅转换就是你的核心技能。
本教程从零开始,系统讲解Clash订阅转换的完整流程,包括工具选择、格式转换、节点筛选、自定义规则、自动化更新和多订阅管理。
什么是订阅转换
订阅转换的本质,是将一种代理协议格式翻译成另一种格式。
为什么需要转换
不同的客户端支持的配置格式不同。机场提供的原始订阅通常是以下几种格式之一:
- SS/SSR 链接:单条
ss://或ssr://链接的Base64编码集合 - Vmess/Vless 链接:单条链接的文本集合
- 通用订阅(SIP008):JSON格式,部分客户端支持
- Clash YAML:Clash原生格式,大部分机场可直接提供
- Surge/QuantumultX 配置:其他客户端专用格式
你的机场只提供SSR订阅,但你想用Clash Meta客户端。或者机场给了Clash配置,但里面包含了200多个节点,你只需要其中日本和美国的部分。这些场景都需要用到订阅转换。
转换的工作原理
订阅转换工具充当中间层,流程如下:
- 客户端向转换服务发起请求(附带原始订阅URL和目标格式参数)
- 转换服务下载原始订阅内容
- 解析节点信息(协议、服务器、端口、加密方式、密码等)
- 按照目标格式重新组装配置文件
- 返回转换后的配置给客户端
主流订阅转换工具介绍
1. 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:
- 提供可视化界面,选择源格式和目标格式
- 粘贴订阅URL,一键生成转换链接
- 部分支持节点过滤和重命名
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.iniinclude:节点名称过滤正则(只保留匹配节点)exclude:节点名称排除正则(过滤匹配节点)emoji:是否添加国旗emoji,true/falseudp:是否启用UDP转发,true/false
场景1: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:// 链接,先将它们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链接格式:trojan://密码@服务器:端口?sni=xxx
# 多条链接同样需要先Base64编码
http://后端:25500/sub?target=clash&url=Base64编码的trojan链接集合
注意:Trojan 需要 Clash Premium 或 Clash Meta 内核支持。
常用配置模板推荐
- 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客户端支持自动更新订阅:
- Clash Verge Rev:配置文件页面,设置自动更新间隔(如每6小时)
- Clash for Windows(已停更):Profiles页面勾选Auto Update
- Clash Meta for Android:配置文件中设置更新间隔
订阅更新不宜过于频繁。机场节点通常不会频繁变动,建议设置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 定时运行转换脚本,将结果推送到仓库或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)
Clash Verge Rev 和 Clash Meta 支持 Profile 叠加功能。你可以导入多个订阅配置文件,客户端会自动合并它们的 proxies、proxy-groups 和 rules 部分。
- 主 Profile:基础配置和规则
- 叠加 Profile:额外的节点和策略组
- 可以单独启用/禁用每个 Profile
常见问题排查
问题1:转换后的节点无法连接
排查步骤:
- 检查原始订阅是否有效:在浏览器中直接打开原始订阅URL,确认返回的是节点数据而非错误页面
- 检查转换后端是否正常:访问后端首页,确认服务在运行
- 检查目标格式是否正确:确认
target=clash没有拼写错误 - 检查内核版本兼容性:某些协议(如 Vless、Reality)需要 Clash Meta 内核
- 查看日志:Clash客户端的日志会显示连接失败的具体原因
问题2:转换后节点数量为零
可能原因:
include正则写错,导致没有节点匹配 → 先去掉 include 参数测试exclude正则范围过大,过滤掉了所有节点 → 检查正则表达式- 原始订阅已过期或流量用尽 → 联系机场确认
问题3:转换后的配置没有分流规则
解决方案:
- 检查
config参数指定的模板是否包含规则定义 - 尝试使用完整的在线模板(如 ACL4SSR_Online_Full.ini)
- 手动在配置文件中添加 rules 部分
问题4:订阅更新后配置被覆盖
部分客户端在更新订阅时会覆盖手动修改的配置。
解决方案:
- 使用转换服务的 URL 参数在源头完成自定义,而不是手动修改配置文件
- 使用 Profile 叠加功能:将自动更新的订阅和手动配置分离
- 将自定义的代理组和规则放在单独的叠加 Profile 中
问题5:转换后端访问慢或不可用
建议:
- 自建 subconverter 后端,使用境外VPS部署
- 多个公共后端轮换使用,避免单一依赖
- 定期检测后端可用性