HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)
HTTP/HTTPS/SOCKS 代理指的是客戶端連接代理服務(wù)器的協(xié)議,指客戶端和代理服務(wù)器之間交互的協(xié)議。
如服務(wù)器支持代理HTTP協(xié)議就叫HTTP代理服務(wù)器,支持代理SOCKS協(xié)議就叫SOCKS代理服務(wù)器。如代理服務(wù)器同時支持代理HTTP/SOCKS協(xié)議,則既可以叫HTTP代理服務(wù)器,也可以叫SOCKS服務(wù)器。
補充:SOCKS協(xié)議工作在比HTTP、HTTPS更低的層次,所以HTTP協(xié)議,HTTPS協(xié)議可以使用SOCKS代理(即HTTP、HTTPS協(xié)議和代理服務(wù)器之間可以采用SOCKS協(xié)議),但反過來,SOCKS協(xié)議就不能通過HTTP/HTTPS來代理了。
注意和IE瀏覽器中代理(即系統(tǒng)代理)設(shè)置是不一樣的概念!
這里IE的代理意思是,配置哪種協(xié)議走哪個代理服務(wù)器(注意并不是什么協(xié)議代理服務(wù)器,IE僅支持HTTP代理)。比如你這里配的是讓HTTP協(xié)議走HTTPS代理服務(wù)器(這里的HTTPS代理服務(wù)器指僅支持代理HTTPS,不支持代理其他協(xié)議如HTTP),那么HTTP協(xié)議將不能夠被代理成功。
其實,IE的代理設(shè)置都只支持HTTP代理的。上圖中無論怎么設(shè)置,都是使用HTTP協(xié)議直接轉(zhuǎn)發(fā)到對應(yīng)的代理服務(wù)器,也就是代理服務(wù)器必須是支持代理HTTP協(xié)議的服務(wù)器(代理服務(wù)器支持其他協(xié)議比如HTTPS也是多余的,并不會使用HTTPS代理)。這里大家可能會有疑問,那HTTP代理服務(wù)器是如何可以代理HTTPS協(xié)議的呢?其實是用了HTTP隧道(HTTP tunnel)(感興趣請自己查閱相關(guān)資料),客戶端和HTTP代理服務(wù)器之間并沒有進行HTTPS的握手過程。
上面說了,IE代理僅支持HTTP代理,谷歌瀏覽器Chrome代理配置也只能是配置IE代理,也就是只能使用HTTP代理了。那比如我想使用HTTPS代理怎么辦(客戶端和HTTPS代理服務(wù)器之間采用HTTPS協(xié)議)?
可以使用插件Proxy SwithchyOmega:
“網(wǎng)址協(xié)議”就是IE代理設(shè)置里的“類型”,和IE代理相比,多了個“代理協(xié)議”選項,即什么協(xié)議走什么代理選項。
比如可配置HTTP/HTTPS協(xié)議走SOCKS5協(xié)議代理。其實這插件也是調(diào)用了chromium提供的接口(https://www.chromium.org/developers/design-documents/network-stack/socks-proxy):
可看出FTP協(xié)議通過SOCKS協(xié)議代理還沒有實現(xiàn)。。
最后說下ss/ ss(R)的原理:
ss的運行原理與其他代理工具基本相同,使用特定的中轉(zhuǎn)服務(wù)器完成數(shù)據(jù)傳輸。在服務(wù)器端部署完成后,用戶需要按照指定的密碼、加密方式和端口,使用客戶端軟件與其連接。在成功連接到服務(wù)器后,客戶端會在用戶的電腦上構(gòu)建一個本地Socks5代理。瀏覽網(wǎng)絡(luò)時,網(wǎng)絡(luò)流量會被分到本地socks5代理,客戶端將其加密之后發(fā)送到服務(wù)器,服務(wù)器以同樣的加密方式將流量回傳給客戶端,以此實現(xiàn)代理上網(wǎng)。
有人會問,ss(R)是Socks5代理,但我上面說了IE代理(不安裝Proxy SwithchyOmega情況下)只支持HTTP代理,為什么也可以訪問google呢?
其實ss(R)默認在1080端口開啟了Socks5代理,但是它為了兼容HTTP代理模式,會使用ss_privoxy.exe開啟了一個HTTP代理(隨機端口,返回拒絕則默認8123端口)。
不僅如此,ss(R)在1080端口也支持HTTP代理。
我們知道,IE的代理設(shè)置是僅支持HTTP代理的。也正是因為ss(R)支持HTTP代理方式,才能使IE以及一些其他不支持Socks5代理(但支持HTTP代理)的軟件進行代理。
瀏覽器一般會自動啟用系統(tǒng)代理,而其它軟件則需要自身支持HTTP代理或Socks5代理,而且一般需要進行手動配置才可以進行代理。
補充:分別使用HTTP協(xié)議和SOCKS5協(xié)議訪問ss本地Windows客戶端情況(注:事先要下載curl小工具):
可看出,HTTPS協(xié)議使用HTTP代理是通過了HTTP隧道。
注:
socks5 和 socks5h 的區(qū)別僅用于 curl。在 curl中,socks5 會使用本地DNS,socks5h 會使用代理提供的遠程DNS。
在其它軟件中,socks5h 基本不起作用,使用 socks5 即可。一旦設(shè)置了代理,多數(shù)時候會采用遠程DNS。
可見,因為ss本地Windows客戶端(相當(dāng)于本地代理服務(wù)器)不支持HTTPS協(xié)議,因此不會響應(yīng)Client hello
總結(jié)
以上是生活随笔為你收集整理的HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7 安装和配置JDK
- 下一篇: Web应用工作流程总结