Surge、Loon、Stash、Shadowrocket、Egern、Quantumult X,同一份脚本内置环境兼容层。
切换网络瞬间通过 network-changed 事件触发,每 3 分钟 cron 兜底捕捉纯 IP 变更。
先只读查询,出口已在白名单就不写入。写满按写入时间自动淘汰,乱写会挤掉常用 IP。
蜂窝自动写入带 10 分钟冷却,防止 IP 频繁变化挤掉其他设备;手动刷新永不受限。
在 po0 控制台的机器详情页,找到「防火墙」卡片,点 复制添加脚本(不是「添加当前 IP」):
粘贴到任意文本框,会得到一段 curl 命令。你的 token 就是 Authorization: Bearer 后面 pgnfw_ 开头的那一整串:
curl -X POST https://console.po0.com/modules/servers/penguin/api/firewall.php \
-H 'Authorization: Bearer pgnfw_你复制到的这一整串' \
-H 'Content-Type: application/json'
把 pgnfw_… 那一整串提取出来就是本机 token。一台机器对应一个 token,多个 token 用英文逗号分割。
QX 不支持脚本参数:用 BoxJs 给 key po0fw_tokens 写入 token,或本地脚本改 INLINE_TOKENS。
配置 → 模块 → 右上角 + → 粘贴链接安装;然后点击模块 → 编辑参数,把 tokens 换成你的 token(多台机器用 | 分割)。
模块 → 添加 Surge 模块 → 粘贴链接,参数 tokens 填 token。
之后无需任何操作:切换网络时立即、以及每 3 分钟自动检查一次,出口 IP 变了才会真正写入白名单。支持面板的客户端会显示:
po0 加白 1/1 · 出口 203.0.113.10
#1 ✅ 3/5
203.0.113.10 ←
198.51.100.7 📶
192.0.2.15
| 标记 | 含义 |
|---|---|
← | 当前出口 IP |
📶 | 本设备在蜂窝网络下加白的 IP |
3/5 | 白名单坑位占用 / 上限 |
Q: 走代理时会把代理服务器 IP 加白吗?
不会。各载体都自带 console.po0.com 直连规则,API 请求始终直连,看到的是设备真实出口 IP。
Q: 家宽换 IP 后多久生效?
网络切换事件是即时的;纯粹的公网 IP 变更最迟 3 分钟内被 cron 捕捉。
Q: 不同客户端功能有差异吗?
核心加白逻辑完全一致。差异:不支持 $network 的客户端无法识别蜂窝(按非蜂窝处理);Loon 无面板(可在脚本列表手动执行);QX 无面板与脚本参数(token 走存储 key)。
Q: 支持几台 po0 机器?
不限,tokens 逗号分割即可,面板按 #1 #2 … 分行显示。