利用subconverter实现订阅合并与转换
前言
Clash是目前流行的网络分流软件,通过正确的配置规则可以实现对不同网站使用相应的节点进行访问,大大提高了日常使用的感受。目前大多数网络服务提供商也提供了相应的订阅链接,方便用户一键配置。
然而,如果使用者想要添加自动的特殊规则,或是在原有订阅的基础上新增自定义节点,服务商提供的订阅链接的作用就显得捉襟见肘了,这时通常需要手动编写config.yml
配置文件来实现响应的需求。然而服务商的节点时常有变动,而每变动一次都需要我们重新更改配置文件,对我们的使用造成严重的不便。
这时就轮到subconverter出场了,用户可以通过subconverter实现对订阅的高度自定义配置,并能够将其转化为多个客户端的配置文件,使订阅更新时能够继续继续保持原有规则。总的来说,其特点如下:
- 订阅格式转化:能够将订阅转为多个客户端的配置文件
- API模式:能够通过API模式搭建服务端
- 订阅合并:可以合并多个订阅,亦可增加单独节点
- 自定义规则:通过编辑配置文件,实现自定义分组与规则,做到一劳永逸
安装与使用
subconverter,subconverter的安装十分简单,前往作者Github 的 Release界面下载好对应平台的最新版本的二进制软件即可开始使用:
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 |
配置修改
如前文所言,官方文档已经完美解释了了配置文件的作用,因此本节仅体现博主进行修改过的配置内容:
编写博客时subconverter版本为:v0.6.4
common字段修改
1 | [common] |
rulesets字段
1 | ;是否开启自定义规则 |
这里通过ruleset
来实现对不同地址的规则制定,个人建议将相应的网址存储在Github页面上来维护,这样也方便服务的搬迁或者重装,格式如下:
1 | # 匹配类型,域名 |
proxy_group字段
1 | ;为 Clash 、Mellow 、Surge 以及 Surfboard 等程序创建策略组, 可用正则来筛选节点 |
外部配置相关
由于博主服务器经常瞎折腾,机器经常重装系统,因此我会尽量将配置文件剥离到外部使用,避免因机器原因造成的配置丢失。所谓外部配置即将前文pref.ini
中规则和分组的配置信息另起一个文件写入其中,在使用时调用该配置文件,也可以设置common
字段中的default_external_config
实现默认调用
1 | ;由外部配置中所定义的值覆盖 pref.ini 里的内容,必须以[custom开头] |
高级应用
开机自启
1 | # 编辑服务配置文件 |
该方法我并未验证是否可行
打开启动文件夹
通过
win + r
打开运行,输入shell:Common Startup
打开启动文件夹拖入subconverter的快捷方式
配置反向代理和SSL加密
如果你是在服务器端以API模式运行subconverter的,那么默认是通过http://158.165.45.23/sub?target=clash&token=123456
的方式进行访问的,我在基于 Swizzin 打造客制化种子盒译文中也提到过,使用该方法访问既不美观,也不安全。因此本节将介绍如何对subconverter启用反向代理并配置SSL加密。
这里介绍两种反向代理的软件:nginx
与Caddy
,nginx功能更加强大切运行更快但是Caddy配置更加简单。博主建议如果你已配置了其他服务且想要整合subconverter则使用nginx,如果是仅需运行subconverter则使用Caddy更加简单。
通过任意方法安装nginx,如Swizzin
编辑nginx配置文件,这里以Swizzin安装的nginx为例
1
2
3
4
5
6
7# 新建并编辑配置文件
vi /etc/nginx/apps/subconverter.conf
# 输入以下内容
location /subconverter/ {
proxy_pass http://127.0.0.1:25500; #端口号是配置文件中的端口号,默认为25500
}这里默认你已经通过Swizzin获取了SSL证书,接下来你即可通过
https://domain.com/subconverter/sub?target=clash&token=123456
的方法获取订阅了。如果你并未获取SSL证书,请参考:基于 Swizzin 打造客制化种子盒或者你也可以采取二级域名的方式配置反向代理:
1
2
3
4
5
6
7
8# 通过certbot获取SSL证书,以Ubuntu 20.24 LTS 为例
# Certbot官网:https://certbot.eff.org/
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 --webroot1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 修改nginx配置文件,添加subconverter
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证书地址,通过certbot获取的证书默认在该位置
ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem; # SSL密钥地址,通过certbot获取的证书密钥默认在该位置
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; #端口号是配置文件中的端口号,默认为25500
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
# 重启nginx
sudo systemctl restart nginx
1 | # 安装Caddy,以Ubuntu 20.24 LTS 为例 |
1 | # 编写Caddyfile |
接下来即可通过https://domain.com/subconverter/sub?target=clash&token=123456
方法安全的访问相关订阅了!
总结
本文介绍了如何通过subconverter合并、转换订阅并自定义相关规则,同时采用反向代理+SSL加密的方法确保访问的安全性。
本文并未安装网络上流行的前端页面,主要是由于该前端对于自用用户来说作用并不大,因此略过了前端的安装。
参考资料: