Accesser 是什么?#
Accesser 是一个 HTTP 代理。它通过中间人的身份处理终端的 HTTP 出口流量,以绕过 SNI 阻断。我们正常访问网站时,客户端会发送 Client Hello,而这个报文是明文,并且通常会携带 ServerName,这个时候 GFW 就能通过检测 ServerName 来进行阻断,代替网站向客户端发送一个 RST 报文重置连接,做到网站被 “墙” 的效果
而通过 Accesser 代理后,它会抹掉 ServerName 然后发送 Client Hello。这个时候,如果服务端支持域前置,则会返回客户端一个默认的 SSL 证书(公钥),然后客户端就能使用这个公钥再次发送一个加密的 Client Hello,此时携带上 ServerName 就不会被 GFW 阻断了。但是,如果客户端在第一次我们拿公钥的时候拒绝了空 ServerName 的 Client Hello,那这个办法就失效了,不过大部分网站是支持这样做的
Windows#
-
前往开头的的 Github 仓库
-
下载最新的 Release。一般有一个
accesser.exe
-
直接打开这个软件,看到这个画面即可
-
它的原理是自动设置系统代理,如果你使用了一些别的代理软件,会被覆盖
Linux(以 Debian12 为例)#
-
安装 Python:
apt install python3
-
(可选)创建虚拟环境:
python -m venv venv
-
(可选)进入虚拟环境:
source venv/bin/activate
-
安装 Accesser:
python3 -m pip install -U accesser
-
运行:
accesser
-
它会提示你需要信任
root.crt
。关闭 Accesser -
我的证书文件在
/root/Accesser/venv/lib/python3.11/site-packages/accesser/CERT/root.crt
-
cd 到你的证书目录:
cd /root/Accesser/venv/lib/python3.11/site-packages/accesser/CERT
-
信任证书:
sudo cp root.crt /usr/local/share/ca-certificates/
-
更新证书存储:
sudo update-ca-certificates
-
设置全局代理:
sudo nano /etc/environment
-
http_proxy="http://127.0.0.1:7654" https_proxy="http://127.0.0.1:7654" no_proxy="localhost,127.0.0.1"
-
重启即可
-
测试连通性:
curl -x https://discord.com