BreakHub
知识库排行榜与测试

排行榜怎么读

榜单上的每一列都有讲究:为什么用中位数、为什么有的工具排名是“—”、“仅服务商”开关到底过滤了什么,以及 GreatFire 排名那一列是怎么算出来的。

5 分钟阅读 · 发布于 2026年9月10日

排行榜看起来很简单:一列工具名,几列数字,一个名次。但如果你不知道这些数字是怎么算出来的,很容易得出错误的结论——比如把一个只被测过两次、碰巧撞上好时段的工具当成“最快的梯子”。每一列背后都有规则,而且这些规则和 GreatFire 翻墙中心的一致,所以两边的榜单可以直接对照。

中位数,不是平均数

速度、延迟、稳定性三列都是中位数。把某个工具在所选时间段内的所有测试按速度排序,取中间那个值,就是它的“速度(中位)”。

为什么不用平均?因为翻墙测速的数据分布非常偏。一个工具平时 1 MB/s,某天凌晨用户测出 20 MB/s——可能是那会儿线路空闲,也可能是用户忘了关本地缓存——平均数会被这一次拉高一大截,而中位数几乎不受影响。反过来也一样:偶尔一次被墙到 0 的失败,不会把一个平时表现稳定的工具拖到榜尾。GreatFire 的做法就是用中位数,我们沿用了。

延迟和稳定性同理。一次测试的延迟本身已经是那次测试 20 个样本的中位数,榜单上再对所有测试取一次中位数,等于“中位数的中位数”,对离群值很钝,这正是我们要的。

为什么至少 5 次、跨 48 小时

一个工具要进入排名(我们叫“入池”),得同时满足两个条件:在所选时间段内至少 5 次测试,并且首尾两次测试相隔至少 48 小时

5 次是个下限,不是统计学上多么严谨的数字,但它能挡掉最常见的噪音:某人装了个新工具,连着测三次,全是同一条线路、同一个时段。跨 48 小时的要求解决另一个问题——同一天里连测 5 次和分散在一周里测 5 次,信息量完全不同。GFW 的行为随时段变化,晚高峰和凌晨的体验可能是两个世界;能跨过两天以上的数据,至少经历过一次完整的昼夜周期。

不满足条件的工具并不会被藏起来。它们照样显示速度、延迟、稳定性和测试次数,只是名次那一列显示“—”,并且沉到已排名工具的下面。鼠标悬停在“—”上会看到提示。如果你看到自己常用的工具在那里,最直接的办法就是去 跑一次测试,多几次、隔几天,它就会进入排名。

名次怎么算,以及为什么会并列

名次不是按速度一列排的,而是三个指标综合。具体做法:

  1. 对池内每个工具,分别算出速度名次、延迟名次、稳定性名次。某个指标的名次 = 1 + 池内“严格比它好”的工具数量。速度越高越好,延迟越低越好,稳定性越高越好。
  2. 三个名次取平均,得到一个综合分(score),越小越好。
  3. 按综合分从小到大排,就是最终的“排名”。

第 1 步用的是所谓的 competition ranking:如果有三个工具速度都是 5.0 MB/s,且没人比它们更快,那它们的速度名次都是 1,下一个工具是 4,而不是 2。所以综合分会撞车,榜单上也就会有并列的名次。这不是 bug,是数据真的分不出高下。

有个细节:如果某个工具缺某项指标(比如所有测试都没有稳定性数据),那一项的名次记为“池的长度 + 1”,也就是排在所有人之后。这样缺数据不会白白占便宜。

举个例子。假设池里有 4 个工具,A 速度第 1、延迟第 3、稳定性第 1,综合分 (1+3+1)/3 ≈ 1.67;B 速度第 2、延迟第 1、稳定性第 1,综合分 1.33。B 排在 A 前面,尽管 A 的速度更快——因为 B 三项都不差。这就是为什么“速度最快”和“排名第一”经常不是同一个工具。

“仅服务商”开关

工具目录里每个工具有个 provider_type 字段:service(商业服务商,比如某某 VPN)或者 self-hosted(自建工具,比如 Shadowsocks、V2Ray 客户端、sing-box 这类)。

打开“仅服务商”后,入池条件多了一条:只有 service 类型的工具参与排名。为什么要有这个开关?因为自建工具的“速度”测的其实是你自己买的服务器和线路,跟软件本身关系不大。同样是 sing-box,有人用的是香港 BGP 机房,有人用的是美西廉价 VPS,中位数把它们混在一起,说明不了什么。而商业服务商的用户用的是同一批出口节点,中位数才有可比性。

想挑服务商就打开它;想看自建方案的整体水位就关上。

GreatFire 排名那一列

表格最右边一列是“GreatFire 排名”。它不是从上游页面抄下来的名次,而是:我们每次同步时会把 GreatFire 的聚合数据(每个工具的中位速度、延迟、稳定性、测试数、时间跨度)存成一份快照,然后用上面完全相同的算法在那份快照上重算一遍名次。

所以这一列和我们自己的排名列,区别只在数据集:我们的排名用的是本站数据库里的所有测试(导入的 + 本站实测的),GreatFire 排名用的是上游截至最近一次快照的聚合。两列不一致的时候,通常有三种原因:本站实测数据把某个工具推上或拉下了几名;快照有时差;或者两边的时间窗口边界差了几个小时。差一两名很正常,差很多才值得留意。

筛选器

默认时间段是 60 天,跟 GreatFire 一致。可选今天、7 天、30 天、60 天、90 天、全部。时间段越短,入池的工具越少,但越能反映“现在”的状态;时间段越长,数据越平滑,但可能包含已经失效的线路。

位置筛选是用户自己选择的所在地(中国大陆、俄罗斯、伊朗、土库曼斯坦、其他),不是从 IP 推断的,用了梯子之后 IP 本来就在国外,推断没意义。操作系统来自浏览器的 User-Agent。

“数据来源”可以选全部、只看 GreatFire 导入、只看 BreakHub 实测。后者目前样本少得多,但它是唯一带完整测试详情的数据。

数据多久更新一次

导入的 GreatFire 数据每小时的第 15 分钟增量同步一次,每天 03:30 UTC 做一次全量对齐。本站实测的结果提交后立即入库,榜单缓存 5 分钟,所以最迟 5 分钟后你能在榜上看到自己那一次。页面底部的“上次同步”显示最近一次成功导入的时间。

常见问题

为什么榜单第一名的速度不是最高的? 因为排名综合了速度、延迟、稳定性三项。一个各项都在前列的工具,会排在一个速度冠军但延迟垫底的工具前面。

为什么我刚测完,工具还是显示“—”? 入池要求至少 5 次测试且首尾相隔 48 小时以上。再测几次、隔一两天,条件满足后它就会出现在排名里。

我们的排名和 GreatFire 排名为什么不一样? 算法一样,数据集不一样。我们多了本站实测数据,快照也有几小时的时差。差一两名是正常波动。

中位数会不会被刷? 比平均数难刷得多。想把中位数抬上去,得让一半以上的测试都是高分,而且还得跨 48 小时。我们也保留了隐藏明显异常记录的能力。