Surge、Loon、Stash、Shadowrocket、Egern、Quantumult X,同一份脚本内置环境兼容层。
切换网络瞬间通过 network-changed 事件触发,每 10 分钟 cron 兜底捕捉纯 IP 变更。
每次直接上报出口 IP,服务端对重复 IP 幂等去重。写满按写入时间自动淘汰最旧 IP。
被 FIFO 淘汰挤出白名单的设备,由自己的 cron / 切网事件在几分钟内自动补回。
在 po0 控制台的机器详情页,找到「防火墙」卡片,点 复制添加脚本(不是「添加当前 IP」):
加白接口形如下面这段,你的 token 就是 URL 路径里 pgnfw_ 开头的那一整串:
curl -X POST https://124.221.69.228/api/firewall/pgnfw_你复制到的这一整串/add
把 pgnfw_… 那一整串提取出来就是本机 token。一台机器对应一个 token,多个 token 用英文逗号分割。
@槽位号,例如 pgnfw_你的token@0——脚本会请求 …/add?slot=0 把它钉在 0 号槽位。注意每个 IP 只能占一个槽位,换槽前需先在面板删掉旧槽位。QX 无法远程订阅定时任务,需手动装:打开 QX 配置文件,把片段里的任务行加进 [task_local];可选把 ip-cidr, 124.221.69.228/32, direct, no-resolve 加进 [filter_local]。QX 不支持脚本参数:用 BoxJs 给 key po0fw_tokens 写入 token,或本地脚本改 INLINE_TOKENS。
装好后点击模块 → 编辑参数,把 tokens 换成你的 token(多台机器用 | 分割)。手动装:配置 → 模块 → 右上角 + → 粘贴链接。
之后无需任何操作:切换网络时立即、以及每 10 分钟自动检查一次,出口 IP 变了才会真正写入白名单。支持面板的客户端会显示:
po0 加白 1/1 · 出口 203.0.113.0/24
#1 ✅ 3/5
203.0.113.0/24 ←
198.51.100.0/24 📶
192.0.2.0/24
| 标记 | 含义 |
|---|---|
← | 当前出口所在网段 |
📶 | 本设备在蜂窝网络下加白的网段 |
3/5 | 白名单坑位占用 / 上限 |
203.0.113.0/24),同段内换 IP 不消耗新坑位、不推进淘汰,家宽拨号重连通常不产生新写入。Q: 走代理时会把代理服务器 IP 加白吗?
不会。各载体都自带加白 API(124.221.69.228)直连规则,API 请求始终直连,看到的是设备真实出口 IP。
Q: 家宽换 IP 后多久生效?
网络切换事件是即时的;纯粹的公网 IP 变更最迟 10 分钟内被 cron 捕捉。
Q: 不同客户端功能有差异吗?
核心加白逻辑完全一致。差异:不支持 $network 的客户端没有 📶 蜂窝标记;Loon 无面板(可在脚本列表手动执行);QX 无面板与脚本参数(token 走存储 key)。
Q: 支持几台 po0 机器?
不限,tokens 逗号分割即可,面板按 #1 #2 … 分行显示。