筛选、命名与脚本
“节点”页的 筛选 决定要哪些节点,命名 决定节点叫什么、怎么排。生成时按固定顺序执行:筛选 → 改名 → 国旗 → 前缀 → 去重 → 排序 → 脚本。
| 设置 | 说明 |
|---|---|
| 线路 | 全部 / 只要中转 / 只要直连 |
| 地区 | 只保留选中的地区;“其他”是名称里认不出地区的节点 |
| 协议 | 只保留选中的协议 |
| 名称包含 / 排除 | 多个关键词用 | 分隔(不区分大小写),或用 /正则/ |
| 改名规则 | 一条一行:左边填正则表达式,右边填替换成什么,留空就是删除匹配的部分;从上到下依次执行,可用 $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 | 识别出的地区,如 🇭🇰 香港,认不出是空的 |
line | relay(中转)或 direct(直连) |
- 脚本在上面所有步骤之后运行,只能用标准 JavaScript,不能联网、读文件或用定时器
- 运行超过 1 秒会被停止;脚本出错时按没有脚本生成,预览页顶部会显示错误
- 点 试运行并预览 可以马上看结果;
console.log可以写但不会输出
