1. 安裝 node
cd /usr/local
wget https://nodejs.org/dist/v14.15.3/node-v14.15.3-linux-x64.tar.xz
tar xf node-v14.15.3-linux-x64.tar.xz
mv node-v14.15.3-linux-x64 node
vim ~/.bash_profile
PATH=$PATH:/usr/local/node/bin
source ~/.bash_profile
npm install -g cnpm --registry=https://registry.npm.taobao.org
2. 安裝 anyproxy
npm i -g anyproxy
3. 啓動 anyproxy
anyproxy
4. 訪問 anyproxy
http://localhost:8002
5. 客戶端設置代理
localhost 8001
6. 配置 https
原理:AnyProxy 解析 Https 的原理是自制根證書 rootCA 在終端信任這份證書之後,再用它簽發各個域名的二級證書,此時二級證書可以重新對各個頁面進行解析。
6.1. 生成 ca 正式
anyproxy-ca
6.2. 打開 ca 證書
~/.anyproxy/certificates/rootCA.crt
6.3. 信任 ca 證書
打開已安裝的 AnyProxy 證書,展開“信任”,選擇“使用此證書時”:“始終信任”
6.4. 以支持 https 的方式啓動 anyproxy
anyproxy -i
6.5. 移動端安裝證書
瀏覽器訪問 http://localhost:8002/fetchCrtFile
下載證書並安裝
7. 卸載
npm uninstall anyproxy
8. 清除證書
anyproxy --clear
9. 二次開發
把網絡通信過程分解爲三個階段:
- 在收到客戶端請求後,允許開發者直接從本地提供返回
- 在轉發請求到服務器前,允許開發者對發送的請求進行修改
- 在收到服務器響應後,允許開發者對響應內容進行修改,再返回給客戶端
9.1. 編寫規則文件: rule.js
module.exports = {
shouldInterceptHttpsReq: function(req){
return true
}
}
9.2. 啓動並加載規則
anyproxy --rule ./rule.js
9.3. 測試規則
- 直接請求
curl https://github.com
- 通過代理請求
curl https://github.com --proxy http://127.0.0.1:8001
10. 文檔
https://github.com/alibaba/anyproxy
11. 桌面 APP
https://github.com/fwon/electron-anyproxy