本文发布于数年前,其内容有可能已经过时。此外,本文含有部分曾经存储于第三方、现已无法访问的图片,请留意。

截至 2020.03.31,由于网站 IP 被直接阻断,本方法已经失效。
本文排版可能略显混乱。

起因

由于未知原因,不久前 archiveofourown.org(AO3)网站在中国大陆无法访问了。

中国大陆内域名解析全部错误

虽然这是我第一次听说这个网站,但是既然网站在国内是有用户的,那么这篇文章就有可能会帮到忙。如果不想看废话,你可以直接下拉到 结果 部分查看能够恢复访问的方法(使用 hosts)。

经过

一般来说网站无法访问会有两种可能;通过 dig 命令我们可以发现 AO3 网站直接解析了一个位于美国的 IP: 那么我们希望网站的无法访问是第二个可能,这样还有救。

事实告诉我们,是的。通过 traceroute 命令,这个 IP 仍能从中国大陆正常连接: 然而,主域名能访问并不代表解决了问题,网站加载的其他资源如果无法访问,也有可能导致网站显示不正常。

通过 Chrome 的 检查 工具,在 Sources 标签页,我们能够看到网站引用的所有资源。

我们可以看到,除了从域名本身引用的资源以外,AO3 网站首页还引用了 ajax.googleapis.complatform.twitter.com 以及属于 newrelic.com(看上去是某种统计工具)的两个字域名。 其中 platform.twitter.com 这个域名不需要担心,因为这只是 Twitter 挂件用的;在 Twitter 本身就无法访问的情况下,我们不需要理会这个域名。 问题是在于 ajax.googleapis.com;这个域名属于 Google Hosted Libraries,是 Google 托管的知名 Javascript 库。这个域名在国内是解析到 Google 的海外服务器的,因此无法访问。只要我们解决了这个域名的访问问题,我们就有办法正常打开 AO3 了(所以我挺奇怪,就算没出现最近的问题,这网站也应该是无法正常打开的)。

因为 ajax.googleapis.com 本身作为流行的 js 库托管服务,为了方便广大国内开发者,它在国内是有镜像存在的。这个时候,最为简单直接的做法就是使用 Chrome 插件直接替换域名到国内镜像,这样引用的资源能够正常加载,帮助我们正常访问网页。

通过简单搜索,我发现了两个插件: - Replace Google CDN(下称插件1) - Replace Google CDN(下称插件2)

我也不知道为啥这两个不同的插件是一样的名字;插件1会默认替换 ajax.googleapis.com 到中科大的镜像,插件2会默认替换到 sb.sb 在德国的镜像,但是可以选择替换到其他域名。在这里为了避免麻烦我比较推荐国内用户使用插件1,毕竟是国内镜像。

解决 Google Hosted Libraries 访问问题(可选)

然而,国内一样无法从 Chrome Web Store 安装插件。我们需要首先从第三方网站下载 .crx 文件,然后更改后缀名到 .zip,解压缩,然后进入 chrome://extensions 页面,右边开启 _Developer Mode_,然后左边选择 Load Unpacked 选项,选择解压缩后的文件夹安装。 这边为了方便,已经下载并重命名好了上方插件1.zip 存档,只要从下方链接点击下载(已经失效),然后解压缩,按照上面的步骤操作就好了。

下载 replace-google-cdn.zip

然而事实证明我多虑了,就算无法加载从 ajax.googleapis.com 引用的 jQueryjQuery-UI 库,AO3 网站也一样能够正常加载。 我也同时看了下网站的登陆相关内容,没有引用其他资源。

结果

那么,说了这么多,我们应该如何利用 AO3 网站 IP 仍能正常访问这一点,在未知原因导致 AO3 在国内无法正常访问后,继续访问 AO3 网站呢?

在 Windows 系统上

下述方法基于 Windows 10 系统;理论上在其他 Windows 版本也能工作。如果不能,请使用你的搜索引擎搜索 系统版本 + 如何修改 hosts,如 Windows 7 系统 如何修改 hosts。如果不清楚你当前 Windows 系统是什么版本,你可以在任何界面按 Ctrl + R,然后输入 winver 回车。

使用管理员权限打开命令提示符(按下 Windows 徽标键,然后输入 cmd,在搜索结果第一条右键选择 以管理员权限访问。 输入(复制粘贴)下列魔法命令:

notepad %windir%\system32\drivers\etc\hosts

如果出现任何错误,输入(复制粘贴)下列魔法命令再次尝试:

TAKEOWN /F %windir%\System32\drivers\etc\hosts & echo Y| cacls %windir%\system32\drivers\etc\hosts /s:"D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;0x1200a9;;;BU)(A;ID;0x1200a9;;;AC)" & notepad %windir%\system32\drivers\etc\hosts

在打开的记事本文件最下方,加入以下一行 hosts:

104.153.64.122 archiveofourown.org

开关电脑的飞行模式,或者拔网线,再不行重启。之后 AO3 网站就能正常打开了。

在 macOS 系统上

打开 “应用程序” 文件夹内 “实用工具” 文件夹中的 “终端”,输入命令 sudo vi /etc/hosts,输入你的用户密码,按 i 键,输入以下内容:

104.153.64.122 archiveofourown.org

然后按 esc,输入 :wq 回车。开关飞行模式或者重启之后就可以正常访问了。

在 Android 系统上

经过多番寻找,没有无广告不需要 Root 而以 VPN 方式实现 hosts 的应用。如果能容忍广告,可以尝试 https://dlc.justhx.com/hosts-go.apk,在 APP 内添加以下 hosts 然后允许本地 VPN 运行即可:

104.153.64.122 archiveofourown.org

在 iOS 系统上

似乎暂无简单和免费的方式。


本文发布于惶心博客,原文地址 https://huangxin.dev/just-for-fun/how-to-continue-the-access-to-the-aco3-website.html,转载请务必注明来源以及原文链接。