subconverter 订阅转换及搭配 clash 使用教程

本文最后更新于:2021年8月1日 中午

写在前面

其实subconverter我已经用了一年多了,最近考完单招考试(由于今年压力很大所以其实爹妈还是强烈要求我准备高考),同时对自己的订阅做了优化,所以就趁这个机会记录下我的使用心得。
注意:由于平时并不使用windows系统的电脑所以这里只介绍subconverter在Linux下的部署方法

前期准备

硬件部分

subconverter搭建

由于本人不使用subweb,所以这里只介绍无可视化界面的subconverter如何搭建,如果你希望使用subweb,可以移步其项目地址参照官方文档操作。

下载subconverter压缩包

首先使用ssh连接Linux服务器或在本地打开终端
从subconverter项目的Releases找到自己机器适用的压缩包(这里以subconverter_linux64.tar.gz 为例)
如果你使用的是Linux64位的操作系统那么可以完全照抄以下操作

1
2
3
4
5
mkdir /home/sub     # 创建一个文件夹
cd /home/sub # 进入#/home/sub文件夹
wget https://github.com/tindy2013/subconverter/releases/download/v0.6.4/subconverter_linux64.tar.gz # 下载压缩包
tar -xvf subconverter_linux64.tar.gz # 解压压缩包
cd subconverter #进入项目文件夹

修改配置文件

在项目文件夹下会有一个叫pref.ini文件,如果你有特殊需求的话,请按文件中的注释自行修改,我是直接使用默认的设置的。

后台运行及管理

这里使用pm2来管理和后台运行

1
2
3
4
wget -qO- https://getpm2.com/install.sh | bash     # 安装pm2
pm2 start subconverter # 启动subconverter
pm2 startup # 生成启动脚本
pm2 save # 生成启动脚本

到此,部署就全部完成了,现在你可以通过访问http://主机名:25500来使用。你也可以搭配nginx反向代理上证书使用。

subconverter使用

如果你没有别的特殊要求,到这里就可以直接使用了
这里以本地搭建并使用为例,IP/域名请自行根据实际情况进行替换

基础使用

基础使用的话我们按照官方的最基本的来就行了,具体支持哪些类型的转换可以参考官方文档的支持列表
这里我给出基础使用方式的链接格式,按实际情况照抄就行http://主机名:25500/sub?target=输出格式&url=机场订阅链接或节点链接
输出格式的话请参照官方文档支持列表中的参数填入,例如要使用clash,那么target=后面的参数就要填入clash;而如果你要使用的是ios上的Surge 4,那么就填入surge&ver=4
同时要注意,机场订阅链接需经过URLEncode转换才能使用,例如订阅链接为https://abc.xyz/efg=1那么就要通过URLEncode转换为https%3A%2F%2Fabc.xyz%2Fefg%3D1才能使用

所以,当我们使用的代理软件是clash,订阅链接为https://abc.xyz/efg=1,subconverter部署在本机(127.0.0.1),同时不需要其他自定义设置的时候订阅链接就为http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fabc.xyz%2Fefg%3D1
如果有多个机场的节点要整合在一起怎么办?很简单,用|将两个机场的链接隔开即可,例如要新增一个机场的订阅节点为https://xianyu.one/233那么链接就变成了http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fabc.xyz%2Fefg%3D1|https%3A%2F%2Fxianyu.one%2F233

进阶使用

学会了简单的使用,对于爱折腾,同时对节点有要求的朋友来说还是不够的,比如有些机场提供高倍率节点而我们希望把这些节点排除不用怎么办,在本节中会讲到。
首先我们要理解以下用于订阅转换的这个链接的结构,还是以上面提到的http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fabc.xyz%2Fefg%3D1为例,我们将其拆分为以下几个部分
http://127.0.0.1:25500/sub? target=clash & url=https%3A%2F%2Fabc.xyz%2Fefg%3D1
现在是不是一目了然?
http://127.0.0.1:25500/sub?是我们要访问的地址,而后面如target=clash(即调用值为clash的参数target)、url=https%3A%2F%2Fabc.xyz%2Fefg%3D1(即调用值为https%3A%2F%2Fabc.xyz%2Fefg%3D1的参数url),而&为各参数间使用的连接符号
理解了订阅转换链接的结构,解决上面提到的问题的思路就很明朗了。我们只需要在后面加入相应参数并使用&连接即可。

参数exclude – 节点排除

当我们想排除某一些节点时,就需要在转换链接上加入参数exclude,同样的,我们筛选使用的关键词也需要经过URLEncode转换
例如我们不想使用节点名称中带有高倍率的节点,那么我们只需要将高倍率通过URLEncode转化为%E9%AB%98%E5%80%8D%E7%8E%87再将此字符串填在参数exclude后即可
放入转换链接就变成了http://127.0.0.1:25500/sub?target=clash&exclude=%E9%AB%98%E5%80%8D%E7%8E%87&url=https%3A%2F%2Fabc.xyz%2Fefg%3D1
为了方便查看和理解,我再将此链接拆开,变成以下形式方便大家查看
http://127.0.0.1:25500/sub? target=clash & exclude=%E9%AB%98%E5%80%8D%E7%8E%87 & url=https%3A%2F%2Fabc.xyz%2Fefg%3D1
那么如果我们需要筛选多个关键词怎么办呢?其实也很简单,在关键词之间加上|隔开即可,比如要筛选掉高倍率新加坡的节点,那么就把高倍率新加坡放入URLEncode转换为%E9%AB%98%E5%80%8D%E7%8E%87%E6%96%B0%E5%8A%A0%E5%9D%A1之后,再用|隔开放到exclude参数后面就行了
其他参数可以依照官方文档中的调用说明自行添加即可

subconverter程序自定义

有些时候,我们可能想换换emoji(有够无聊)或者自定义config文件进行分流或节点分组时我们就需要对subconverter进行一些修改了

修改emoji

存放国旗emoji的文件在subconverter/snippets/emoji.txt,如果你完全参照我的部署过程,那么绝对路径为/home/sub/subconverter/snippets/emoji.txt,如果有地方需要修改那么可以直接打开这个文件进行修改。
其他比如节点分组之类的emoji会在下一节讲的config文件中出现,可以通过改config文件中的emoji修改节点分组的emoji

自定义config

如果我们对默认的节点组不满意,或是对分流效果不满意,那么我们可以通过调用其他config文件优化我们得到的配置文件,在subconverter根目录下的config文件夹里有预置的一些config文件,通过在链接中添加config参数,并指定需要使用的config文件名即可,例如使用名为ACL4SSR_Online_NoReject.ini的config文件,即将config=ACL4SSR_Online_NoReject.ini添加到转换链接中

创建并使用属于自己的config文件

下面我们先来看一个配置文件的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
;不要随意改变关键字,否则会导致出错

;设置规则标志位
surge_ruleset=DIRECT,rules/LocalAreaNetwork.list
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/Unbreak.list
surge_ruleset=🛑 全球拦截,rules/NobyDa/Surge/AdRule.list
surge_ruleset=🛑 全球拦截,rules/ConnersHua/Surge/Ruleset/Hijacking.list
surge_ruleset=📹 YouTube,rules/ConnersHua/Surge/Ruleset/Media/YouTube.list
surge_ruleset=🎥 NETFLIX,rules/ConnersHua/Surge/Ruleset/Media/Netflix.list
surge_ruleset=📺 巴哈姆特,rules/ConnersHua/Surge/Ruleset/Media/Bahamut.list
surge_ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/GlobalMedia.list
surge_ruleset=🌏 国内媒体,rules/lhie1/Surge3/Domestic.list
surge_ruleset=📲 电报吹水,rules/ConnersHua/Surge/Ruleset/Telegram.list
surge_ruleset=🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
surge_ruleset=🍎 苹果服务,rules/ConnersHua/Surge/Ruleset/Apple.list
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/China.list
surge_ruleset=DIRECT,rules/NobyDa/Surge/Download.list
surge_ruleset=DIRECT,[]GEOIP,CN
surge_ruleset=🐟 漏网之鱼,[]FINAL
;设置规则标志位

;设置分组标志位
custom_proxy_group=🔰 节点选择`select`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=📲 电报吹水`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(狮城|新)
custom_proxy_group=📹 YouTube`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🎥 NETFLIX`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(NF|解锁)
custom_proxy_group=📺 巴哈姆特`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(台)
custom_proxy_group=🌍 国外媒体`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低
custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`🔰 节点选择`select`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=✈ 手动选择`select`.*
custom_proxy_group=✈ 延迟最低`url-test`.*`http://www.gstatic.com/generate_204`500
custom_proxy_group=✈ 故障切换`fallback`.*`http://www.gstatic.com/generate_204`500
;设置分组标志位

很明显,它分为两个大的版块:surge_ruleset=(规则集)、custom_proxy_group=(节点组)

surge_ruleset=

这一部分指=后指定的是我们所要分类的规则集,以surge_ruleset=🎥 NETFLIX,rules/ConnersHua/Surge/Ruleset/Media/Netflix.list为例

🎥 NETFLIX为规则集的名称
rules/ConnersHua/Surge/Ruleset/Media/Netflix.list为规则集所在的文件,本地的规则集存在于subconverter根目录下的rules文件夹中,如果你有自己的规则集文件,那么可以放在此文件夹下并以rules/xxx.list的形式填入config文件中。除了使用本地的规则集外,还能使用互联网上的在线规则集

这两个就是规则及相关的项目,需要的朋友可以自行查阅并引用

custom_proxy_group=

这个是用来分节点组使用的,比如我想把节点中的台湾地区节点单独分成一组使用,那么就可以这样写

1
custom_proxy_group=🇹🇼 台湾地区`url-test`(台|新)`http://www.gstatic.com/generate_204`500

同样为方便,我将其拆开
custom_proxy_group= 🇹🇼 台湾地区 url-test (台|新) http://www.gstatic.com/generate_204 500
由于`和markdown的代码块语法冲突所以打不出来,请自行脑补

  • 🇹🇼 台湾地区 是节点组名
  • url-test是节点选择的方式即选择延迟最低的节点,其他还有例如fallback(故障切换)、select(手动选择)等方式
  • (台|新)当中用|隔开的即为要筛选的关键词

fallbackurl-test要搭配

1
`http://www.gstatic.com/generate_204`500 

使用(后面这段用于检测节点延迟)

我的解决方案

下面分享我使用的节点方案,如果不想折腾可以使用我提供的文件内容,新建一个ini文件放入config文件夹中调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
;不要随意改变关键字,否则会导致出错

;设置规则标志位
surge_ruleset=DIRECT,rules/LocalAreaNetwork.list
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/Unbreak.list
surge_ruleset=🛑 全球拦截,rules/ACL4SSR/Clash/BanAD.list
surge_ruleset=Google,rules/ACL4SSR/Clash/Ruleset/Google.list
surge_ruleset=Google,rules/ACL4SSR/Clash/Ruleset/GoogleFCM.list
surge_ruleset=Google,rules/ACL4SSR/Clash/Ruleset/YouTubeMusic.list
surge_ruleset=Google,rules/ACL4SSR/Clash/Ruleset/YouTube.list
surge_ruleset=📺 巴哈姆特,rules/ACL4SSR/Clash/Ruleset/Bahamut.list
surge_ruleset=🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
surge_ruleset=🍎 苹果服务,rules/ACL4SSR/Clash/Ruleset/Apple.list
surge_ruleset=⚙️ 开发者,rules/ACL4SSR/Clash/Ruleset/Developer.list
surge_ruleset=⚙️ 开发者,rules/ACL4SSR/Clash/Ruleset/Github.list
surge_ruleset=Netflix,rules/ACL4SSR/Clash/Ruleset/Netflix.list
surge_ruleset=🔞 R18,rules/ACL4SSR/Clash/Ruleset/Porn.list
surge_ruleset=🖼️ Pixiv,rules/ACL4SSR/Clash/Ruleset/Pixiv.list
surge_ruleset=Disney+,rules/ACL4SSR/Clash/Ruleset/DisneyPlus.list
surge_ruleset=✈️ Telegram,rules/ACL4SSR/Clash/Ruleset/Telegram.list
surge_ruleset=🪟 巨硬服务,rules/ACL4SSR/Clash/OneDrive.list
surge_ruleset=🪟 巨硬服务,rules/ACL4SSR/Clash/Microsoft.list
surge_ruleset=🕹︎ Nintendo,rules/ACL4SSR/Clash/Ruleset/Nintendo.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/LocalAreaNetwork.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/GoogleCN.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/lancidr.txt
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/ChinaDomain.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/ChinaCompanyIp.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/Ruleset/CN.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/Ruleset/Download.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/ChinaIp.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/ChinaMedia.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/Ruleset/ChinaNet.list
surge_ruleset=🌏 全球直连,rules/ACL4SSR/Clash/Ruleset/CCTV.list
surge_ruleset=🌏 全球直连,[]GEOIP,CN
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/China.list
surge_ruleset=DIRECT,rules/NobyDa/Surge/Download.list
surge_ruleset=DIRECT,[]GEOIP,CN
surge_ruleset=🐟 漏网之鱼,[]FINAL
;设置规则标志位

;设置分组标志位
custom_proxy_group=🔰 节点选择`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]流媒体`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=✈ 手动选择`select`.*
custom_proxy_group=Netflix`select`[]🇹🇼🇸🇬 中文地区`[]流媒体`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼 台湾地区`[]🇸🇬 新加坡`[]🇯🇵 日本国`[]🇬🇧 英国`[]DIRECT
custom_proxy_group=Disney+`select`[]🇬🇧 英国`[]🇸🇬 新加坡`[]🇹🇼🇸🇬 中文地区`[]流媒体`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=Google`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=⚙️ 开发者`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=🕹︎ Nintendo`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=🖼️ Pixiv`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=✈️ Telegram`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=📺 巴哈姆特`select`[]🇹🇼 台湾地区`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(台)
custom_proxy_group=🍎 苹果服务`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=🪟 巨硬服务`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=🔞 R18`select`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 手动选择`[]🌏 亚洲及大洋洲`[]🌍 欧洲及中东地区`[]🇺🇸🇨🇦 北美通用`[]🇹🇼🇸🇬 中文地区`[]🇹🇼 台湾地区`[]🇯🇵 日本国`[]DIRECT
custom_proxy_group=🌏 全球直连`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=✈ 延迟最低`url-test`.*`http://www.gstatic.com/generate_204`500
custom_proxy_group=✈ 故障切换`fallback`.*`http://www.gstatic.com/generate_204`500
custom_proxy_group=🌏 亚洲及大洋洲`url-test`(台|新|日|韩|马来|印度|澳大利亚|新西兰)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🌍 欧洲及中东地区`url-test`(英|法|德|阿姆斯特丹|荷兰|土耳其|比利时|瑞士)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇺🇸🇨🇦 北美通用`url-test`(美|加拿)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇹🇼🇸🇬 中文地区`url-test`(台|新)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇹🇼 台湾地区`url-test`(台)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇯🇵 日本国`url-test`(日)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇸🇬 新加坡`url-test`(新加坡|R新|s新)`http://www.gstatic.com/generate_204`500
custom_proxy_group=🇬🇧 英国`url-test`(英国)`http://www.gstatic.com/generate_204`500
custom_proxy_group=流媒体`url-test`(R台|s台|R新|s新|流|流媒体)`http://www.gstatic.com/generate_204`500

;设置分组标志位
enable_rule_generator=true

overwrite_original_rules=true

参考文章


本博客所有文章包含标签(tag) # 随笔 的文章禁止转载!
除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!