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