HTTP的兩種代理

http的代理有兩種模式,一種是普通代理,一種是隧道代理

代理可以有很多的作用,例如通過代理來進行內容的過濾,減少對服務器的訪問和提高安全性等。

普通代理

普通代理就是在客戶端與服務器之間加入一個代理服務器,原本客戶端與服務器之間的訪問爲

客戶端向服務器發出請求,服務器接受到請求後將響應結果返回給客戶端

當加入代理之後,這一過程變成爲

客戶端將請求發送到代理服務器,然後代理服務器將客戶端的請求轉發給服務器,服務器接受到請求後將響應的結果返回給代理服務器,最後代理服務器將從服務器得到的結果返回給客戶端。

通過這一過程可以看出,如果在代理服務器上增加對請求的判斷,修改等功能,就可以實現對客戶端請求進行過濾的功能。

正向代理

在正向代理中,代理服務器對客戶端必須是不透明的,客戶端在向服務器發出請求時,必須知道代理的地址並在請求報文中加入這一部分信息。

反向代理

在反向代理中,代理服務器對客戶端是透明的,即客戶端以爲自己直接將請求發送給了目標服務器,實際上卻是被髮送到了代理服務器上,這樣的話,客戶端不能將數據直接發送到目標服務器中,同時,也不能知道目標服務器的ip和端口,也增加了一定的安全性,這也是最廣泛使用的代理方式。反向代理一般是通過修改DNS,將域名對應到代理服務器上實現的。

一般情況下,客戶端只需要關心最終獲取到的數據即可,並不需要考慮其中的過程,但是可以通過HTTP報頭中的X-Forwarded-For字段來顯示中間經過的服務器代理。每當這個報文轉發到某個代理服務器上時,該代理服務器會將上一個節點的IP填寫到該部分中。

注意,普通代理不支持HTTPS協議,在握手階段就被pass。

隧道代理

使用隧道代理,首先要知道connect請求,客戶端通過發送connect請求給代理服務器,當代理服務器接收到connect請求後,會與請求報文中的目標服務器建立tcp連接,之後blindly轉發內容即可。

與普通代理不同,隧道代理可以支持https協議。

參考自:

https://cizixs.com/2017/03/22/http-tunnel-proxy-and-golang-implementation/

https://imququ.com/post/web-proxy.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章