ACL4SSR 教程

订阅转换模板怎么写?subconverter 外部配置(ini)的 ruleset 与 custom_proxy_group 详解

分类:订阅转换更新于 约 7 分钟读完4 份官方资料
本文目录
  1. 外部配置是怎么被调用的
  2. 拆开 ACL4SSR_Online.ini
  3. ruleset:规则指向哪个组
  4. custom_proxy_group:策略组怎么生成
  5. 最后两行开关
  6. 改出自己的模板
  7. 常见问题

用订阅转换时选的“远程配置”或“模板”,比如 ACL4SSR_Online.ini,在 subconverter 里叫外部配置。它决定转换出来的 Clash 配置里有哪些策略组、每条规则指向哪个组。本文按 subconverter 的中文文档和 ACL4SSR 的原文件讲清楚它的写法。subconverter 后端怎么部署,见本站的 subconverter 搭建教程。

外部配置是怎么被调用的#

subconverter 的转换接口是:

http://127.0.0.1:25500/sub?target=clash&url=订阅链接&config=外部配置地址

config 参数填外部配置文件的网址,和 url 一样要经过 URLEncode。文档写明:外部配置里定义的值会覆盖主程序目录里配置文件的同名内容;不传 config 时就用主程序目录里的配置。

所以写一份外部配置,放在任何能访问到的位置(GitHub、Gist 等),再把地址填进 config,就是一份自己的“订阅转换模板”。

拆开 ACL4SSR_Online.ini#

下面是 ACL4SSR 仓库里 Clash/config/ACL4SSR_Online.ini 的结构(有删节):

[custom]
;不要随意改变关键字,否则会导致出错

ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=📲 电报信息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list
ruleset=🎯 全球直连,[]GEOIP,CN
ruleset=🐟 漏网之鱼,[]FINAL

custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]DIRECT`.*
custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=📲 电报信息`select`[]🚀 节点选择`[]🎯 全球直连`.*
custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*

enable_rule_generator=true
overwrite_original_rules=true

文件分三块:ruleset 定义规则,custom_proxy_group 定义策略组,最后两行是开关。

ruleset:规则指向哪个组#

格式(据 subconverter 文档):

ruleset=策略组名,[类型:]规则地址[,更新间隔]
ruleset=策略组名,[]规则
  • 策略组名必须和下面某个 custom_proxy_group 的名字完全一致,包括 emoji。ACL4SSR 文件开头的“不要随意改变关键字”指的就是这个。
  • 规则地址可以是网址,也可以是 subconverter 本地的文件路径。
  • 类型可选 surge、quanx、clash-domain、clash-ipcidr、clash-classic,不写时默认按 surge 解析。ACL4SSR 的 .list 文件不写类型就能用。
  • [] 前缀表示后面是一条规则本身,不是地址。常用的是 []GEOIP,CN 和 []FINAL(文档说明 []MATCH 等同于 []FINAL),后者就是兜底规则。

转换时 subconverter 把每个规则列表展开成一条条规则,加上策略组名写进配置,顺序和 ruleset 的顺序一致。规则从上到下匹配,所以 ruleset 的顺序就是最终的匹配优先级。

custom_proxy_group:策略组怎么生成#

格式(据 subconverter 文档):

custom_proxy_group=组名`select`条件1`条件2`...
custom_proxy_group=组名`url-test|fallback|load-balance`条件1`条件2`...`测速地址`间隔[,超时][,容差]

各段用反引号 ` 分隔。条件有两种:

  • [] 开头:直接引用一个策略组或 DIRECT、REJECT,例如 []♻️ 自动选择。
  • 其他:按节点名做正则匹配,.* 表示所有节点,(美国|US) 表示名字里含“美国”或“US”的节点。

测速类策略组最后两段是测速地址和 间隔,超时,容差。ACL4SSR 的 300,,50 表示每 300 秒测一次、超时留空不设、容差 50 毫秒(文档示例 300,,100 的注释也只写了间隔和容差)。四种策略组类型的区别,见本站的 Clash 策略组类型。

文档还给了几个进阶筛选写法,例如:

custom_proxy_group=🇯🇵 日本延迟最低`url-test`(日|JP)`http://www.gstatic.com/generate_204`300,5
custom_proxy_group=节点选择`select`(^(?!.*(美国|日本)).*)
custom_proxy_group=g1`select`!!GROUPID=0

最后一行的 !!GROUPID=0 表示“第一条订阅链接里的节点”,适合同时转换多个订阅时分开放组。

最后两行开关#

  • enable_rule_generator=true:用上面的 ruleset 生成规则。subconverter 源码里,这项为 true 时才会把规则集写进 Clash 配置。
  • overwrite_original_rules=true:覆盖基础配置(clash_rule_base)里原有的规则,只用这份外部配置的规则。

改出自己的模板#

一个常见需求是给 ChatGPT 之类的服务单独建一个组。按上面的格式,只需要加一组 custom_proxy_group 和对应的 ruleset:

ruleset=🤖 AI 服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/OpenAi.list
custom_proxy_group=🤖 AI 服务`select`[]🚀 节点选择`(美国|US)

要注意两点:

  1. 新的 ruleset 要放在 ProxyLite、ChinaDomain、[]GEOIP,CN 和 []FINAL 之前,不然请求会先被前面的规则命中。
  2. 规则地址要确认文件确实存在,文件名区分大小写。上面这个 OpenAi.list 在 ACL4SSR 仓库里是存在的(注意是 OpenAi,不是 OpenAI)。

写好后上传到能公开访问的地址,转换时把 config 换成它即可。

常见问题

订阅转换的“远程配置”是什么?
它是 subconverter 的外部配置文件,通过 config 参数传入,决定转换结果里有哪些策略组、每条规则指向哪个组。外部配置的值会覆盖主程序目录里配置文件的同名内容。
ruleset 里的策略组名有什么要求?
必须和某个 custom_proxy_group 的名字完全一致,包括 emoji。ACL4SSR 文件开头写的“不要随意改变关键字”指的就是这个。
custom_proxy_group 里的 [] 是什么意思?
[] 开头表示直接引用一个策略组或 DIRECT、REJECT;不带 [] 的条件按节点名做正则匹配,.* 表示所有节点。

本站是非官方的学习笔记站,与 ACL4SSR 原项目维护者无隶属关系。文中引用的规则与文档版权归原作者所有。