Clash 是目前流行的网络分流软件,通过正确的配置规则可以实现对不同网站使用相应的节点进行访问,大大提高了日常使用的感受。目前大多数网络服务提供商也提供了相应的订阅链接,方便用户一键配置。 然而,如果使用者想要添加自动的特殊规则,或是在原有订阅的基础上新增自定义节点,服务商提供的订阅链接的作用就显得捉襟见肘了,这时通常需要手动编写 这时就轮到 subconverter 出场了,用户可以通过 subconverter 实现对订阅的高度自定义配置,并能够将其转化为多个客户端的配置文件,使订阅更新时能够继续继续保持原有规则。总的来说,其特点如下: subconverter 的安装十分简单,前往作者 Github 的 Release 界面下载好对应平台的最新版本的二进制软件即可开始使用: subconverter 官方文档使用方法介绍的十分详细,这里就不再赘述,只说明一下其支持的订阅转换类型: 如前文所言,官方文档已经完美解释了了配置文件的作用,因此本节仅体现博主进行修改过的配置内容: 编写博客时 subconverter 版本为:v0.6.4 这里通过 由于博主服务器经常瞎折腾,机器经常重装系统,因此我会尽量将配置文件剥离到外部使用,避免因机器原因造成的配置丢失。所谓外部配置即将前文 如果你是在服务器端以 API 模式运行 subconverter 的,那么默认是通过 这里介绍两种反向代理的软件: 通过任意方法安装 nginx,如 Swizzin 编辑 nginx 配置文件,这里以 Swizzin 安装的 nginx 为例 这里默认你已经通过 Swizzin 获取了 SSL 证书,接下来你即可通过 或者你也可以采取二级域名的方式配置反向代理: 本文介绍了如何通过 subconverter 合并、转换订阅并自定义相关规则,同时采用反向代理 + SSL 加密的方法确保访问的安全性。 本文并未安装网络上流行的前端页面,主要是由于该前端对于自用用户来说作用并不大,因此略过了前端的安装。 参考资料: 前言
config.yml 配置文件来实现响应的需求。然而服务商的节点时常有变动,而每变动一次都需要我们重新更改配置文件,对我们的使用造成严重的不便。
安装与使用
subconverter,
类型
作为源类型
作为目标类型
参数
Clash
✓
✓
clash
ClashR
✓
✓
clashr
Quantumult (完整配置)
✓
✓
quan
Quantumult X (完整配置)
✓
✓
quanx
Loon
✓
✓
loon
Mellow
✓
✓
mellow
SS (SIP002)
✓
✓
ss
SS (软件订阅)
✓
✓
sssub
SSD
✓
✓
ssd
SSR
✓
✓
ssr
Surfboard
✓
✓
surfboard
Surge 2
✓
✓
surge&ver=2
Surge 3
✓
✓
surge&ver=3
Surge 4
✓
✓
surge&ver=4
Trojan
✓
✓
trojan
V2Ray
✓
✓
v2ray
类 TG 代理的 HTTP/Socks 链接
✓
×
仅支持
&url= 调用
Mixed
×
✓
mixed
Auto
×
✓
auto
配置修改
common 字段修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[common]
api_mode=true
api_access_token=1234567989asdfg
default_url=https://sub.me/getsub.php?service=5568&id=5598|https://sub1.me/getsub.php?service=5568&id=5598
enable_insert=true
insert_url=vmess://sadjslakjdlsakjdlksajdlsakjdklasjdlkasndknsakcjsalkjdklasjldjalksjdlasjdlasd=
default_external_config=https://external/pref.inirulesets 字段
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
enabled=true
overwrite_original_rules=false
update_ruleset_on_request=false
ruleset=🏴☠️ 独立代理,https:rule/duli.list
ruleset=🎯 强行直连,https:rule/zhilian.list
ruleset=⚔️ 专用代理,https:rule/zhuanyong.list
ruleset=DIRECT,https:rule/zhilian.list
ruleset=🐟 漏网之鱼,[]FINAL
ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list
ruleset=Domestic Services,clash-domain:https://ruleset.dev/clash_domestic_services_domains,86400
ruleset=🎯 全球直连,rules/NobyDa/Surge/Download.list
ruleset=🎯 全球直连,[]GEOIP,CN
ruleset=!!import:snippets/rulesets.txtruleset 来实现对不同地址的规则制定,个人建议将相应的网址存储在 Github 页面上来维护,这样也方便服务的搬迁或者重装,格式如下:1
2
3
4# 匹配类型,域名
DOMAIN,apple.comscoreresearch.com
DOMAIN-SUFFIX,mzstatic.com
IP-CIDR,17.0.0.0/8,no-resolveproxy_group 字段
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
custom_proxy_group=Group_Name`url-test|fallback|load-balance`Rule_1`Rule_2`...`test_url`interval[,timeout][,tolerance]
custom_proxy_group=Group_Name`select`Rule_1`Rule_2`...
custom_proxy_group=🍎 苹果服务`url-test`(美国|US)`http://www.gstatic.com/generate_204`300,5,100
custom_proxy_group=🇯🇵 日本延迟最低`url-test`(日|JP)`http://www.gstatic.com/generate_204`300,5
custom_proxy_group=负载均衡`load-balance`.*`http://www.gstatic.com/generate_204`300,,100
custom_proxy_group=🇯🇵 JP`select`沪日`日本`[]🇯🇵 日本延迟最低
custom_proxy_group=g1`select`!!GROUPID=0`!!INSERT=0
custom_proxy_group=g2`select`!!GROUPID=1
custom_proxy_group=g2`select`!!GROUPID=!2
custom_proxy_group=g2`select`!!GROUPID=3-5
custom_proxy_group=v2ray`select`!!GROUP=V2RayProvider
custom_proxy_group=g1hk`select`!!GROUPID=0!!(HGC|HKBN|PCCW|HKT|hk|港)
custom_proxy_group=🎏 JMS`select`!!GROUPID=1`[]🎏 JMS-AUTO
custom_proxy_group=🐟 漏网之鱼`select`[]🎏 JMS`[]⚖️ 负载均衡`[]🤖 自动测试`!!GROUPID=0
custom_proxy_group=⚔️ 专用代理`select`!!GROUPID=1
custom_proxy_group=⚖️ 负载均衡`load-balance`!!GROUPID=0`http://www.gstatic.com/generate_204`300,,100
custom_proxy_group=🤖 自动测试`url-test`!!GROUPID=0`http://www.gstatic.com/generate_204`300,5
custom_proxy_group = 🎏 JMS-AUTO`url-test`!!GROUPID=1`http://www.gstatic.com/generate_204`300,5
custom_proxy_group=🎯 强行直连`select`[]DIRECT
custom_proxy_group=🏴☠️ 独立代理`select`!!INSERT=1外部配置相关
pref.ini 中规则和分组的配置信息另起一个文件写入其中,在使用时调用该配置文件,也可以设置 common 字段中的 default_external_config 实现默认调用1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[custom]
ruleset=🏴☠️ 独立代理,https:rule/duli.list
ruleset=🎯 强行直连,https:rule/zhilian.list
ruleset=⚔️ 专用代理,https:rule/zhuanyong.list
ruleset=DIRECT,https:rule/zhilian.list
ruleset=🐟 漏网之鱼,[]FINAL
custom_proxy_group=🎏 JMS`select`!!GROUPID=1`[]🎏 JMS-AUTO
custom_proxy_group=🐟 漏网之鱼`select`[]🎏 JMS`[]⚖️ 负载均衡`[]🤖 自动测试`!!GROUPID=0
custom_proxy_group=⚔️ 专用代理`select`!!GROUPID=1
custom_proxy_group=⚖️ 负载均衡`load-balance`!!GROUPID=0`http://www.gstatic.com/generate_204`300,,100
custom_proxy_group=🤖 自动测试`url-test`!!GROUPID=0`http://www.gstatic.com/generate_204`300,5
custom_proxy_group = 🎏 JMS-AUTO`url-test`!!GROUPID=1`http://www.gstatic.com/generate_204`300,5
custom_proxy_group=🎯 强行直连`select`[]DIRECT
custom_proxy_group=🏴☠️ 独立代理`select`!!INSERT=1高级应用
开机自启
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vi /etc/systemd/system/subconverter.service
[Unit]
Description=A API For Subscription Convert
After=network.target
[Service]
Type=simple
ExecStart=/root/subconverter/subconverter
WorkingDirectory=/root/subconverter
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl enable subconverter
systemctl start subconverter配置反向代理和 SSL 加密
http://158.165.45.23/sub?target=clash&token=123456 的方式进行访问的,我在基于 Swizzin 打造客制化种子盒译文中也提到过,使用该方法访问既不美观,也不安全。因此本节将介绍如何对 subconverter 启用反向代理并配置 SSL 加密。nginx 与 Caddy,nginx 功能更加强大切运行更快但是 Caddy 配置更加简单。博主建议如果你已配置了其他服务且想要整合 subconverter 则使用 nginx,如果是仅需运行 subconverter 则使用 Caddy 更加简单。
1
2
3
4
5
6
7
vi /etc/nginx/apps/subconverter.conf
location /subconverter/ {
proxy_pass http://127.0.0.1:25500;
}
https://domain.com/subconverter/sub?target=clash&token=123456 的方法获取订阅了。如果你并未获取 SSL 证书,请参考:基于 Swizzin 打造客制化种子盒
1
2
3
4
5
6
7
8
sudo apt update
sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --webroot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sudo vi /etc/nginx/sites-enabled/default
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name clash.domain.com;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:25500;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
sudo systemctl restart nginx总结
最后一次更新于2023-05-09
