前言
Clash是目前流行的网络分流软件,通过正确的配置规则可以实现对不同网站使用相应的节点进行访问,大大提高了日常使用的感受。目前大多数网络服务提供商也提供了相应的订阅链接,方便用户一键配置。
然而,如果使用者想要添加自动的特殊规则,或是在原有订阅的基础上新增自定义节点,服务商提供的订阅链接的作用就显得捉襟见肘了,这时通常需要手动编写config.yml配置文件来实现响应的需求。然而服务商的节点时常有变动,而每变动一次都需要我们重新更改配置文件,对我们的使用造成严重的不便。
这时就轮到subconverter出场了,用户可以通过subconverter实现对订阅的高度自定义配置,并能够将其转化为多个客户端的配置文件,使订阅更新时能够继续继续保持原有规则。总的来说,其特点如下:
- 订阅格式转化:能够将订阅转为多个客户端的配置文件
- API模式:能够通过API模式搭建服务端
- 订阅合并:可以合并多个订阅,亦可增加单独节点
- 自定义规则:通过编辑配置文件,实现自定义分组与规则,做到一劳永逸
安装与使用
subconverter,
subconverter的安装十分简单,前往作者Github 的 Release界面下载好对应平台的最新版本的二进制软件即可开始使用:
- 安装64位版本或者32位版本
- 解压后运行
subconverter\subconverter.exe即可
1 2 3 4 5 6
| wget https://github.com/tindy2013/subconverter/releases/latest/download/subconverter_linux64.tar.gz
tar -xvzf subconverter_linux64.tar.gz subconverter && chmod +x subconverter/subconverter
subconverter/subconverter
|
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 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.ini
|
rulesets字段
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.txt
|
这里通过ruleset来实现对不同地址的规则制定,个人建议将相应的网址存储在Github页面上来维护,这样也方便服务的搬迁或者重装,格式如下:
1 2 3 4
| # 匹配类型,域名 DOMAIN,apple.comscoreresearch.com DOMAIN-SUFFIX,mzstatic.com IP-CIDR,17.0.0.0/8,no-resolve
|
proxy_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
|
打开启动文件夹
通过 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; }
|
这里默认你已经通过Swizzin获取了SSL证书,接下来你即可通过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
|
1 2 3 4 5 6 7
|
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vi /etc/caddy/Caddyfile
clash.domain.com { encode gzip tls email@mail.com reverse_proxy http://127.0.0.1:25500 }
sudo systemctl restart caddy
|
接下来即可通过https://domain.com/subconverter/sub?target=clash&token=123456方法安全的访问相关订阅了!
总结
本文介绍了如何通过subconverter合并、转换订阅并自定义相关规则,同时采用反向代理+SSL加密的方法确保访问的安全性。
本文并未安装网络上流行的前端页面,主要是由于该前端对于自用用户来说作用并不大,因此略过了前端的安装。
参考资料: