光猫不给你看的,哥哥科技给你算出来。
直接安装(GitHub 源) 发行版(稳定) 装不上?故障排查 Bro-Stat 项目主页
ZTE-ONT_Stat 是 Bro-Stat 系列的光猫版:一个运行在浏览器里的"油猴"增强脚本,专为中兴光猫(ONU / ONT,E8 规范的老式 .gch 管理界面,常见于移动、电信、联通的定制光猫)打造,作者:哥哥科技。
光猫后台的数据其实不少,只是被拆散在七八个二级页面里,而且最想看的那个数字——外网现在跑多快——它压根不显示。本脚本把这些散落的数据收拢到一张全屏面板上:外网速率靠 PON 口累计字节除法算出来,每台无线终端的流量靠实时速率积分算出来,再配上 Bro-Stat 原生的驾驶舱看板、可拖动的总速率图、Wi-Fi 信号图标和红蓝进度条。无需刷机,不改光猫任何配置,不保存你的密码。

这个脚本只适用于中兴光猫的老式管理界面——登录后地址栏是 …/start.ghtml、左上角是中兴或运营商的 logo、菜单里有"状态 → 网络侧信息 → PON 信息"之类的页面。如果不是,请换对应的版本:
| 你的设备 | 应该装哪个 |
|---|---|
中兴光猫(E8 / .gch 界面,移动 / 电信 / 联通定制) |
✅ 就是本脚本 |
| 中兴家用消费级路由器:问天、巡天、晴天、星云、小方糖等系列 | 👉 主项目 ZTE-Stat_Max(脚本猫直连安装) |
| 小米路由器 | 👉 专版 Mi-Stat_Max(脚本猫直连安装) |
| TP-Link、华硕、华为、腾达、H3C、锐捷 等 | 👉 Bro-Stat 通用版,按品牌选择 |
装错了也不要紧:脚本在不认识的页面上只会显示一个灰色悬浮球,点开会告诉你该去哪里下载正确的版本。
| 光猫原生后台 | 现象 | ZTE-ONT_Stat 的做法 |
|---|---|---|
| 没有外网速率 | 只有"PON 信息"里一串十几位的累计字节数,看不出现在跑多快 | 定时读取累计字节,相邻两次相减再除以时间,求导出外网实时速率 |
| 终端流量查不到 | 光猫只给每台设备的瞬时速率,没有累计流量;还得在拓扑图里逐个点开 | 对每台终端的速率做事件驱动积分,算出"本次打开面板以来"每台设备跑了多少流量 |
| 数据分散 | 外网、拓扑、LAN 口、Wi-Fi 口、DHCP 清单分在五六个页面 | 一张全屏面板全部摆平,不用来回切页面 |
| Mesh 看不清 | 子路由下挂了哪些设备,要在拓扑图上找 | 网关节点一栏列出主路由和每台子路由;挂在子路由下的终端,频段标签后直接标出节点名 |
| 页面超时 | 官方页面 5 分钟一到就弹"页面超时,请重新登录" | 面板打开期间替官方页面续期,看多久都不会被踢下线 |
一个脚本,一张面板,光猫的家底一眼看清。
面板最上方是系列招牌的驾驶舱看板,左侧一道蓝色竖线,四行数据:
KiB/s 和 Mbps 两种口径;右侧标出当前采用的 PON 端口(GEMPORT)。看板中间嵌着 Bro-Stat 原生的外网总速率曲线(canvas 绘制,最多保留 8192 个点):
每台无线终端一张卡片,照搬 Bro-Stat 华为 / 锐捷版的原生组件,按频段分组:
ac 390M),鼠标悬停可看收 / 发两个方向。489.7K,3.826M 这种短单位,与中兴正式版一致。▂▃▅▇),不用任何图表库,几乎零开销地画出近 80 秒的速率波形。
5GHz 不是一个频段,而是一大片。脚本按光猫实际工作的主信道来起名:分组标题信道 ≥149 显示 5.8GHz,否则显示 5.2GHz;端口表再细分到 5.1G / 5.2G / 5.3G / 5.5G / 5.6G / 5.7G / 5.8G / 4.9G。和锐捷版共用同一张信道映射表。
详情请参阅:https://www.bilibili.com/video/BV1LZ6yBXESq
LAN1~LAN4 和每个 SSID 的收发字节都做了微分和累计:连接状态、协商速率、30 秒平均速率、本次流量、官方累计收 / 发,一张表看完。
有线设备和暂时没有速率数据的设备,用一张简洁的表格列出:设备名、IP、完整 MAC、接入端口、设备类型、RSSI、协商速率、DHCP 剩余租期。(光猫不提供有线设备的逐台速率,这不是脚本偷懒)
中兴光猫的老式界面没有任何 JSON 数据接口——所有数据都是服务器在渲染网页时直接拼进页面的。我们逐一抓包验证过(包括拓扑图自带的 topo_refresh.gch 小接口,它只返回网口速率),想拿数据,只能请求整张页面。所以脚本只读最必要的几页:
| 页面 | 大小 | 用到的数据 | 读取周期 |
|---|---|---|---|
网络拓扑 topo_t |
约 139 KiB | Mesh 节点、每台无线终端的实时速率 / 信号 / 协商速率 / 在线时长 | 5 秒 |
PON 统计 pon_status_stat_info_t |
约 112 KiB | 各 GEMPORT 的累计收发字节 | 15 秒 |
LAN 口信息 status_lan_info_t |
约 139 KiB | 网口计数器、DHCP 设备清单 | 30 秒 |
Wi-Fi 信息 e8_status_wlan_info_t |
约 114 KiB | 各 SSID 计数器、信道 | 30 秒 |
为什么终端快、外网慢?因为两者的算法不同:
| 数据 | 分度值 | 说明 |
|---|---|---|
| PON / LAN / Wi-Fi 累计计数器 | 1 字节 | 64 位计数,实测已到数百 GB,不截断 |
| 终端实时速率 | 1 B/s | 光猫按字节计数再 ×8 换算成比特,所有值都是 8 的倍数 |
| 协商速率 / RSSI / 在线时长 | 1 Mbps / 1 dBm / 1 秒 | |
| 外网速率(脚本求导) | 约 0.5 bit/s | 单点误差主要来自光猫渲染页面的耗时抖动(约 ±100 ms),在 15 秒窗口上约 ±1%,且相邻两点互相抵消,不累积 |
光猫的 CPU 比路由器弱得多,后台也有一些不为人知的规矩。下面这些都是网友实机反馈、我们逐个抓包查清楚之后才定下来的设计,写出来也是为了让你放心:
_SESSION_TOKEN),旧令牌立即作废——这一点我们在实机上验证过。如果后台一直偷偷轮询,你在官方页面上点的任何操作都会因为令牌过期而被拒。callbackfuncReset),面板开多久都不会被这个定时器踢下线。400 Bad Request / 403 Forbidden 报错页:那是一次带着过期令牌的表单提交,F5 刷新没用(浏览器会把同一次提交原样重发),要在地址栏按回车。脚本会替你按这一下(15 秒内最多一次)。按默认设置,面板打开期间平均每 5 秒约 220 KB 的页面请求,光猫每次渲染约 0.2 秒,大部分时间它都是闲着的。
请先为浏览器安装一个用户脚本管理器:
不会装?看这篇:脚本如何安装?官方教程
http://192.168.1.1),输入账号密码登录。| 颜色 | 含义 |
|---|---|
| 🔵 蓝色 | 一切正常 |
| ⚪ 灰色 | 当前页面不是光猫登录后的主界面(比如还在登录页)。点开有分类引导,告诉你该怎么做、或者该装哪个版本 |
| 🔴 红色 | 上一轮读取失败,正在冷却,60 秒后自动重试。偶发一次不用管;一直红,通常是登录过期,刷新页面重新登录即可 |
装完没反应? 请先确认脚本管理器运行正常:浏览器扩展图标上应该能看到数字。详见 故障排查。
手机 Via 浏览器不生效? Via 默认的
document-idle注入时机无法生效,请在 Via 的脚本管理里把运行时期改成document-start或document-end。
管理地址比较特殊? 脚本默认匹配
10.*、172.16.*、192.168.*、zte.home以及任何start.ghtml页面。如果你的光猫不在这些地址上,请在脚本头部的@include/@match里自行添加。

脚本顶部暴露了全局 CONFIG 对象,可以按自己的光猫性能和习惯微调:
const CONFIG = {
refreshInterval: 5, // 【快组】无线终端速率(拓扑页)的轮询间隔(秒)。终端流量靠速率积分,周期越短越准;光猫性能弱,不建议低于 3
ponEvery: 3, // 【外网】PON 计数器每 N 个快周期读一次(默认 3×5s=15s)。外网总量由累计字节求差,周期长短不影响总量
slowEvery: 6, // 【慢组】LAN口 / Wi-Fi口 / 设备清单每 N 个快周期读一次(默认 6×5s=30s)
zeroGrace: 3, // 计数器连续 N 次轮询无增长,才判定速率为 0(沿用小米引擎的取值)
wanMinBytes: 1e8, // 外网口选择:GEMPORT 累计收发总量达到 100MB 即锁定为外网口
ratioExtremeUp: 10, // 极端上传判定阈值(上行/下行 > 1000%)
ratioWarnUp: 0.12, // 重度上传警告阈值(> 12%)
ratioExtremeDown: 0.01, // 极端下载判定阈值(< 1%)
calcMode: 1, // 比值条文案:1 上行/下行倍数模式,0 上行占总和比例模式
ratioThreshold: 7, // (仅 calcMode=0 时有效)上传占比报警阈值(%)
errorCooldown: 60, // 读取失败后静候多少秒再自动重试
autoStart: false // true:页面加载后自动开始采样;false:首次点开悬浮球才开始
};
问:为什么不像路由器版那样 1 秒刷新?
答:光猫没有数据接口,每读一次都要让它渲染一整张 100 多 KB 的网页,耗时约 0.2 秒;而且每读一页都会换发一次登录令牌。1 秒一次等于让光猫一直在给你画网页。5 秒 / 15 秒是在精度和负载之间反复权衡后的结果,CONFIG 里可以按自己光猫的性能调整。
问:为什么一关面板就不统计了? 答:因为光猫"一页一令牌"的机制——后台每读一页,你在官方页面上的令牌就作废一次。为了不影响你正常使用官方后台,脚本只在面板打开时工作。所以面板上的"本次"、"高精"、终端积分,统计口径都是面板打开期间;而"WAN总计"、"当前总计"来自光猫计数器,关面板期间的流量也照样算在里面。
问:终端积分和外网总量对不上? 答:正常。外网里还包含有线设备、光猫自身、IPTV 等流量;终端积分只统计无线终端,而且是对光猫给出的速率做积分,比不上计数器那样逐字节精确。看板上的"终端 / WAN"比例就是用来做这种交叉对照的。
问:能看有线设备的网速吗? 答:光猫不提供有线设备的逐台速率,只有 LAN 口的总计数器。如果某个网口下只接了一台设备,端口表里那一行的速率就是它的速率。
问:支持哪些型号?
答:目前在移动定制 ZXHN G7611V2(含 G1612 Mesh 子路由)上实测通过。理论上,所有使用中兴 E8 .gch 界面的光猫都能用,不同固件的字段可能略有差异。如果你的光猫显示异常,欢迎联系开发者:打开浏览器 F12 → 网络(Network) 抓包发给我适配(请先遮盖 MAC、宽带账号等隐私信息)。抓包样本,是让你的机型进入"成熟适配"最有效的方式。
问:会不会把光猫弄坏? 答:不会。脚本只做两件事:用 GET 读官方页面,在浏览器本地重新排版计算。它不提交任何表单,不修改任何配置,也不涉及固件。
| 品牌 | 版本 | 链接 |
|---|---|---|
| 中兴光猫(E8 / gch) | ✅ 本脚本 | Bro-Stat |
| 中兴路由器(问天 / 巡天 / 晴天 / 星云 / 小方糖等) | ✅ 专版 | ZTE-Stat_Max |
| 小米路由器 | ✅ 专版 | Mi-Stat_Max |
| TP-Link / 华硕 / 华为 / 腾达 / H3C / 锐捷 | 🧪 通用版 | 按品牌安装 |
| Home Assistant 智能家居联动 | 🏠 集成 | ZTE-Stat_HA(路由器版可用,光猫版暂未接入) |
文档介绍与架构设计见个人主页,强烈建议阅读。当然,我更欢迎你直接审计源码——通常比读简介惊喜得多。这不是一个简单的 UI 美化插件,而是一套针对混沌、离散数据源的测控处理算法。
本程序为"哥哥软件"范本:源码公开、免费提供,分享请使用官方链接。按"原样"提供,不对其适用性、稳定性、精密度或任何商业场景的合规性作任何担保。
无论选择何种授权路径,都必须保留对作者"哥哥科技"的显著署名。
"哥哥软件"与"徽章软件"有一定相似,但并非完全相同。它更像一个完整的免费软件,而不是"底层基础设施""框架"或"库",因此代码边界可以非常明晰:在主要使用我的作品构成的界面里,我的名字(无论是否构成法律意义上的署名)必须完整保留,不得篡改;但我并不要求你在更大的作品中处处显示、喧宾夺主。也就是说,即使我的署名强度很强,但是并不会贴在更大的作品的每一个角落。不过,一旦是引用我开发的代码为主的页面,那么我就是主,那么就必须要有不少于原作品次数的署名,而且必须出现在我主导的页面中。为免歧义,可以这样理解:
BroTech 等英文形式只能作为补充,不能替代。完整条款:哥哥科技许可证 显著署名附加条款 BroWare BY-NC 1.0 SUL-1.0
"在一个文明社会,干净的、不被监视与吸血的网络,是我们每个人的基本权利。"
Bro-Stat 光猫版 Copyright © 2026 哥哥科技 (BroTech) | 点击分享
Authored by 哥哥科技 · B站:哥哥科技 501430041