HTTP代理實現請求報文的攔截與篡改2--功能介紹+源碼下載


  返回目錄  

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

  首先,我們來實現一個代理服務器,完成HTTP請求的攔截                      

先來看一看實現后的樣子,這樣有助於理解代碼 。   

編譯后的程序,我拷貝了一份放在了附錄的根目錄下的Build文件夾里 

build文件夾里找到這個圖標,雙擊啟動   

需要.net framework 4.0 。 沒有的到微軟官網下載 

http://www.microsoft.com/zh-cn/download/details.aspx?id=17718   

啟動后如圖所示       

 

這時候,我們打開瀏覽器,隨便CHROME,FIREFOX還是IE然后輸入  www.baidu.com  回車(Enter) 

看一下我們的主界面,沒有任何反應,這是正常的,因為我們還沒有設置代理服務器。 :)  

任何瀏覽器,都有設置代理服務器的地方,鑒於天朝 IE的使用率,這里講IE里的操作步驟。         

打開IE--工具--Internet選項--連接--局域網設置   

 

勾上(跳過本地地址的代理服務器不要勾選),然后點高級        

 

  依照上圖進行設置,HTTPSFTP等不要設置(本代理服務器未對這兩種協議進行處理),IP127.0.0.1 表示代理服務器是在本機,監聽端口設成8888,目前代碼里寫死了。   

  在IE里設置完后,我們會發現其它瀏覽器也自動開始使用代理服務器了,這是因為設置代理服務器是系統的功能,每個瀏覽器打開的都是同一個設置代理服務器的程序

  看到這里,大家是不是發現了什么問題。我們不是以后每次要攔截的時候,都要手動設置一次代理服務器吧,-_-!!! ,當然,這是不可能的,后面我們將在篡改一節的開始,就實現一個自動設置代理服務器的功能,這樣,當我們的代理服務器啟動的時候,就自動將本機的代理服務器設置成自己,退出的時候,再恢復成原樣,這樣就不再需要向上面一樣手動設置了。      

 

OKAY , 一切就緒了,這時候,再次在瀏覽器里輸入網址: http://www.baidu.com 

看下主界面  

看左邊,會話已經被監聽到了。我們點第一欄的編號為1的會話,界面如下:

 

看右邊  

先看上面的文本框,這里顯示出了HTTP請求的頭信息。

再看下面的文本框,這里也顯示出了HTTP響應的頭信息。

從這兩張圖里我們可以清楚看到,所有的請求和響應信息都已經被我們監聽到了。

再看一下瀏覽器,網頁也正常的打開了,速度也不是很慢,看來,我們的代理服務器算是正常的運轉起來了 :)  。      

             

附錄(源碼+程序)                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM