我们如何测试,判定如何得出
本站所有判定都出自同一套流程:同时从中国大陆境内和境外抓取同一网址,再解释两者的差异。本页说明测量方式、由测量得出判定的规则,以及这些判定无法说明的事情。
测量方式
一次测试会抓取一个完整网址——协议、主机与路径合为一体——分别由中国大陆境内的多个探测点和境外(通常在美国)的对照探测点执行。每个探测点都会记录请求如何结束(curl 退出码)、域名解析到的 IP、应答是否来自并不运行 DNS 服务的主机、收到多少字节,以及跟随重定向后的最终地址。因此一次测试是若干条测量记录,判定则来自它们之间的比较。由于每个网址都独立测试,同一站点的首页与某篇文章可能得到不同判定,http 与 https 地址同样如此。
各检测器的判断依据
四个相互独立的检测器读取这些记录,各自寻找一种特定机制;最严重的信号决定该次测试的判定——只要有一种机制被证实,网址即为“被屏蔽”,即使其他检测器没有信号。
| 检测器 | 比较内容 | 是否需要对照成功 |
|---|---|---|
| 连接重置 | 比较每个中国大陆探测点是否出现美国对照没有的 TCP 重置 / 连接错误(curl 退出码;当站点托管在中国大陆境内时跳过)。 | 不需要 |
| DNS 污染 | 将每个中国大陆探测点解析到的 IP 与美国对照进行比较,并标记来自已知无效 DNS 服务器的应答。 | 不需要 |
| 重定向到中国大陆 | 比较最终(重定向后)URL 所在的国家——被导向中国大陆境内服务器的中国大陆探测点即表示请求遭到重定向。 | 不需要 |
| 加载失败 | 在美国对照成功的情况下,比较每个中国大陆探测点是否真正下载到页面(curl 退出码 + 接收字节数)。 | 需要 |
当对照本身失败时
有时境外对照也无法取回页面——站点本身故障,或它拒绝我们的探测。旧工具会直接丢弃这类测试,从而无声地丢掉了真实的审查证据:washingtonpost.com 位于机器人防护之后,每次运行都会中断对照连接,于是数百次测试被丢弃,而所有中国大陆境内探测点其实都被重置。在这里,每个检测器只按它真正需要的证据来判断。途中被伪造的 DNS 应答仍然是伪造,连接重置仍然是重置,无论对照是否完成了自己的下载。这样的测试只能定罪,不能开释:双方以相同方式失败并不能说明是否存在干扰,因此绝不会仅凭失败的对照得出“未屏蔽”。
各类判定
网址的标题判定,取自最近 90 天内所有有效测试的结果。
- 已屏蔽 — 防火长城干扰了请求——连接被重置、DNS 应答被伪造,或在对照拿到页面时境内没有收到任何内容。
- 重定向到中国大陆 — 请求确实到达了服务器,但换了一台:中国大陆境内探测点落在境内主机上,而对照没有。
- 间歇性 — 有效测试之间相互矛盾。部分探测点或部分日期受到干扰,其余没有——这正是部分屏蔽或不稳定屏蔽的样子。
- 未屏蔽 — 中国大陆境内探测点与对照拿到了相同的页面。
- 数据不足 — 窗口内没有确定结论。通常是站点在各处都无法访问,或测试次数太少。
- 无法解析 — 已无可测之物:该域名在任何地方都不再解析,说明地址本身失效,而非被审查。
90 天窗口
标题百分比是最近 90 天内受到干扰的有效测试所占比例;无定论的测试会被排除,而不是算作正常。窗口很重要:屏蔽状况会变化,2014 年的判定说明不了今天的情况。
如果某网址在窗口内没有任何有效测试——多数情况是它已不再被测试——页面会退回到它最近一次的有效判定,并标注对应年份。标注“截至 2019 年”的判定,是我们能如实给出的最后结论,而非对当下的断言。
局限
- 审查并不统一。防火长城在不同省份、不同网络、不同时刻表现不同,而我们的探测点位于少数固定位置——“未屏蔽”只说明我们的探测点通过了,不代表所有人都能通过。
- 我们测量网络,而非页面内容。能打开但内部实施审查、或自行屏蔽中国用户的站点,在我们看来是未屏蔽的。
- 测试间隔并不均匀。热门网址持续被测试,冷门网址可能数年未被触及,因此“最后测试时间”与判定同样重要。
- 单次测试可能出错。网络会因普通原因失败;设置 90 天汇总,正是为了让一次异常运行无法改变判定。
- 历史数据自带历史:自 2011 年以来,探测网络、工具和判定规则都有变化,已知有问题的测量时段会被排除。
常见问题
- “超时”是什么意思?
- 探测点等待服务器而始终没有回应。这本身并不构成审查证据——站点也会宕机。只有当对照在同一时刻正常取回页面时,才算作干扰,这正是传输检测器所检查的。
- 同一站点的两个地址为何判定不同?
- 因为它们是各自独立的测试。防火长城可以只屏蔽某个主机名、某个路径或某种协议,而放过其余部分,所以 news.example.com 可能被屏蔽而 example.com 没有。每个网址页面都会列出相关地址,方便对照差异。
- 为什么页面显示“数据不足”?
- 要么窗口内测试次数太少,要么已有的测试无法把审查与普通故障区分开——通常是站点在各处都无法访问。这表示我们不做猜测,而不是说该网址没问题。
- 一个网址多久测试一次?
- 取决于网址本身。知名站点每天测试多次,长尾网址则少得多。每个页面都会显示最后测试时间,你也可以在网址页面上自行发起一次新的测试。
- 可以只依据单次测试吗?
- 把它当作证据,而不是结论。单次测试只反映某一时刻、少数观测点的情况;应当引用的是日历视图和 90 天数据。
引用与再利用
全部数据开放。每个网址页面都有 JSON 接口,搜索与浏览层也有公开接口,逐次测试的测量记录可供下载。引用判定时,请注明网址、日期及其覆盖的时间窗口。 数据与 API