HTTP請求攔截技術

來源:酷知科普網 2.25W

我們採用C#來實現,C#下有一個完整的WEB DEBUGGER(含代理伺服器方式實現的HTTP請求攔截與篡改功能)--Fiddler,Fiddler是一個免費軟體,所以並沒有對原始碼進行混淆和加密,反編譯後的程式碼可讀性也很好。我們後面的所有程式碼,主要就是參考他的程式碼來實現,當然他實現的功能非常強大,我們僅僅是演示一下HTTP請求與攔截技術的實現,所以沒有必要完整的去模擬它,故而我們模擬的原則是,手動的一個類一個類一個方法一個方法的進行模擬,在模擬的過程中能簡化的儘量簡化,有些思路不太清楚,或者的確是重複造輪子的部分,就直接使用他的程式碼,以後如果有時間,再對其原始碼進行一次詳細的分析與研究,這次有些部分我們就不再深究了。

操作方法

(01)首先,我們來實現一個代理伺服器,完成HTTP請求的攔截,先來看一看實現後的樣子,這樣有助於理解程式碼。編譯後的程式,我拷貝了一份放在了附錄的根目錄下的Build資料夾裡,在build資料夾裡找到這個(圖1),雙擊啟動需要.net framework 4.0 沒有的到微軟官網下載。啟動後如圖所示:(圖2)

HTTP請求攔截技術
HTTP請求攔截技術 第2張

(02)這時候,我們開啟瀏覽器,隨便CHROME,FIREFOX還是IE,然後輸入  training.zhunxin.net 回車(Enter) 。看一下我們的主介面,沒有任何反應,這是正常的,因為我們還沒有設定代理伺服器。 :)任何瀏覽器,都有設定代理伺服器的地方,鑑於天朝 IE的使用率,這裡講IE裡的操作步驟。開啟IE--工具--Internet選項--連線--區域網設定。(圖1)勾上(跳過本地地址的代理伺服器不要勾選),然後點高階。(圖2)HTTPS和FTP等不要設定(本代理伺服器未對這兩種協議進行處理),IP是127.0.0.1表示代理伺服器是在本機,監聽埠設成8888,目前程式碼裡寫死了。

HTTP請求攔截技術 第3張
HTTP請求攔截技術 第4張

(03)在IE裡設定完後,我們會發現其它瀏覽器也自動開始使用代理伺服器了,這是因為設定代理伺服器是系統的功能,每個瀏覽器開啟的都是同一個設定代理伺服器的程式看到這裡,大家是不是發現了什麼問題。我們不是以後每次要攔截的時候,都要手動設定一次代理伺服器吧,-_-!!! ,當然,這是不可能的,後面我們將在篡改一節的開始,就實現一個自動設定代理伺服器的功能,這樣,當我們的代理伺服器啟動的時候,就自動將本機的代理伺服器設定成自己,退出的時候,再恢復成原樣,這樣就不再需要向上面一樣手動設定了。OKAY, 一切就緒了,這時候,再次在瀏覽器裡輸入網址:training.zhunxin.net。看下主介面:(圖1)看左邊,會話已經被監聽到了。我們點第一欄的編號為1的會話,介面如下:(圖2)看右邊,先看上面的文字框,這裡顯示出了HTTP請求的頭資訊,再看下面的文字框,這裡也顯示出了HTTP響應的頭資訊。從這兩張圖裡我們可以清楚看到,所有的請求和響應資訊都已經被我們監聽到了。再看一下瀏覽器,網頁也正常的打開了,速度也不是很慢,看來,我們的代理伺服器算是正常的運轉起來了。

HTTP請求攔截技術 第5張
HTTP請求攔截技術 第6張
熱門標籤