Skip to content

筛选、命名与脚本 ​

“节点”页的 筛选 决定要哪些节点,命名 决定节点叫什么、怎么排。生成时按固定顺序执行:筛选 → 改名 → 国旗 → 前缀 → 去重 → 排序 → 脚本。

设置说明
线路全部 / 只要中转 / 只要直连
地区只保留选中的地区;“其他”是名称里认不出地区的节点
协议只保留选中的协议
名称包含 / 排除多个关键词用 | 分隔(不区分大小写),或用 /正则/
改名规则一条一行:左边填正则表达式,右边填替换成什么,留空就是删除匹配的部分;从上到下依次执行,可用 $1 引用分组
自动加国旗按名称识别地区,在前面加国旗;已经有国旗的不重复加
名称前缀给所有节点加同一个前缀
去重地址、端口、协议都相同的只保留第一个
排序面板顺序,或按名称(02 排在 10 前面)
按地区分组在“规则”页(见 分流规则):mihomo / sing-box / Surge 里每个地区一个自动测速组,列在“节点选择”最前面;开启分流规则时自动包含

例如导入的节点叫 花云|香港🇭🇰|1.0x|01,改名规则:

正则表达式替换为
花云|(留空)
|[0-9.]+x(留空)
|-

| 在正则里有特殊含义,要匹配它本身需要写成 \|。

会变成 香港🇭🇰-01。编辑时打开 预览 页可以先看结果,会显示每个节点改名前后的名字和过滤掉了几个。

JS 脚本 ​

上面的设置不够用时,在“节点”页的 JS 脚本 里写一个 operator 函数,一次处理整个节点列表(写法同 Sub-Store 的脚本操作):

js
function operator(nodes) {
  return nodes
    .filter(n => !/过期|剩余/.test(n.name))
    .map(n => {
      n.name = n.name.replace("IEPL", "专线")
      return n
    })
    .sort((a, b) => a.name.localeCompare(b.name))
}

返回的数组决定留下哪些节点、什么顺序;没返回的节点会被去掉。每个节点有这些字段:

字段说明
name当前名称(已经过改名、国旗、前缀),唯一能改的字段
original原名
server / port地址和端口
protocol协议,如 vless、shadowsocks、hysteria2
region识别出的地区,如 🇭🇰 香港,认不出是空的
linerelay(中转)或 direct(直连)
  • 脚本在上面所有步骤之后运行,只能用标准 JavaScript,不能联网、读文件或用定时器
  • 运行超过 1 秒会被停止;脚本出错时按没有脚本生成,预览页顶部会显示错误
  • 点 试运行并预览 可以马上看结果;console.log 可以写但不会输出

基于 GPLv3 发布 · 仅供学习研究使用