16淺析HTTP代理原理

代理服務(wù)器是HTTP協(xié)議中一個重要的組件,發(fā)揮著重要的作用。 關(guān)于HTTP代理的文章有很多,本文不再贅述,如果不清楚的可以看一下

HTTP代理的基礎(chǔ)知識

本文主要介紹代理的事例,分析一個真實的案例來幫助理解HTTP代理的原理。

HTTP代理的原理

下面分析一個

http://iflow.uczzd.cn/iflow/api/v1/client_event?app=uc-iflow...經(jīng)過代理服務(wù)器的HTTP請求。

iflow.uczzd.cn的公網(wǎng)IP是140.205.136.82(各地測試到的IP有可能不同),我的局域網(wǎng)IP是192.168.100.115,代理服務(wù)器的IP是192.168.16.35

再簡單說一下HTTP請求的流程:

192.168.100.115140.205.136.82發(fā)送HTTP請求,其中192.168.16.35是代理服務(wù)器。

一、 監(jiān)控請求

通過網(wǎng)絡(luò)監(jiān)控獲取到的HTTP請求如下:

網(wǎng)絡(luò)監(jiān)控HTTP請求

可以看到在網(wǎng)絡(luò)監(jiān)控中,有兩個HTTP請求,一個是向代理服務(wù)器發(fā)送的HTTP,另一個是代理服務(wù)器想目標(biāo)服務(wù)器發(fā)送的HTTP請求。這兩個請求的請求體是一樣的,如下圖:

客戶端向代理服務(wù)器發(fā)送的HTTP報文:

發(fā)向Proxy服務(wù)器

代理服務(wù)器想目標(biāo)服務(wù)器發(fā)送的HTTP報文:

發(fā)向目標(biāo)服務(wù)器

二、 推測處理流程

可以看到,兩張圖片的HTTP報文是相同的(也有可能Header不同),我們可以推測出客戶端和代理服務(wù)器的處理流程,如下:

客戶端的處理流程:

客戶端的處理流程

代理服務(wù)器的處理流程:

代理服務(wù)器的處理流程

三、 驗證推測的處理流程

在推測出客戶端和代理服務(wù)器的處理邏輯后,我們需要驗證我們的推測是否正確。

我們可以構(gòu)造一個TCP請求,客戶端連接到代理服務(wù)器,發(fā)送HTTP報文,報文的內(nèi)容是客戶端直接發(fā)送到服務(wù)器的內(nèi)容。

例如:直接訪問

http://www.cnblogs.com/tgwang/的HTTP報文是:

GET http://www.cnblogs.com/tgwang/ HTTP/1.1
Host: www.cnblogs.com
Connection: close
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36
Referer: http://www.cnblogs.com/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: ***
If-Modified-Since: Sat, 30 Jan 2016 02:48:23 GMT

我們構(gòu)造一個TCP請求,連接代理服務(wù)器,報文的內(nèi)容也是發(fā)送上面的報文,看代理服務(wù)器能否正常請求博客園的數(shù)據(jù),如果可以正常請求,說明我們對于客戶端和代理服務(wù)器推測是正確的,如果沒有請求博客園數(shù)據(jù),而是返回代理服務(wù)器的相關(guān)信息,表示推測錯誤。

下面我使用python向代理服務(wù)器127.0.0.1:8888發(fā)送一個TCP請求,為了在代理服務(wù)器中能找到此請求,我在Header中增加了一個Token,使用UUID標(biāo)識(見紅框)。

Python發(fā)送HTTP請求

運行程序,發(fā)送TCP請求,報文如下:

proxy請求報文

查看代理服務(wù)器的信息,可知,HTTP請求正常發(fā)送到博客園,并且正常響應(yīng),如下圖:

代理服務(wù)器監(jiān)控

到此推測驗證完成,符合預(yù)期結(jié)果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容