跳转至

从 OONI 公开数据看 8/13 台湾北部移动网络降速的 30 分钟

一起测 8 月 13 日的移动网络降速

台湾长期没有经历大规模的网络降速或断网。对日常生活来说是好事,对想理解网络异常的人来说,代表手上缺少对照的样本。OONI 是国际上长期在做网络封锁与连接质量观测的开源项目,任何人都能安装它的 App 参与测量,结果全部公开。台湾在里面的记录,一直呈现一个正常运作的网络。

8 月 13 日之前的 30 天,台湾三家移动运营商在 OONI 上留下 564 条成功的连接速度测试(测试项名称 ndt),下载中位数 12,425 kbit/s,低于 2,000 kbit/s 的只有 4 条,其中 2 条还是测量失败。kbit/s 是每秒传输的千比特数,数字越大越快,1,000 kbit/s 约等于 1 Mbps。

8 月 13 日 14:30 到 15:00,台湾北部七个县市的移动网络降速 30 分钟。两天前社区发出号召,请大家在降速时段执行 OONI Probe 的性能测试。当天全台留下 238 条连接速度测试与 235 条视频流测试(测试项名称 dash),其中在移动网络上完成的有 170 条与 168 条,来自 47 台设备。8 月 10 日中部场的同一个时段,全台湾的移动网络性能测量是 0 条。

号召的起点来自社区伙伴 mashbean(黄豆泥)。演习前他提议趁着难得的时间点找大家一起用 OONI 记录,两边于是分头准备,一边整理号召与操作说明,一边在当天实地观测。他把自己的记录写成另一篇文章,追到了演习公告结束之后网络仍然受限的情形,正好补上本文数据看不见的时段。两篇一起读,涵盖的时间才完整。

其中一部中华电信移动的手机,在降速时段测到 7881,709 kbit/s。台湾的公开数据里没有出现过同一量级的数字。需要先说明的是,数字来自单一设备留下的 6 条记录,足以作为一个完整的个案,不足以推论全岛或任何一家运营商的普遍状况。

本文记录的是网络状态。运营商是否确实执行指令、官方公布的数字精不精确,都不在讨论范围。台湾过去没有降速形态的数据,把 30 分钟的观测留下来是主要目的。以下的查询都免验证免密钥,读者可以自行重新执行一次。

整理数据的过程里,最实用的收获与降速本身无关,而是判读方法。降速与封锁在 OONI 数据上是两种完全不同的形态。封锁会让异常率飙升、留下确认封锁的记录,降速则完全不动判定字段,变化只出现在吞吐量与延迟的数值上。当天全台的网络连接测试异常率是 1.0%,与平常的 0.6% 落在同一个区间,确认封锁整天维持在 0,下降的只有速度。拿封锁判定的异常率去描述降速,会得到一个接近平常的数字,然后误以为什么都没发生。

先看当天数据的整体形态

把当天全台的连接速度测试按 15 分钟分组,社区动员会直接呈现在数据上。

  • 8 月 13 日各 15 分钟区间的连接速度测试条数,橙色为降速时段

{"description":"OONI ndt measurements per 15 minutes in Taiwan on 2026-08-13","data":{"values":[{"t":"13:00","n":3,"g":"一般时段"},{"t":"13:15","n":4,"g":"一般时段"},{"t":"13:30","n":11,"g":"一般时段"},{"t":"13:45","n":4,"g":"一般时段"},{"t":"14:00","n":9,"g":"一般时段"},{"t":"14:15","n":27,"g":"一般时段"},{"t":"14:30","n":13,"g":"降速时段"},{"t":"14:45","n":50,"g":"降速时段"},{"t":"15:00","n":31,"g":"一般时段"},{"t":"15:15","n":15,"g":"一般时段"},{"t":"15:30","n":2,"g":"一般时段"},{"t":"15:45","n":2,"g":"一般时段"}]},"mark":{"type":"bar","tooltip":true,"cornerRadiusEnd":4},"encoding":{"x":{"field":"t","type":"ordinal","title":"台湾时间(每 15 分钟)","axis":{"labelAngle":-45}},"y":{"field":"n","type":"quantitative","title":"连接速度测试条数"},"color":{"field":"g","type":"nominal","title":null,"scale":{"domain":["一般时段","降速时段"],"range":["#0089bf","#e65100"]},"legend":{"orient":"top"}}}}

号召文请大家设 14:35 的闹钟,行有余力再加 14:1515:10。三个尖峰都出现了,14:4515:00 的 50 条是全天最高点。前 30 天全台平均一天约 34 条连接速度测试,多数来自少数几台设备的自动排程,当天单一个 15 分钟区间就超过平常一整天。

各 15 分钟区间的完整条数
台湾时间 条数
13:0013:15 3
13:1513:30 4
13:3013:45 11
13:4514:00 4
14:0014:15 9
14:1514:30 27
14:3014:45 13
14:4515:00 50
15:0015:15 31
15:1515:30 15
15:3015:45 2
15:4516:00 2

各运营商的参与情况如下。AS 开头的编号是自治网络的全球标识符,运营商、企业、学校都有各自的号码,OONI 只记录到运营商层级,不记录使用者位置。设备数以 OONI 生成的匿名设备标识符(probe_id)去重计算。

运营商 8/13 条数 前 30 天条数 当天设备数
AS17421 中华电信移动 68 20 22
AS9674 远传 51 12 15
AS24158 台湾大哥大 55 538 9

三个数值列都是连接速度测试的数量,前两列的单位是测量条数,最后一列是不重复的设备数。一部手机测三次算 3 条、1 台设备。

中华电信移动与远传原本是台湾 OONI 数据里覆盖最少的两家。一个下午的测量超过了两家过去 30 天的累积。台湾大哥大的前 30 天条数本来就高,来自少数设备的长期自动执行,当天新增的 9 台设备是过去没有的分布。

数据上分不出谁是看到号召才测的。App 里的性能测试是一张内置卡片(编号 00107),全球使用者点下去执行的都是同一张,当天光是台湾以外就有上千条带着同一个编号。号召的效果只能从前后量的对比推估,看不到个别参与者的来源。

放大到一部手机的 30 分钟

设备标识符可以把同一部手机的多条测量串起来。当天有一部中华电信移动的 Android 手机在降速前后都执行了测试,两个性能测试项各留下 6 条。

  • 同一部手机的下载与上传吞吐量,灰带为降速时段。纵轴为对数坐标,数据跨两个多数量级。13:33 到 14:36 之间没有测量,线段在此断开

{"description":"Download vs upload throughput of a single mobile device during the 2026-08-13 throttling drill","layer":[{"data":{"values":[{"s":"2026-08-13T14:30:00","e":"2026-08-13T15:00:00"}]},"mark":{"type":"rect","opacity":0.12,"color":"#546e7a"},"encoding":{"x":{"field":"s","type":"temporal"},"x2":{"field":"e"}}},{"data":{"values":[{"t":"2026-08-13T13:32:00","d":"下载","seg":"降速前","v":89510},{"t":"2026-08-13T13:33:00","d":"下载","seg":"降速前","v":174682},{"t":"2026-08-13T14:36:00","d":"下载","seg":"降速中","v":788},{"t":"2026-08-13T14:39:00","d":"下载","seg":"降速中","v":881},{"t":"2026-08-13T14:51:00","d":"下载","seg":"降速中","v":1565},{"t":"2026-08-13T14:52:00","d":"下载","seg":"降速中","v":1709},{"t":"2026-08-13T13:32:00","d":"上传","seg":"降速前","v":21510},{"t":"2026-08-13T13:33:00","d":"上传","seg":"降速前","v":16348},{"t":"2026-08-13T14:36:00","d":"上传","seg":"降速中","v":26300},{"t":"2026-08-13T14:39:00","d":"上传","seg":"降速中","v":31789},{"t":"2026-08-13T14:51:00","d":"上传","seg":"降速中","v":22370},{"t":"2026-08-13T14:52:00","d":"上传","seg":"降速中","v":32695}]},"mark":{"type":"line","strokeWidth":2,"point":{"size":70,"filled":true},"tooltip":true},"encoding":{"x":{"field":"t","type":"temporal","title":"台湾时间","axis":{"format":"%H:%M"},"scale":{"padding":18}},"y":{"field":"v","type":"quantitative","scale":{"type":"log","domain":[500,250000],"nice":false},"title":"吞吐量 kbit/s(对数坐标)"},"color":{"field":"d","type":"nominal","title":null,"scale":{"domain":["下载","上传"],"range":["#0089bf","#e65100"]},"legend":{"orient":"top"}},"detail":{"field":"seg","type":"nominal"}}}]}

下载的两段落差两个数量级,上传的两段几乎在同一个高度上。

前两条在降速开始前约一小时,后四条在降速时段内。下载中位数由 132,096 kbit/s 降到 1,223 kbit/s,两个测试项各自算出的比值是 1/1081/88。放回台湾数据的脉络看,落差更明显:中华电信移动在前 30 天的 18 条测量里,最低值是 42,197 kbit/s,降速中的 788 kbit/s 是该运营商在公开数据上前所未见的量级。

同一批测量还记录了往返延迟与重传率,六条的完整数值如下。

台湾时间 下载 上传 流媒体比特率 最小 RTT 平均 RTT 重传率
13:32 89,510 21,510 138,513 18.39 66.78 0.000%
13:33 174,682 16,348 119,179 17.85 82.05 0.001%
14:36 788 26,300 1,308 16.85 168.40 0.522%
14:39 881 31,789 1,608 19.97 137.24 0.202%
14:51 1,565 22,370 1,624 18.72 130.05 0.000%
14:52 1,709 32,695 821 18.28 114.79 0.000%

前三个数值列的单位是 kbit/s,数字越大越快,其中 1,308 kbit/s 大致相当于标清的流媒体。两个 RTT 列的单位是毫秒(ms),数字越小代表数据包来回一趟越快,最小 RTT 取整段测试中最快的一次,接近线路本身的实际距离,平均 RTT 则把途中排队的时间也算进去。重传率是需要重发的数据包所占比例。

解读吞吐量时要记得一件事,连接速度测试的对端是 M-Lab 的服务器,数值里同时包含最后一公里与到 M-Lab 节点的国际线路,单条结果无法把两段分离。延迟字段正好回应该项疑虑:最小 RTT 全程维持在 17 到 20 ms,与数据包路径未改变的情形一致,也降低了「速度变化来自国际线路」的可能。平均 RTT 从 67 到 82 ms 升到 115 到 168 ms,代表数据包在某处出现队列延迟(queuing delay)。重传率四条里有两条从降速前的近乎 0 升到 0.522%0.202%,相对变化不小,绝对值仍低于 0.6%,较符合延迟发送而非大量丢弃的形态。

三个字段合起来,构成流量整形(shaping)在数据上的特征。若手段是丢弃数据包,重传率会上升得更明显。若成因是信号劣化或换了基站,最小 RTT 通常会跟着变动。以上判读同样建立在单一设备上。

行政院对演练做法的说明是核心网络限流,将移动网络下载速率调降至 256KB2。原始说法没有标明单位,若解读为每秒 256 KB,换算后是 2,048 kbit/s。若解读为 256 kbit/s,量级则完全不同。本文不做数值精确度的比对,列出官方说法是让读者知道公布的量级落在哪里。

没有降速信号的测量撑起了对照

47 台设备里,46 台在降速时段测到的是正常速度。降速时段三家移动运营商的下载中位数是 42.2 Mbps,降速前是 53.2 Mbps,恢复后是 58.5 Mbps,三个时段落在同一个量级。

正因为有整批正常数值垫底,单一设备的 788 kbit/s 才能被认定是特殊的。若当天所有人都测到低速,合理的解释会变成全台网络普遍变慢,或当天的一般波动。若只有一部手机在测,低速也可能来自该设备自身的状况,例如信号不良或后台程序占用带宽。同时段有 32 台设备执行同一组测试,其中 31 台正常,单一设备的异常才站得住。

号召文请不在降速范围的人也测一次,用意即在于此。范围外的测量不是白测的,它们决定了范围内的数字能不能被解读。人在台南、在高雄,或当天根本不在台湾,只要在同一个时间点按下执行,数据都落在同一个公开数据库里,都是对照的一部分。

当天全球有数千条同样的性能测试在执行,台湾的差别只在于有明确的事件与时间边界可以对应。缺了对照组,剩下的就只是一个孤立的低速数字,说明不了任何事。

体感怎么对应到字段

社区没有做体感问卷,以下从数据回推当时使用手机会遇到的状况。

视频转圈圈

视频流测试会记录开始播放前的等待时间。降速前的两条都是 0 秒,降速中的三条分别是 0.12 秒、0.12 秒与 5.29 秒。最后一条等了超过五秒缓冲才开始播放,正是点开视频后盯着圈圈转的等待时间。

发消息、传照片出去反而顺畅

降速中的四条上传分别是 26,30031,78922,37032,695 kbit/s,与降速前的 21,51016,348 kbit/s 相比没有下降。上传与下载的倍率达到 33、36、14、19 倍。限流是单向的,只作用在下载方向。单向限流也解释了号召文提醒过的一件事:测量结果的上传在降速期间仍然顺畅,数据能即时发出,不需要等网络恢复后补传。

点下去要等一下才有反应

平均 RTT 翻倍,每一次点击到画面更新之间的空档会被拉长。

网页还是打得开,只是慢

降速时段全台有 1,893 条网络连接测试(Web Connectivity),异常率 1.0%,降速前与恢复后都是 0.6%。确认封锁的条数在所有时段皆为 0。网站连得到,Tor 与 Psiphon 也连得上,降速时段的 33 条 Tor 测试与 33 条 Psiphon 测试异常数都是 0

降速的 30 分钟在数据上呈现为速度下降,连接本身没有中断。

降速与断网在数据上是两种形态

OONI 的多数测试项在做封锁判定,例如网络连接测试、Telegram、Signal。真正的封锁或断网发生时,异常率会飙升、出现确认封锁的记录,严重时测量直接失败,连报告都发不出来,数据库里留下的是一段空白。降速时连接全部成功,报告照常发出,判定字段一动也不动。

封锁或断网 降速
连接是否成功 大量失败 全部成功
异常率 明显上升 不动
确认封锁 可能出现 维持 0
吞吐量 未必反映 明显下降
该看哪一组测试项 有封锁判定的测试项 性能测试项的数值

判准因此很清楚。想观测降速,要看性能测试项的数值。想观测封锁,要看有判定的测试项。两者用错了,得到的数字都会指向错误的结论。

号召文事前只请大家执行性能测试,原因也在于此。限速期间执行有封锁判定的测试项,手机端大量超时而辅助服务器一切正常,比对出来会被标成封锁的签名,等于在台湾的公开数据里注入一批看起来像审查的记录。当天的结果显示假信号没有出现。

两种形态都可以自行查看。台湾 8 月 13 日的逐小时分布里,确认封锁整天维持在 0,降速的一小时同样为 0。OONI 团队查证过的封锁事件收在 Findings,每则都连着对应的测量数据,可以看到确认封锁的条数在事件期间如何上升。两边查的是同一个数据库、同一组字段,差别只在数值。

结论怎么从公开数据得出

第一步,把时间区间内的测量捞出来

measurements 端点免验证,接受精确到秒的时间区间。

https://api.ooni.org/api/v1/measurements?probe_cc=TW&test_name=ndt
  &since=2026-08-13T06:00:00Z&until=2026-08-13T08:00:00Z&limit=200

所有时间一律为 UTC,台湾时间需减 8 小时,降速时段对应 06:3007:00。要取台湾时间的一整天,起讫要往前推 8 小时,写成 2026-08-12T16:00:00Z2026-08-13T16:00:00Z。返回的每一条都带网络编号(probe_asn)与测量编号(measurement_uid)。条数超过 limit 时返回里会有 next_url,要逐页取完才不会漏数据,当天的连接速度测试就有 238 条,一次 limit=200 取不完。

第二步,取原始 JSON 拿数值

列表本身不含吞吐量,要再开每一条返回的 measurement_url。连接速度测试的数值在 test_keys.summary,包含下载(download)、上传(upload)、最小往返延迟(min_rtt)、平均往返延迟(avg_rtt)与重传率(retransmit_rate)。视频流测试的数值在 test_keys.simple,包含比特率中位数(median_bitrate)与播放等待时间(min_playout_delay)。

第三步,剔除非移动网络的测量

原始 JSON 的网络类型字段(annotations.network_type)会标记移动网络(mobile)、Wi-Fi(wifi)、有线(wired_ethernet)或 VPN(vpn)。当天 238 条连接速度测试里,只有 170 条标记为移动网络。少了筛选,家用光纤与 VPN 的测量会混进来,而两者本来就不在降速范围内。

第四步,用设备标识符串起同一部手机

标识符在原始 JSON 的顶层,字段名是 probe_id,与吞吐量所在的 test_keys 是平行的两个位置。值是 OONI 为每台设备生成的匿名哈希,同一部手机的多条测量会带同一个值,把值相同的测量收在一起就是该设备当天的完整记录。当天 238 条连接速度测试里有 18 条没有带标识符,无法归户到任何一台设备,本文的设备数也不计入。

单条测量难以独立判读,因为手机型号、位置、信号强度全都不同。同一部手机的自身前后对照直接得多。本文的关键表格即由此得出。

第五步,排除误判

两个当天实际遇到的例子。

一台台湾大哥大的设备在 14:54 测到 3,124 kbit/s,看起来像降速。但它在当天 20:11 又测到 3,126 kbit/s,视频流比特率整天落在 2,0722,909 kbit/s 之间。数字全天稳定,来自该号码本身的速率上限,与演练无关。只看降速时段的数据,很容易把它算进证据里。

降速时段另有 5 条测量完全失败,错误分别是连接超时、DNS 查询失败与连接被拒。失败的成因无法从单条结果判定,可能来自降速,也可能来自一般的连接问题,因此不列入。

第六步,建立对照组

8 月 10 日、11 日、12 日的同一个时段,移动网络的性能测量没有任何一条低于 2,000 kbit/s,8 月 12 日的 7 条里最低是 8,399 kbit/s。低于 2,000 kbit/s 的测量只出现在 8 月 13 日的降速时段,当天其他时段都没有。有了对照组,才能把观察到的低速与一般波动分开。

超出本批数据范围的问题

位置

OONI 记录国家与 ASN,不记录县市,也不记录基站位置。从数据看得出一条测量来自 AS17421,看不出手机当时在台北还是台南。47 台设备里只有 1 台留下明确的降速信号,最可能的解释是其他人不在降速的七个县市内,但公开数据无法验证。

不记录位置是 OONI 的设计选择,理由是保护参与者。在审查严重的国家,测量者的位置信息会直接转为人身风险。该取舍是对的,代价是地理范围明确的事件难以精确对位。想补上位置维度,需要社区自己另外收集,例如一份自愿填写的县市登记表单,且只收到县市层级、不与设备标识符对应,避免补回 OONI 刻意拿掉的追踪能力。

跨运营商的数据覆盖度

留下完整前后对照的设备集中在中华电信移动一家。台湾大哥大与远传在降速时段的低值都是测量失败,没有可判读的数值。落差来自参与者分布与数据落点,不代表各运营商的网络状况有差异。要看到不同运营商在同一时段的形态,需要每一家都有设备完成降速前、降速中、恢复后的测量。

恢复所需的时间

留下完整降速记录的手机,最后一条测量在 14:52,之后没有再执行,本文的前后对照到此为止。恢复后的 30 分钟有 38 条测量,全部来自没有降速信号的设备,同一台设备跨越降速中与恢复后的比较无从谈起。

公开数据里留着恢复期的线索,是本文的筛选条件把它挡掉的。台湾大哥大的一台设备在 15:08 测到 55 kbit/s,两分钟后的流媒体测试返回 0,两条都落在演习公告的结束时间之后。本文的统计没有纳入,因为两条的网络类型字段都是空的,而为了排除固网与 VPN,本文只计入明确标记为移动网络的测量。筛选挡掉噪声的同时,也挡掉了信号。

补上该时段的是 mashbean 的实地观测。他记录到 15:08 的下载仍然只有 55 kbit/s,流媒体测试从超时转为完成,一直到 17:47 才恢复到可用的水平,并据此主张恢复时间应该纳入韧性演习的成效指标,功能恢复与回到基准要分开判读。设备在谁手上、当时走的是不是移动网络、人在哪个县市,OONI 不记录的维度,只有测量者本人说得出来。

把两份观测的时间点排在一起,当天下午的轮廓才完整。

  • 当天下午的事件时间轴,灰带为公告的降速时段,纵轴依数据来源分列

{"description":"Timeline of drill events and observations on 2026-08-13 afternoon","layer":[{"data":{"values":[{"s":"2026-08-13T14:30:00","e":"2026-08-13T15:00:00"}]},"mark":{"type":"rect","opacity":0.12,"color":"#546e7a"},"encoding":{"x":{"field":"s","type":"temporal"},"x2":{"field":"e"}}},{"data":{"values":[{"t":"2026-08-13T14:30:00","src":"行政院公告","e":"降速开始"},{"t":"2026-08-13T15:00:00","src":"行政院公告","e":"降速结束"},{"t":"2026-08-13T14:36:00","src":"本文数据","e":"788 kbit/s,全天最低"},{"t":"2026-08-13T14:39:00","src":"本文数据","e":"881 kbit/s"},{"t":"2026-08-13T14:52:00","src":"本文数据","e":"1,709 kbit/s,该设备最后一条"},{"t":"2026-08-13T15:08:00","src":"本文数据","e":"另一台设备 55 kbit/s"},{"t":"2026-08-13T15:10:00","src":"本文数据","e":"流媒体测试返回 0"},{"t":"2026-08-13T17:47:00","src":"mashbean 观测","e":"恢复到可用水平"}]},"mark":{"type":"point","size":110,"filled":true,"color":"#0089bf","tooltip":true},"encoding":{"x":{"field":"t","type":"temporal","title":"台湾时间","axis":{"format":"%H:%M"},"scale":{"padding":26}},"y":{"field":"src","type":"nominal","title":null,"sort":["行政院公告","本文数据","mashbean 观测"]},"tooltip":[{"field":"t","type":"temporal","format":"%H:%M","title":"时间"},{"field":"e","type":"nominal","title":"事件"}]}}]}

图上最长的一段是空白。公告写的结束时间是 15:00,最后一条低速记录落在 15:08,实际恢复到堪用是 17:47。三个时间点各自代表不同的意思,中间隔了将近三小时。

时间轴的完整事件列表
台湾时间 发生的事 依据
14:30 公告的降速开始时间 行政院公告
14:36 单一设备测到 788 kbit/s,全天最低 本文
14:39 同一设备 881 kbit/s,上传仍有 31,789 本文
14:52 同一设备最后一条,1,709 kbit/s 本文
15:00 公告的降速结束时间 行政院公告
15:08 另一台设备仍测到 55 kbit/s 本文与 mashbean
15:10 同一台设备的流媒体测试返回 0 本文与 mashbean
17:47 恢复到可用水平 mashbean 的实地观测

单一设备的代表性

本文对限流方向与层级的描述,建立在一部手机的 6 条测量上。数字内部互相一致,两个独立测试项也指向同一个结论,作为单一案例的记录是完整的。要谈到分布、平均降幅或置信区间,需要的样本量远不止于此。

另外,47 台设备都是看到号召后自愿参与的社区成员,并非随机抽样。要用来做跨运营商或跨区域的推论,需要先处理选样偏误。

一起来研究 OONI 的公开数据

本次观察没有用到特别的工具,全部来自公开 API 与一点数据整理。OONI 的数据有四个入口,用途各不相同。

  • OONI Explorer:网页界面,适合查单条测量、看某个国家或 ASN 的趋势,无须写程序。
  • Aggregation APIhttps://api.ooni.org/api/v1/aggregation,免验证免密钥,可依国家、测试项、ASN 切分做统计。起讫只接受日期,适合看天级以上的趋势。
  • Measurements APIhttps://api.ooni.org/api/v1/measurements,接受精确到秒的时间区间,返回逐条记录。本文的主要数据出自此端点。
  • AWS S3 公开数据集ooni-data-eu-fra,逐条原始 JSON,适合需要检视测量细节或做大规模分析的研究。取用方式与 CSV 输出格式写在 ASN 观测数据抓取与分析,社区维护的抓取程序也在该页。

不写程序也能参与。装一次 OONI Probe 并执行,每一条测量都会进入公开数据库,成为台湾网络状态的长期记录。前 30 天全台平均一天只有 34 条连接速度测试,多一部手机的日常测量,基准就厚一分。下一次遇到非预期的网络变慢时,能不能分辨是自己的问题还是网络的问题,取决于平常累积了多少。

台湾还有不少题目尚待投入。移动网络的长期基准目前仍然很薄,三家运营商的覆盖差了一到两个数量级,细节见 ASN 自治网络观测数据分析。要判断某个问题该用哪个测试项,OONI 测试项速查表整理了每个测试项测量什么、规格状态,以及台湾是否有数据。

判读数据时最常见的误解,是把异常(anomaly)当成封锁。异常只代表测试未照预期完成,成因包含审查、网络不稳、ISP 暂时故障,以及测试程序本身的问题。以 Tor 测试为例,加拿大、瑞士、新西兰等没有审查的国家,异常率同样落在 16%22% 之间。把异常率直接当成封锁率会产生假指控。

演习依分区实施,北部场是今年的最后一场,相同条件要等到明年。本次留下的数据是台湾目前唯一一份有明确情境对应的降速记录,之后遇到非预期的网络劣化时,总算有可以比对的样本。

想一起整理数据、规划下一次的观测,或是对 OONI 公开数据有任何问题,欢迎到社区的 Matrix Public Space 讨论。

数据与前提

查询日为 2026-08-14,测量数据仍会持续补传,之后重查可能得到略高的条数。所有日期以台湾时间为准,换算成 API 接受的 UTC 时再往前推 8 小时。以下的 test_name 等参数为 API 实际接受的值,照列以便重现查询。

当天逐条测量用 measurements 端点,probe_cc=TWsince=2026-08-12T16:00:00Zuntil=2026-08-13T16:00:00Z,对应台湾时间 8 月 13 日整天。test_name 分别为 ndtdashweb_connectivitytorpsiphon。降速时段等时段统计另以 UTC 06:0007:30 的区间查询。

吞吐量、往返延迟与设备标识取自每条测量的原始 JSON,经由 measurements 返回的 measurement_url 取得,字段位置见上方的观察流程。本文的移动网络测量仅计入网络类型为 mobile 者,排除 Wi-Fi 与 VPN。设备以 probe_id 去重,部分测量没有带值,未带值者不计入设备数。当天三家的条数为该 ASN 的全部测量,与前 30 天基准采同一种计算方式,扣掉 2 条 VPN 与 3 条未标记网络类型后,在移动网络上完成的分别是 67、50 与 52 条。移动网络的 170 条里另有 1 条来自 AS9416,不属于三家全岛性运营商,未列入运营商表格。

前 30 天的移动网络基准(564 条、中位 12,425 kbit/s、低于 2,000 kbit/s 的 4 条、中华电信移动最低 42,197 kbit/s)用 measurements 端点,probe_cc=TWtest_name=ndtsince=2026-07-13T16:00:00Zuntil=2026-08-12T16:00:00Z,对应台湾时间 7 月 14 日到 8 月 12 日,probe_asn 分别为 AS24158AS17421AS9674,同样逐条取原始 JSON 后剔除非移动网络的测量。

对照日用同样的 measurements 参数,日期换成 2026-08-10、2026-08-11 与 2026-08-12,时间区间为 UTC 05:3007:30

本文不公开任何个别设备的标识符。该字段虽然出现在 OONI 的公开数据中,写出具体值等于为单一参与者的测量历史建立索引,与测量本身的目的无关。

演习细节以行政院公告与各电信运营商公告为准1


数据来源:OONI measurements 与 aggregation API(查询条件见上方,测量数据授权 CC BY-NC-SA 4.0)、ASN 名称取自 RIPEstat