Skip to content

脚本概览 ​

Sub-Store 内置 JavaScript 脚本能力,用来实现前端可视化操作无法完成的自定义逻辑。

脚本位置 ​

  • 节点操作 → 脚本操作:对每个节点进行修改(如改属性、改名称、SNI、前置代理等)
  • 节点筛选 → 脚本筛选:返回布尔值,决定节点是否保留
  • 文件 → 脚本操作:处理文件内容(如生成配置、转换模板)
  • 修改响应:在输出时修改响应头/状态码/内容(需要 SUB_STORE_FRONTEND_BACKEND_PATH,见环境变量)

两种写法 ​

  1. 快捷脚本:直接操作 $server(当前节点),适合简单修改,例如:
javascript
$server.name = `[${ProxyUtils.getISO($server.name)}] ${$server.name}`
$server['underlying-proxy'] = '名称'
  1. 函数式脚本:operator(proxies, targetPlatform, context),拿到完整的节点数组和上下文,适合复杂逻辑:
javascript
function operator(proxies, targetPlatform, context) {
  // proxies 为节点数组,可整体处理
  return proxies
}

WARNING

函数式写法与快捷脚本写法只能二选一,不能混用。

常见用途 ​

  • 节点测试:测活、测延迟、节点测速、UDP 检测、落地/入口检测等(配合 HTTP-META 与 MMDB 本地数据库 可本地执行)
  • 节点增强:按名称提取流量信息、标记地区、改协议参数(如 QX obfs)、去重、排序等
  • 文件生成:动态生成 mihomo / sing-box / Surfboard 配置
  • 自动化:定时处理订阅预热缓存、读取文件配置控制脚本行为

资源和参考 ​

注意 ​