给 iTerm 终端设置代理
本文介紹如何為自己的終端設(shè)置代理,從而實(shí)現(xiàn)在命令行中訪問(wèn)Google。
1. 背景
當(dāng)你使用SS FQ時(shí),大部分瀏覽器都可以成功訪問(wèn)Google,但是在命令行下執(zhí)行curl https://www.google.com時(shí),會(huì)超時(shí)失敗。對(duì)于類似的這種情況,本文將解釋出現(xiàn)這種現(xiàn)象的原因,并給出有效的解決方案。
2. 原因
啟動(dòng)SS時(shí),會(huì)創(chuàng)建兩個(gè)代理,一個(gè)是ss-local,一個(gè)是privoxy;ss-local用于代理socks5請(qǐng)求,privoxy用于代理所有的HTTP請(qǐng)求
啟動(dòng)SS時(shí),不管用PAC模式還是全局模式,都會(huì)修改網(wǎng)絡(luò)系統(tǒng)代理設(shè)置
網(wǎng)絡(luò)系統(tǒng)代理設(shè)置從哪里看?Mac:系統(tǒng)偏好設(shè)置-->網(wǎng)絡(luò)-->高級(jí)-->代理
在代理頁(yè)中可以看到
從上圖可以看到,網(wǎng)頁(yè)代理服務(wù)器是一個(gè)部署在本地的代理服務(wù)器
這個(gè)本地代理服務(wù)器實(shí)際上是SS啟動(dòng)時(shí)創(chuàng)建的,我們可以從SS的HTTP代理設(shè)置中看到
大部分瀏覽器的默認(rèn)代理設(shè)置是系統(tǒng)代理
因此瀏覽器訪問(wèn)https://www.google.com時(shí),實(shí)際上是把請(qǐng)求發(fā)送給了SS創(chuàng)建的本地代理服務(wù)器127.0.0.1:1087
上圖的privoxy就是SS創(chuàng)建的本地HTTP代理服務(wù)器127.0.0.1:1087
privoxy會(huì)把接收到的http/https請(qǐng)求轉(zhuǎn)換為socks5請(qǐng)求,并轉(zhuǎn)發(fā)給本地的ss-local服務(wù),ss-local服務(wù)通過(guò)socks5協(xié)議發(fā)送加密過(guò)的請(qǐng)求數(shù)據(jù)到遠(yuǎn)端的SS server,SS server解密請(qǐng)求數(shù)據(jù)后,將真實(shí)的請(qǐng)求https://www.google.com發(fā)送到Google的服務(wù)器
上圖是privoxy的配置文件,privoxy的監(jiān)聽(tīng)地址是:127.0.0.1:1087,轉(zhuǎn)發(fā)地址是:127.0.0.1:1080
終端軟件iterm/iterm2等默認(rèn)是沒(méi)有設(shè)置請(qǐng)求代理,因此無(wú)法訪問(wèn)https://www.google.com
3. 解決方案
http_proxy和https_proxy環(huán)境變量用于指定客戶端程序(如curl和wget)的代理設(shè)置
通過(guò)下面的環(huán)境變量就可以設(shè)置HTTP代理:
export http_proxy=http://127.0.0.1:8087
export https_proxy=$http_proxy
為了能夠快速切換代理,可以在 ~/.zshrc 或者 ~/.bash_profile 中添加這樣的alias:
alias goproxy='export http_proxy=http://127.0.0.1:8087 https_proxy=http://127.0.0.1:8087'
alias disproxy='unset http_proxy https_proxy'
4. 參考資料
給 iTerm 終端設(shè)置代理
利用 Privoxy 讓命令行下的 wget 和 curl 等命令實(shí)現(xiàn)自動(dòng)代理
How to set up proxy using http_proxy & https_proxy environment variable in Linux?
總結(jié)
以上是生活随笔為你收集整理的给 iTerm 终端设置代理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Tcpcopy】离线回放功能
- 下一篇: error C3861: “getpid