🌏一个解决SNI RST导致维基百科、Pixiv等站点无法访问的工具 | A tool for solving SNI RST


Keywords
gfw
License
GPL-3.0
Install
pip install accesser==0.8.0

Documentation

Accesser

English version

一个解决SNI RST导致维基百科、Pixiv等站点无法访问的工具
支持的站点

使用

如果不知道什么是Python

这里下载Windows一键程序,运行既可(建议关闭其他代理软件),首次使用会要求安装证书,选是即可。

如果已经安装了Python 3.10*或更高版本

pip3 install -U "accesser[doh,doq]"

如果你不需要 DNS-over-HTTPS 和 DNS-over-QUIC,则可以不用带[doh,doq]

然后通过如下命令启动:

accesser

对于Windows系统,默认情况下(没有指定--notsetproxy)会设置PAC代理为http://localhost:7654/pac/?t=<随机数>,如果没有可以手动设置。

此外,对于Windows系统,默认情况下(没有指定--notimportca)会自动导入证书至系统,如果没有可以手动导入,请看这里

*可以使用例如pyenv来安装所需的Python版本(推荐Python 3.11+)。

设置

启动一次Accesser后,会在 工作目录 下生成config.tomlrules.toml,具体含义见其中注释,保存后重新打开程序。

进阶1: 与v2ray等其他代理软件一起使用

Accesser是一个本地HTTP代理,默认代理地址为http://localhost:7654,只要网络流量能从其他代理软件以HTTP代理导出就能联合使用。

v2ray为例,可以添加一个HTTP的outbound指向http://localhost:7654,并设置相应的路由规则,将维基百科、Pixiv等站点的流量送到这个outbound。 并在启动 Accesser 时带上 --notsetproxy 参数以避免 Accesser 设置系统代理。

此外,你还可以设置一个DNS outbound,然后编辑config.toml让Accesser使用这一DNS。

进阶2: 增加支持的网站

编辑工作目录下的pac文件(如果是一键程序,可以从GitHub下载这一文件到工作目录),使要支持的网站从代理过。

然而,并不是所有站点都可以直接工作,可能需要一些调节,见如何适配站点


时间线与后记

18年夏,通过修改 hosts 以连接被 GFW 屏蔽的维基百科、pixiv 等网站的方法突然失效。很快人们就反应过来问题的所在:SNI RST。 在这之前,修改 hosts 是一个几近于零成本的翻墙方法。突然的变化意味着翻墙成本的急剧上升。

为了重置平衡,同时抱着对更早时期红杏计划的敬佩,我翻阅了关于 TLS 的 RFC 文档,并注意到其中关于 SNI RST 涉及的 server_name 并非 "must",而是可选扩展。 经过简单测试,确认这一思路确实可行。 秉着重置平衡的想法,我制作了 Accesser,并配备了 web UI (现已移除),目的就是让一般人访问维基百科、pixiv 等网站的难度降低到 hosts 时代的水平。 尽管我仅在一个极小众论坛(现已关闭)上自荐过,一段时间后,Accesser 甚至成了中文维基社群推荐的方法。

在这之后,利用相同思路的翻墙软件/方法如春笋般涌现。不过稍微遗憾的是,他们中的许多没有做和远程服务器之间的证书校验,使得用户暴露在可能的危险中。 再往后,一些更加投机取巧,利用非标准协议的方法也有出现。

19年后,因日渐繁忙,加之坚信这一如此简单的思路很快就会失效,故停更。

22年末,契机是 Python 的协程接口日渐稳定,并出现需要的功能,我将 Accesser 的核心重写并在各位贡献者的协助下陆续更新。

Accesser 的大版本号是留予新的技术,然而出乎我的预料,现有的域前置技术在六年后仍未失效。 而另一方面,看起来天朝人民有足够的能力以维持平衡,因此 1.x 可能永远不会到来。