Files
proxy-station/docs/ADDING-REGIONS.md

9.1 KiB
Raw Blame History

新增地区与新增站点

当舰队里加入新地区(香港、日本、韩国、台湾、英国……)的节点时,按本文操作。

背景:策略组的地区筛选靠节点名称正则,不靠节点的 region 字段。所以节点命名是一切的前提。

当前状态(2026-10-04)

节点登记/启用数量、完整策略组矩阵和服务规则归属集中见 当前生产状态。下面维护地区命名与扩展方法;新增站点不自动启用已有停用线路。

有美国、新加坡、日本三个地区的节点,策略组里对应 🇺🇸 United States、🇸🇬 Singapore、🇯🇵 Japan 三个地区组。 日本组于 2026-09-14 随 jp 站点(VMISS 东京,八条线路)按本文步骤重建,站点码 JP,当前加入的服务组为 Proxy/Automatic/Streaming/AI/Bybit。约定:凡是成员含美国或新加坡的组,都应同时含日本;NoAuto 当前只含大陆,不在此列。Speedtest 组及其专用规则已删除。 2026-10-04 已删除线上 Apple/Global Services 组及指向它们的专用规则,并删除 AI 的 Bing 规则;不再给这两个已删除的服务组添加地区。同日进一步将所有原先直接指向 Automatic 的 20 条规则改为 Proxy,包括 global/global_plus、CDN 及 Facebook 等;x.com/bing.com 当前自然匹配 global → Proxy,由用户在 Proxy 中选择出口。Automatic 改为 url-test,仅 Proxy 保留其成员引用;AI/Speedtest/NoAuto 已移除 Automatic。具体约束与验证见 Proxy 与 Automatic 选择链。App Store DIRECT、Apple News 美国及 Apple Relay AI 例外继续保留。原始初始化模板仍有旧组和旧引用;已有生产数据以管理 API 为准,不通过规则 reset 恢复旧分流。 香港、台湾、英国、韩国的地区组仍处于删除状态——留着会是空组,在客户端里显示为无可用节点。 兜底的 🌍 Other 组也已删除:所有节点都能被现有三个地区组收纳,它恒为空。 当前组显示顺序为 Proxy、Automatic、All Nodes、美国、新加坡、日本、AI、🧠 AI Nodes、Streaming、Bybit、Mainland、NoAuto。🧠 AI Nodes 为独立收纳全部节点的 select 组,紧接 AI;其选择与 All Nodes 独立保存,见 AI Nodes。两组的节点按完整名称字符串升序输出;当前节点 sortOrder 统一为默认 0,新增节点保持默认值即可沿用名称排序。组显示顺序不决定分流优先级;实际规则保留协议防护与 Unbreak 例外在前,启用的 AI 规则集中置于广告及普通分流之前,见 AI 与广告优先级。

一、给新节点命名(决定它能被哪个组收纳)

命名格式:<国旗> <国家码> · <站点码> · <协议> · <出口>

🇭🇰 HK · VMess · 直连
🇯🇵 JP · Trojan · WARP
🇺🇸 US · LA · VMess · 直连      ← 同国多站点时插入站点码
  • 国家码必须出现在名字里(HK/JP/US/SG…),地区组的正则靠它匹配
  • 出口词(直连 / WARP)必须保留:客户端里没有出口标签,用户只能靠名字区分同协议的两条线路。界面上显示时会自动隐去,不必担心重复
  • 站点码(LA/RN/AWS)用于节点页的分段归类,来自节点的 region 字段

节点的 region 字段填站点码(SG、LA、RN、HK…),它决定节点页里归到哪一段。

二、让站点标题显示国旗

web/src/components/stations.ts 的 STATION_LABELS 加一行:

const STATION_LABELS: Record<string, string> = {
  SG: '🇸🇬 SG AWS',
  LA: '🇺🇸 US LA',
  RN: '🇺🇸 US RN',
  HK: '🇭🇰 HK 香港站点名',   // ← 新增
};

未配置的站点码会原样显示,不影响功能。

三、新建地区策略组

在「策略组」页点「添加策略组」,按下表填写:

字段 值
名称 🇭🇰 Hong Kong(emoji 前缀 + 英文原名)
类型 url-test
成员 留空
收纳全部节点 开启
名称筛选正则 见下方对照表
测速 URL http://cp.cloudflare.com/generate_204
间隔 300
容差 50

「收纳全部节点」+「筛选正则」的组合会生成 include-all-proxies=true, policy-regex-filter=…(Surge)、include-all-proxies: true, filter: …(Clash)、policy-regex-filter=…(ShadowRocket),三端都是动态筛选——之后再加同地区节点会自动进组,不用改配置。ShadowRocket 不使用 use=true,其正则从 App 内全部节点筛选。

各地区的正则(取自原模板,可直接复制):

香港    港|🇭🇰|香港|HK|Hong
日本    日|🇯🇵|日本|JP|Japan
台湾    台|🇹🇼|台湾|TW|Tai
韩国    韩|韩国|Korea|KR|🇰🇷
英国    🇬🇧|英国|英|英格兰|UK|United Kingdom
新加坡  坡|🇸🇬|新加坡|狮城|SG|Singapore
美国    美|🇺🇸|美国|US|States|American

四、兜底组 🌍 Other(当前不存在)

原模板有一个 🌍 Other 组,用否定前瞻正则收纳「不属于任何已建地区组」的节点。当前已删除,因为现有节点都能被美/新/日三个组收纳,它恒为空。

加入尚无地区组的节点时,优先按本文新建对应地区组。若确需恢复 Other,以下仅是历史模板示例,必须先核对目标客户端的正则能力与实际产物:

字段 值
名称 🌍 Other
类型 url-test,收纳全部节点开启
筛选正则 见下(把所有已建地区组的关键字排除掉)
^((?!港|🇭🇰|香港|HK|Hong|日|🇯🇵|日本|JP|Japan|坡|🇸🇬|新加坡|狮城|SG|Singapore|美|🇺🇸|美国|US|States|American|Remain|Expired|官网|如需|套餐|去除|剩余|距离|Reset|重置|流量).)+$

否定前瞻不能视为三个客户端都支持的正则;本系统会把 filterRegex 透传给 Clash 的 filter,不自动改写成等价的排除条件。当前简单地区正则的验证结果不覆盖这个历史示例,跨端恢复需先验证,必要时调整数据模型与生成器。

如果重建了 Other,每次新增地区组都必须往这个否定前瞻里追加对应关键字,否则新地区节点会同时出现在自己的组和 Other 里。

五、把新地区加进服务组的可选项

新建地区组后,它不会自动出现在服务组的成员里。按需编辑这些组,把新地区加进成员列表:

组 当前成员 建议
⚡️ Automatic(url-test) SG、US、JP 加入所有地区组;仅由 Proxy 引用,不让规则直接指向它
🚀 Proxy Automatic、All Nodes、SG、US、JP 加入所有地区组
🎬 Streaming SG、US、JP 加入解锁能力强的地区(HK/TW/JP)
🤖 AI US、SG、JP、🧠 AI Nodes 加入 AI 服务可用地区;不加入 Automatic
🧠 AI Nodes(select) 全部节点 保持 includeAllNodes,与 All Nodes 独立选择;新增节点自动进入,sortOrder 保持默认 0
🪙 Bybit DIRECT、SG、US、JP 同 Proxy
🎯 NoAuto Mainland 不加入 Automatic

成员的顺序就是客户端里的排列顺序。对于 select 组,客户端没有有效的已保存选择时,第一个成员是默认选中项;Automatic 为 url-test,按测速结果与容差选择成员。

六、地区流媒体解锁规则(可选)

模板原有按地区解锁的规则集。当前 stream_us 的域名/IP 两条已指向美国,stream_jp 的两条已指向日本;stream_hk、stream_tw、stream_kr、stream_eu 的八条规则仍指向 🎬 Streaming,相关地区组当前不存在。

如果新建了对应地区组,可以在「规则」页把这些规则的策略改回该地区组,解锁效果更精准:

规则集 建议策略
stream_hk(non_ip + ip 两条) 🇭🇰 Hong Kong
stream_jp(两条) 🇯🇵 Japan,当前已应用
stream_tw、stream_kr、stream_eu 对应地区组

七、验证

  1. 「策略组」页:新地区组的命中一栏应列出该地区的所有节点
  2. 「节点」页:新站点应有独立分段,标题显示国旗
  3. 从真实 HTTPS 订阅入口获取各端产物,先确认下载成功及配置结构,再按 订阅变更与验证运行 Surge CLI/规则集快照与独立目录的 mihomo -t;结构通过后仍需客户端连接验收。
  4. 若重建过 🌍 Other,确认它的命中里不再包含新地区节点

删除某个地区(反向操作)

  1. 把指向该组的规则改指向别的组(否则规则会被自动跳过——IR 层有悬空引用防护,但那是兜底不是意图)
  2. 从其他组的成员里摘掉它
  3. 删除该组
  4. Other 的排除列表可以保留该地区关键字(留着无害,将来重建时省事)

上述 1–3 步如果漏做,生成器不会产出无效配置(悬空引用会被自动跳过、FINAL 会降级为 DIRECT),但分流意图会悄悄改变,所以要显式处理。