
各位 V 友好,最近闲着没事逆向了某省联通的官方宽带测速平台(就是装维上门给你"测速达标"签字那个),结果越看越上头。
分享一下发现,代码层面的东西,没有主观臆测。
联通测速系统的算法里埋了四个机制,叠加效果就是:不管你实际网速多少,测出来几乎必定"达标"。
公平起见,算法里有几个设计是业界通用的,没毛病:
这些没问题。问题在后面。
speed = downloadVal / elapsed * 1000 * 1.04 // 下载 speed = uploadedSize / elapsed * 1.048 // 上传 计算完实际速度后,下载乘 1.04 ,上传乘 1.048 。
官方可能会说"补偿 TCP/IP 协议开销"。但 TCP header 20 bytes + IP header 20 bytes ,在 MTU 1500 的帧里占比约 2.7%。HTTP header 在持续流式传输大文件时占比可忽略。
4~5% 的"校正"显然超出了协议开销的范畴。 而且方向只往上调,从不往下。
测速过程中每 200ms 采样一次,20 秒下来大约 90 条有效记录。然后:
records.sort((a, b) => a - b); records = records.slice(5 * minLostDataTime); // minLostDataTime=3, 砍掉最低 15 条 // 最高的呢?不动。 任何一本统计学教材都会告诉你,处理异常值要双边修剪或者用中位数。只砍低不砍高,这不叫数据清洗,这叫 cherry-picking 。
这段逻辑比较阴间:
topAvg = 取最高 10 条记录的平均值 totalAvg = 全部记录的平均值 if (totalAvg < topAvg * 0.96) { // "平均值不够高" → 全部替换为峰值附近的随机数 records.forEach((val, i) => { records[i] = topAvg * random(0.99, 1.0); }); } 意思是:如果你的网速有波动(平均值低于峰值的 96%),那实际测量数据全部丢弃,替换为 峰值 × random(0.99, 1.0)。
现实中的网络环境哪有不波动的?所以这段代码大概率每次都会触发。效果就是:最终上报的数据全是接近峰值的假数据。
这是最炸裂的一段。
服务端下发了这么几个参数:
| 参数 | 值 | 含义 |
|---|---|---|
wifiLossRate | 0.6 | 最多补偿签约带宽的 60% |
wifiMaxLossValue | 600 | 单次最多加 600 Mb/s |
standardValue | 0.9 | 低于签约 90% 就触发 |
if (measured < bandwidth * 0.9 && measured > bandwidth * 0.1) { gap = ceil((bandwidth * 0.9 - measured) / bandwidth * 100); compensation = min(gap / 100, 0.6) * bandwidth; compensation = min(compensation, 600); speed += compensation * 1000 * 125; // 直接加到速度上 } 来,算一笔账:
签约 2000M ,实测 1200 Mb/s
gap = (1800 - 1200) / 2000 × 100 = 30
compensation = min(0.3, 0.6) × 2000 = 600 Mb/s
上报 = 1200 + 600 = 1800 Mb/s → 达标
实际呢?只有 1200 。
注意,补偿参数是服务端控制的,也就是说运营商可以随时调整这个"作弊力度"。想让达标率高一点?把 wifiLossRate 调大就行了。
| 层级 | 机制 | 效果 |
|---|---|---|
| Layer 1 | ×1.04 校正因子 | 基础膨胀 4% |
| Layer 2 | 只删低值 | 拉高均值 |
| Layer 3 | 峰值替换 | 消灭波动,锁定高位 |
| Layer 4 | WiFi 补偿 +600M | 兜底,不达标也给你补到达标 |
这四层从下到上,覆盖了从"轻微美化"到"明目张胆造假"的完整光谱。你的宽带在这套系统面前,想不达标都难。
_0x585b('0x2c') 这种,但混淆程度不高,字符串表基本明文MD5("speedInternal-" + secret + timestamp) 然后 Base64 ,写死的密钥用 Python 复现了完整测速流程,保留合理部分(多线程、预热),去掉四个作弊机制。
同一条 2000M 宽带:
| 官方系统 | 去掉修正 | |
|---|---|---|
| 下行 | "达标" | ~1400 Mb/s |
| 上行 | "达标" | ~365 Mb/s |
1400/2000 = 70%,实际并不达标。但在官方系统里,WiFi 补偿一加,峰值一替换,妥妥的"达标"。
我不反对运营商考虑 WiFi 衰减的因素。但正确的做法是在报告里注明"有线/无线"测试环境和修正说明,而不是在算法里偷偷加数据,给用户一份失真的报告,然后让装维拿着这份报告让你签"速率达标确认单"。
校正因子可以商榷,但 WiFi 补偿和峰值替换就是纯粹的造假,没有任何技术合理性。
用户买的是带宽,不是一份永远达标的测速报告。
以上分析基于前端 JS 逆向,所有结论可从源码直接验证。代码已脱敏,有兴趣的同学可以自己抓包看看。
技术讨论欢迎,键政免入。
1 lyz2754509784 3 天前 via Android 有没有逆向过江苏联通的测速网站 https://jsspeedtestwebv4.js165.com:8091/h5/broadband.html 装维上门测速应该也是用的这个,也就是所谓的测速正常…目前江苏联通宽带只有这个网站和全球网测的江苏南京联通节点是可以正常测到合同标称的宽带的,其余所有网站/节点上行都只有 2-3m ,有的软件可能有 5m ,包括微信发文件类的实际使用也限制在 500kb/s 左右…更离谱的是 iPhone14pro 用这个网站能跑出物理设备上限的速度来 |
2 windmano OP @lyz2754509784 每个地区的测试网址应该是隔离的,我看了一下你这个测速网址只有江苏的 IP 可以打开 |
3 Cert 3 天前 via Android 太可怕了…… 所以我都是用 https://h3.speed.cloudflare.com/ 这个测速站。虽然测出来结果不会很好看,但是至少真实。我们办宽带是为了访问内容,所以从 CDN 入口反馈速度会比较接近真实打开网页的情况。 而国标的宽带标准,也只测到达运营商 BARS 的速度,其实非常的片面。 |
4 Cert 3 天前 via Android |
5 kanezeng 3 天前 倒是没有想过还能这么搞啊,不过一直都直接用 speedtest.net ,虽然只能连上海联通的测试点了,不过结果倒都是超标的,看来联通也是看地区,北京联通目前还行,不知道未来如何了。 |
6 wdv2ly 3 天前 符合联通一贯作风 |
7 kkwa56188 3 天前 触目惊心! 不过一定有 v 友轻描淡写的说没什么, 并且找一些不痛不痛的理由. |
8 YGBlvcAK 3 天前 via Android 全球网测有补偿吗? |
9 Aruforce 3 天前 via Android 是否可以主张不认同他们的测速软件? |
10 my2492 3 天前 作弊最很的还得华为花瓣测速,千兆口真能测出千兆,别人都是 930-940 |
11 Vesc 3 天前 畜生啊 |
12 stinkytofux 3 天前 运营商现在的限速太恶心了, 完全就是白名单机制. |
13 winterx 3 天前 我一般都是用中科大测速 |
14 LxnChan 3 天前 你法我笑.jpg 想不到都 2026 年了还有人在纠结这个,注意一下通信业务是国家专营,是寡头垄断行业。就算他明天说宽带测速能达到 20%就算达标你又能怎么样呢,不过是想体面一点罢了。 |
15 qwvy2g 3 天前 via Android 就这还有人说商宽补贴家宽,补贴同一个产品至少质量不能差太多吧,可是现在商宽和家宽差距大的和基本上就是两个产品。此外如果家宽想提升质量为什么是办理商宽,而不是提供一个价格稍高,但是质量和商宽一样的家宽,这才叫补贴。 |
16 chqome 3 天前 有一个 boce.com/speed 也可以测速 |
17 yinmin 3 天前 via iPhone 测速网站测 500Mbps 以上基本都测不准。真正测速的方式是:多开几个测速网站同时测速把带宽拉满,然后到任务管理器里看网卡的流量值 |
18 knightdf 3 天前 火钳刘明 |
19 fstab 3 天前 我记得我最早使用宽带的时候,好像是 09 年,联通 30 元 4M 单宽带,还是个小黑盒子,网线接入。 到了 11 年,升级到了融合套餐 41 元,卡的通话和流量忽略不计,宽带 20M ,继续用着小黑盒子。 然后 18 年成家后,刚好是竞争的高峰期,移动推出了 18 元、38 保底送宽带和 IPTV ,宽带 50M ,58 元好像是 100M 。 电信 58-59 元保底融合,联通和电信差不多价格,也是保底融合,宽带 100M 。保底融合套餐基本能满足一家三口的需求。 时间到了 20 年,三大运营商响应国家政策,不论资费、宽带低于 100M 的,免费升级到 100M , 那个时候,我的移动宽带从 50M ,免费升级到 100M ,上下行从 50M 对等变成 100M 对等。 20 年过后,能看到宽带从最低的 100M ,变成了 300M ,但是资费并没有增加,而且因为竞争激烈,携号转网等原因,资费还有一些下降的情况。 22 年左右,各地营业厅开始宣传 1000 兆宽带,资费有部分提升,但是提升也不明显,而且对于普通家庭用户的提升感知并不明显,导致高价值套餐并没有太多人去办理,只能通过哄骗的方式,比如免费体验几个月,但是随之带来的是投诉退费,转网,退网。然后又陷入了降价竞争的局面。 直到 25 年之前,都一直陷入这个局面,25 年开始,移动、电信开始想办法追求利润,不对套餐进行过度打折做竞争,但是联通因为用户量少,还在通过套餐打折的形式来做竞争。 26 年,竞合开始,现在三大运营商开始都不打折了。 我能回忆的时间线大概就是这样子,历史的宽带价值来看, 从政策角度:我觉得提速降费这个政策是真正意义上的落地。 我的角度:从以前联通在市区医院内都出现无信号的情况,到现在乡村都能保持 4G 满信号,镇及以上能保持 5G 信号,说明运营商的基础建设中,也是投入了大量的人力物力,而且我是真正得到了实惠,现在的套餐比之前 09 年还要便宜,量大管饱,并且能满足一家五口,三代人的需求。 从运营商角度:完成了国家交代的任务,但是舍弃了巨额利润,如果国企的利润是给国家的,所以相当于国家少赚钱了。 矛盾点: 用户:办理的宽带,我想怎么用为什么要受运营商管理和约束。 运营商:这点钱,很难办啊。 国资委:运营商赚钱能力越来越弱了,一群饭桶。 |
20 fstab 3 天前 |
21 crc8 3 天前 稳中向好! |
22 zhangfeiwudi 3 天前 我的天呐,这也太恶心了吧,联通怎么这么畜生啊 |
23 Soo0 3 天前 常规操作? |
24 fstab 3 天前 @zhangfeiwudi #22 你还是太年轻,这算啥,你没见过更畜生的行为, 这个最多算是服务没达标,为了达标作弊,只是损害用户的权益。 像这些运营商的营业厅,外呼,还有线下地推骗中老人开用不上的高套餐(上了很多次新闻)、虚开用户权益的宽带卖给其他人(淘宝闲鱼上的部分单宽带)、携号转网故意拖着不给转(当地随便一个自有营业厅,都能听到用户的咆哮)、然后正常销户不给销,让欠费 3 个月自动停机,然后后面办卡又补缴滞纳金(办理业务的柜台都是这个说辞)等损害用户金钱上的利益相比,宽带不达标作弊都不算个事。 |
25 fstab 3 天前 Layer 4 WiFi 补偿 +600M 兜底,不达标也给你补到达标。 不知道楼主这么测试没。 WiFi5 160mhz 2x2mimo 协商是 1733mbps ,理论最大下载速度 150MB/s , 肯定是不可能跑满 2000M 的吧,这种会给补偿嘛? |
26 zhangfeiwudi 3 天前 @fstab #24 这么一说好像确实,我用移动一个月话费 78 ,只能上调套餐 无法下降,这几家运营商吃相都很难看 |
27 rulagiti 3 天前 哈哈哈哈哈哈,真聪明 |
28 jiminjohn0402 3 天前 都是 LD 企业,而且根本上也是程序员写的,没什么好说的,也什么都不敢说 |
29 fstab 3 天前 @zhangfeiwudi #26 我都觉得运营商现在之前的竞争,现在的竞合都搞得病态了,感觉根本不是正常市场激发出来的行为。 这 TMD 的搞的和上班一样,想要涨工资就得跳槽,想要资费便宜,就得携转。 |
30 slowman 3 天前 是你自己逆向的,还是 AI 逆向的? 是你的结论,还是 AI 的结论? 你确定全文没有 AI 幻觉?每个数字都是你确认过的? |
31 Actrace 3 天前 目前发现就电信比较实诚,没有作弊。 |
33 ff521 3 天前 @zhangfeiwudi #22 没办法只能远离,比如润美,要不说不定哪里就恶心你一下,你还反抗不了 |
34 sonnetbreeze 3 天前 @kkwa56188 那一定是联通的忠实用户 |
35 sonnetbreeze 3 天前 @Actrace 电信除了资费高,没话说 |
36 wuvvu 3 天前 @Actrace 电信的 https://10000.gd.cn 我用百兆网口能测出来 105Mbps ,也不合理吧 |
37 doumeki 2 天前 没懂,还能影响 windows 的监控速率吗? |
41 A1188 2 天前 via Android 电脑上测速目前推荐这个,还是很准的: https://dashabi.vip |
42 dream7758522 2 天前 via Android 前段时间中国电信 app 宽带测速,开飞行模式都能测速达标,我也是服了。 |