Blocking Probe / 配置

配置后台

新增 / 编辑节点

已选 0 项
节点 token 只在生成时显示一次。手机节点建议把运营商留空走自动识别—— 切换 WiFi/蜂窝后归属地会变,写死会导致判定张冠李戴。

新增 / 编辑域名

已选 0 项
真实 IP 必须从境外节点解析获得,且域名有几个 IP 就填几个—— 只填一个的话,解析到其它真实 IP 时会被误判成 DNS 污染。用 dig +short 域名 把返回的地址全填上。
候选状态的域名已从入口池摘除,但仍在持续探测——不继续测就永远等不到恢复。 回收站的域名停止探测。

新建三方密钥

已选 0 项
这些密钥只能在三方的服务端使用。/api/v3p/* 不开 CORS 且校验来源 IP,放进浏览器发不出请求。不绑 IP 白名单等于密钥泄露即失守。

域名组

节点组

节点组默认能看到全部域名。要限制就点「授权」, 勾选这个节点组可以访问哪些域名组——只有显式勾选过才生效。
这么设计是因为「建了组就自动隔离」会让人在毫不知情的情况下把节点饿死: 拿不到任务,却因为心跳仍在而显示「在线」。

导出 / 迁移

含密钥的迁移包等于整套系统的钥匙——包含节点 token 和三方 secret。 换服务器时确实需要(否则所有节点和合作方都要重新配),但导出后请立即加密保存并及时删除。

自动处置规则

恢复门槛应高于降级门槛。封锁是概率性的,没有滞回域名会在两个状态间 反复横跳,落地页跟着抖,比不做自动处置更糟。「误判恢复」的代价也大于「晚一点恢复」。

告警通道

移动端 APK

上传到中枢比用 GitHub Release 链接可靠。 Actions 的 Artifacts 需要登录才能下载,Release 链接在境内也未必顺畅—— 而装节点的那台手机往往两样都没有。上传后探测台首页会出现下载按钮。
注意 Actions 下载的是 zip,要先解压出里面的 .apk 再上传。

节点入口与源站隐藏

所有发给节点的命令和文档地址都用「节点入口」,不是你打开后台的地址。 后者是中枢真实地址——它一旦进了安装命令,就跟着分发到每一台节点, 丢一台手机就暴露了。中继搭建见 deploy/RELAY.md。

IP 库

用途:给手机节点补省份。安卓的 TelephonyManager 只给运营商, 不给归属地,所以手机节点的省份一直是「未知」,覆盖矩阵会有缺口。 中枢收上报时天然看到来源 IP,按 IP 库查出省份补上——比让每台手机下载几 MB 的库再自己查省事得多。

支持的格式(自动识别,不看扩展名): ip2region .xdb、纯真 qqwry.dat、纯真 ipv6wry.db、 MaxMind GeoLite2 Blocks CSV、通用 CSV(起始IP,结束IP,省份,运营商)。
MaxMind 的 Blocks 里只有 geoname_id,必须同时上传 Locations 文件才能解析出省份。

导入是全量替换——IP 段归属变化恰恰是需要被覆盖掉的。 导入时会把相邻且省份运营商相同的段合并,70 万条的库通常能压到几万条。

状态流转记录

指令记录

清理
排队中的指令不会被「删已完成」清掉。 节点可能只是暂时离线,删掉等于取消了这次操作——而你下发时的意图是「等它上线执行」。 要连排队的一起清就用「全部清空」。

存储占用

SQLite 删行后文件不会自动缩小,回收空间会重写整个库把空洞挤掉。 库大时会卡几秒,所以做成手动触发。
探测上报按 PROBE_RETENTION_DAYS(默认 14 天)自动清理, 指令记录按上面配的天数清理——两者都在后台循环里跑,不需要重启中枢。

API 调用审计

登录记录