利用subconverter实现订阅合并与转换 您所在的位置:网站首页 clash订阅链接转换为2ray 利用subconverter实现订阅合并与转换

利用subconverter实现订阅合并与转换

2023-07-07 09:18| 来源: 网络整理| 查看: 265

前言

Clash是目前流行的网络分流软件,通过正确的配置规则可以实现对不同网站使用相应的节点进行访问,大大提高了日常使用的感受。目前大多数网络服务提供商也提供了相应的订阅链接,方便用户一键配置。

然而,如果使用者想要添加自动的特殊规则,或是在原有订阅的基础上新增自定义节点,服务商提供的订阅链接的作用就显得捉襟见肘了,这时通常需要手动编写config.yml配置文件来实现响应的需求。然而服务商的节点时常有变动,而每变动一次都需要我们重新更改配置文件,对我们的使用造成严重的不便。

这时就轮到subconverter出场了,用户可以通过subconverter实现对订阅的高度自定义配置,并能够将其转化为多个客户端的配置文件,使订阅更新时能够继续继续保持原有规则。总的来说,其特点如下:

订阅格式转化:能够将订阅转为多个客户端的配置文件 API模式:能够通过API模式搭建服务端 订阅合并:可以合并多个订阅,亦可增加单独节点 自定义规则:通过编辑配置文件,实现自定义分组与规则,做到一劳永逸 安装与使用subconverter,

subconverter的安装十分简单,前往作者Github 的 Release界面下载好对应平台的最新版本的二进制软件即可开始使用:

安装64位版本或者32位版本 解压后运行subconverter\subconverter.exe即可 123456# 下载releasewget 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字段修改1234567891011121314151617[common];API 模式, 如果你是在远程服务器上运行subconverter则将其设置为true,否则为falseapi_mode=true;API模式访问密钥,远程访问时用于验证身份使用api_access_token=1234567989asdfg;默认订阅链接, 如有多个连接需要使用"|"进行分割,用以在请求未提供订阅链接时处理订阅,可以为文件或者链接default_url=https://sub.me/getsub.php?service=5568&id=5598|https://sub1.me/getsub.php?service=5568&id=5598;是否允许注入自定义节点,如果需要在订阅中添加自己的其他节点则设置为trueenable_insert=true;需要注入的节点,多个节点用"|"进行分割,insert_url=vmess://sadjslakjdlsakjdlksajdlsakjdklasjdlkasndknsakcjsalkjdklasjldjalksjdlasjdlasd=;默认外部配置文件,如未指定外部配置,则加载该配置。支持 本地文件 和 在线URLdefault_external_config=https://external/pref.ini rulesets字段12345678910111213141516171819202122232425262728293031323334353637;是否开启自定义规则enabled=true;是否覆写之前配置的基础配置内容overwrite_original_rules=false;是否允许通过请求更改规则update_ruleset_on_request=false;从本地或 url 获取规则片段;格式: Group name,[type:]URL[,interval]; Group name,[]Rule;支持的type(类型)包括:surge, quanx, clash-domain, clash-ipcidr, clash-classic;type留空时默认为surge类型的规则;[] 前缀后的文字将被当作规则,而不是链接或路径,主要包含 []GEOIP 和 []MATCH(等同于 []FINAL);博主使用的策略如下:ruleset=🏴‍☠️ 独立代理,https:rule/duli.listruleset=🎯 强行直连,https:rule/zhilian.listruleset=⚔️ 专用代理,https:rule/zhuanyong.listruleset=DIRECT,https:rule/zhilian.listruleset=🐟 漏网之鱼,[]FINAL;举例策略:ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list; 表示引用 https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list 规则; 且将此规则指向 [proxy_group] 所设置 🍎 苹果服务 策略组ruleset=Domestic Services,clash-domain:https://ruleset.dev/clash_domestic_services_domains,86400; 表示引用clash-domain类型的 https://ruleset.dev/clash_domestic_services_domains 规则; 规则更新间隔为86400秒; 且将此规则指向 [proxy_group] 所设置 Domestic Services 策略组ruleset=🎯 全球直连,rules/NobyDa/Surge/Download.list; 表示引用本地 rules/NobyDa/Surge/Download.list 规则; 且将此规则指向 [proxy_group] 所设置 🎯 全球直连 策略组ruleset=🎯 全球直连,[]GEOIP,CN; 表示引用 GEOIP 中关于中国的所有 IP; 且将此规则指向 [proxy_group] 所设置 🎯 全球直连 策略组ruleset=!!import:snippets/rulesets.txt; 表示引用本地的snippets/rulesets.txt规则

这里通过ruleset来实现对不同地址的规则制定,个人建议将相应的网址存储在Github页面上来维护,这样也方便服务的搬迁或者重装,格式如下:

1234# 匹配类型,域名DOMAIN,apple.comscoreresearch.comDOMAIN-SUFFIX,mzstatic.comIP-CIDR,17.0.0.0/8,no-resolve proxy_group字段123456789101112131415161718192021222324252627282930313233343536;为 Clash 、Mellow 、Surge 以及 Surfboard 等程序创建策略组, 可用正则来筛选节点;[] 前缀后的文字将被当作引用策略组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; 表示创建一个叫 🍎 苹果服务 的 url-test 策略组,并向其中添加名字含'美国','US'的节点,每隔300秒测试一次,测速超时为5s,切换节点的延迟容差为100mscustom_proxy_group=🇯🇵 日本延迟最低`url-test`(日|JP)`http://www.gstatic.com/generate_204`300,5; 表示创建一个叫 🇯🇵 日本延迟最低 的 url-test 策略组,并向其中添加名字含'日','JP'的节点,每隔300秒测试一次,测速超时为5scustom_proxy_group=负载均衡`load-balance`.*`http://www.gstatic.com/generate_204`300,,100; 表示创建一个叫 负载均衡 的 load-balance 策略组,并向其中添加所有的节点,每隔300秒测试一次,切换节点的延迟容差为100mscustom_proxy_group=🇯🇵 JP`select`沪日`日本`[]🇯🇵 日本延迟最低; 表示创建一个叫 🇯🇵 JP 的 select 策略组,并向其中**依次**添加名字含'沪日','日本'的节点,以及引用上述所创建的 🇯🇵 日本延迟最低 策略组custom_proxy_group=g1`select`!!GROUPID=0`!!INSERT=0; 指订阅链接中的第一条订阅以及配置文件中 insert_url 中的第一条节点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; 指订阅链接中组名(tag)为 V2RayProvider 的节点custom_proxy_group=g1hk`select`!!GROUPID=0!!(HGC|HKBN|PCCW|HKT|hk|港); 订阅链接中的第一条订阅内名字含 HGC、HKBN、PCCW、HKT、hk、港 的节点; 博主自用组名custom_proxy_group=🎏 JMS`select`!!GROUPID=1`[]🎏 JMS-AUTOcustom_proxy_group=🐟 漏网之鱼`select`[]🎏 JMS`[]⚖️ 负载均衡`[]🤖 自动测试`!!GROUPID=0custom_proxy_group=⚔️ 专用代理`select`!!GROUPID=1custom_proxy_group=⚖️ 负载均衡`load-balance`!!GROUPID=0`http://www.gstatic.com/generate_204`300,,100custom_proxy_group=🤖 自动测试`url-test`!!GROUPID=0`http://www.gstatic.com/generate_204`300,5custom_proxy_group = 🎏 JMS-AUTO`url-test`!!GROUPID=1`http://www.gstatic.com/generate_204`300,5custom_proxy_group=🎯 强行直连`select`[]DIRECTcustom_proxy_group=🏴‍☠️ 独立代理`select`!!INSERT=1 外部配置相关

由于博主服务器经常瞎折腾,机器经常重装系统,因此我会尽量将配置文件剥离到外部使用,避免因机器原因造成的配置丢失。所谓外部配置即将前文pref.ini中规则和分组的配置信息另起一个文件写入其中,在使用时调用该配置文件,也可以设置common字段中的default_external_config实现默认调用

123456789101112131415;由外部配置中所定义的值覆盖 pref.ini 里的内容,必须以[custom开头][custom]ruleset=🏴‍☠️ 独立代理,https:rule/duli.listruleset=🎯 强行直连,https:rule/zhilian.listruleset=⚔️ 专用代理,https:rule/zhuanyong.listruleset=DIRECT,https:rule/zhilian.listruleset=🐟 漏网之鱼,[]FINALcustom_proxy_group=🎏 JMS`select`!!GROUPID=1`[]🎏 JMS-AUTOcustom_proxy_group=🐟 漏网之鱼`select`[]🎏 JMS`[]⚖️ 负载均衡`[]🤖 自动测试`!!GROUPID=0custom_proxy_group=⚔️ 专用代理`select`!!GROUPID=1custom_proxy_group=⚖️ 负载均衡`load-balance`!!GROUPID=0`http://www.gstatic.com/generate_204`300,,100custom_proxy_group=🤖 自动测试`url-test`!!GROUPID=0`http://www.gstatic.com/generate_204`300,5custom_proxy_group = 🎏 JMS-AUTO`url-test`!!GROUPID=1`http://www.gstatic.com/generate_204`300,5custom_proxy_group=🎯 强行直连`select`[]DIRECTcustom_proxy_group=🏴‍☠️ 独立代理`select`!!INSERT=1 高级应用开机自启12345678910111213141516171819# 编辑服务配置文件vi /etc/systemd/system/subconverter.service# 写入服务信息[Unit]Description=A API For Subscription ConvertAfter=network.target[Service]Type=simpleExecStart=/root/subconverter/subconverter #subconverter 文件路径WorkingDirectory=/root/subconverter #subconverter 所在目录Restart=alwaysRestartSec=10[Install]WantedBy=multi-user.targetsystemctl 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为例

1234567# 新建并编辑配置文件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 打造客制化种子盒

或者你也可以采取二级域名的方式配置反向代理:

12345678# 通过certbot获取SSL证书,以Ubuntu 20.24 LTS 为例# Certbot官网:https://certbot.eff.org/sudo apt updatesudo apt install snapdsudo snap install core; sudo snap refresh coresudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbotsudo certbot certonly --webroot 123456789101112131415161718192021222324# 修改nginx配置文件,添加subconvertersudo 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; }}# 重启nginxsudo systemctl restart nginx 1234567# 安装Caddy,以Ubuntu 20.24 LTS 为例# Caddy也可以直接使用编译完成的二进制文件,这里采用的是包管理器的方式安装,该方法能自动配置系统服务,减少工作量sudo apt install -y debian-keyring debian-archive-keyring apt-transport-httpscurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asccurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.listsudo apt updatesudo apt install caddy 1234567891011121314# 编写Caddyfilevi /etc/caddy/Caddyfile# 写入以下内容# clash.domain.com为需要配置的域名clash.domain.com { encode gzip tls [email protected] # 邮箱是ACME account,随意填写也无所谓 # tls internal # 如果上文无法获取证书,则使用该方法获取自签名证书。自签名证书需要在cloudflare配置SSL为灵活或者完全后方能使用 reverse_proxy http://127.0.0.1:25500 #端口号是配置文件中的端口号,默认为25500}# 重启Caddysudo systemctl restart caddy

接下来即可通过https://domain.com/subconverter/sub?target=clash&token=123456方法安全的访问相关订阅了!

总结

本文介绍了如何通过subconverter合并、转换订阅并自定义相关规则,同时采用反向代理+SSL加密的方法确保访问的安全性。

本文并未安装网络上流行的前端页面,主要是由于该前端对于自用用户来说作用并不大,因此略过了前端的安装。

参考资料:

subconverter仓库文档 Caddy官方文档 优雅的订阅转换API-SubConverter安装教程


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有