Wikipedia 和 Wikimedia 在 GFW 的审查方式是 DNS 污染叠加 SNI 阻断。因为维基百科编辑对于代理服务器默认是禁止的,这让直接访问变成了一个更强的需求。
(也有一种办法是找寻没有被封禁的 IP 地址,一般使用中国人/华人做的代理服务器总归能找到一些没有被纳入黑名单的 IP。)
首先要解决 DNS 污染的问题。
常用的办法是通过更改 hosts 文件去固定一些域名的 IP 解析。
那么,未被 SNI 阻断的域名和 IP 地址有哪些?
根据 Wikimedia 的这个页面和 Wikipedia 的这个页面,*wikipedia.org 域名都已经被 SNI 阻断。未被 SNI 阻断的域名有如下,
wikinews.org
wikisource.org
wikibooks.org
wiktionary.org
wikiquote.org
wikivoyage.org
wikiversity.org
wikimedia.org
wikidata.org
w.wiki
mediawiki.org
Wikimedia 纳入 DNS 解析的 IP 地址当中,**可用** 的有
208.80.153.224(美国卡罗尔顿)
185.15.59.224(荷兰阿姆斯特丹)
185.15.58.224(法国马赛)
这些 IP 地址已经 **被封锁**,
198.35.26.96(美国加州旧金山)
208.80.154.224(美国弗吉尼亚阿什本)
103.102.166.224(新加坡)
对于 maps.wikimedia.org 和 upload.wikimedia.org 这两个托管文件的域名,不可使用上述 IP 地址,仅支持 *.*.*.240 的 IP 地址。可用的包括,
208.80.154.240(美国弗吉尼亚阿什本)
208.80.153.240(美国卡罗尔顿)
185.15.59.240(荷兰阿姆斯特丹)
185.15.58.240(法国马赛)
实际上 Wikimedia 拥有的 IP 段包括更多未被官方用于解析的 IP,更换 IP 地址最后一个数可以找到更多。例如 198.35.26.97 对应的名称是 test-lb.ulsfo.wikimedia.org,但也可以用来解析 Wikimedia 的网页。(未证实,可能会有访问问题)
官方给出的 IP 查找方式是 nslookup 如下域名
text-lb.eqiad.wikimedia.org
text-lb.codfw.wikimedia.org
text-lb.ulsfo.wikimedia.org
text-lb.esams.wikimedia.org
text-lb.eqsin.wikimedia.org
text-lb.drmrs.wikimedia.org
对于 upload.wikimedia.org 这类托管文件的域名,对应的 IP 地址查找则是把 text-lb 替换成 upload-lb。
使用如上信息,再加上 Wikimedia 所有计划的域名,可以编写一份 hosts 文件。其中,upload.wikimedia.org 对应的 IP 必须以 240 结尾,而 wikidata.org 对应的 IP 则是用于解析 Wikimedia 页面的 IP 地址。可以任意替换成上述文章提及的可用 IP。
例如,
# Wikipedia Start208.80.153.224 www.wikipedia.org208.80.153.224 en.wikiepdia.org208.80.153.224 login.wikimedia.org208.80.153.224 wuu.wikipedia.org208.80.153.224 zh-yue.wikipedia.org208.80.153.224 zh.wikipedia.org208.80.153.224 zh.m.wikipedia.org208.80.153.224 ja.wikipedia.org208.80.153.224 ja.m.wikipedia.org208.80.153.224 ug.wikipedia.org208.80.153.224 ug.m.wikipedia.org208.80.153.240 upload.wikimedia.org# Wikipedia End
# Other Wikimedia Projects208.80.153.224 w.wiki208.80.153.224 zh.wikinews.org208.80.153.224 zh.wikisource.org208.80.153.224 zh.wikibooks.org208.80.153.224 zh.wiktionary.org208.80.153.224 zh.wikiquote.org208.80.153.224 zh.wikivoyage.org208.80.153.224 zh.wikiversity.org208.80.153.224 meta.wikimedia.org208.80.153.224 commons.wikimedia.org208.80.153.224 cxserver.wikimedia.org208.80.153.224 mediawiki.org208.80.153.224 www.mediawiki.org208.80.153.224 wikidata.org208.80.153.224 www.wikidata.org
移动版和多语言版本没有全部加入,可按需求添加。
此时未被 SNI 阻断的域名已经可以访问,也可以正常访问 Wikimedia 的这一指导文章:Help:如何访问维基媒体旗下项目
之后要解决 SNI 阻断的问题。
一般来说,在 DNS 解析正确的情况下,对于使用同一证书的域名,用户可以先访问一个未被 SNI 阻断的 A 域名,然后再访问被 SNI 阻断的 B 域名,因为缓存的缘故,用户将可以访问 B 域名。Wikimedia 的指引页面也给出了类似的办法,用的是访问未被 SNI 阻断的域名再跳转到 zh.wikipedia.org。
复制如下,点击任一数字都会做这一跳转。
1 2 3 4 5 6 7 8
实际中,这一方法可能不奏效。我们可以在本地使用 Domain Fronting 的方法去绕过封锁,原理是当你在访问被 SNI 阻断的域名(比如 zh.wikipedia.org)时,让 GFW 以为你访问的域名是未被 SNI 阻断的域名,比如 wikidata.org; meta.wikimedia.org, commons.wikimedia.org,或者上面 1- 8 数码对应的任一域名。
Method 1, 对于 Chromium 浏览器,可以更改其启动参数。把维基百科和维基媒体被 SNI 阻断的域名转向未被 SNI 阻断的域名。在“目标”(Destination) chrome.exe"之后加入如下内容,
--host-rules="MAP *.wikipedia.org wikidata.org, MAP commons.wikimedia.org wikidata.org"
需要注意,--host-rules 之前有一个空格。
这行命令的含义是,把 wikipedia.org 任何子域名的访问,都用 wikidata.org 这一域名的证书替代;以及访问 commons.wikimedia.org 时,也用 wikidata.org 这一域名的证书替代。
因此,也可以把 wikidata.org 替换成上面提到的任意一个未被 SNI 阻断的域名。比如,
--host-rules="MAP *.wikipedia.org meta.wikimedia.org, MAP commons.wikimedia.org meta.wikimedia.org"
Method 2, 对于 Firefox 浏览器,有人构建了一个可以用来访问 Wikipedia 的火狐浏览器。(需要事先配置好 hosts 文件。)下载地址是:https://files.catbox.moe/m1r574.zip
(但不知道什么原因,上面这个魔改我这里只能用来访问维基百科主站和中文维基百科,不能访问英文维基百科。)
