2013-10-30 28 views
4

這可能很難解釋,所以我會用一個例子來說明這一點。Python或C++:劫持http請求修改目標

我希望能夠劫持http請求和(可能)使用C++或Python(最好是Python,因爲我知道它更好),在他們的出路programaticaly修改它們。最終,我想實現類似於Web瀏覽器在提供緩存對象時所執行的操作。

當你下載一個文件http://www.example.com/image.jpg(來自任何網站的)它得到的地方保存在文件系統中,使得用戶的計算機,使該文件(無論是通過在瀏覽器或wget下一個請求Linux等)將被指向文件系統上的副本。

總之,我希望能夠檢測到http://www.example.com/image.jpg的傳出請求,並修改爲類似/tmp/files/image.jpg

這將構成我們正在研究的更大型研究項目的一部分。

我很難解釋這一點,所以請讓我知道如果我需要提供更多的細節。

非常感謝您的幫助。

+0

所以......你的問題? – OdraEncoded

+6

你必須做一個*代理*。客戶端連接到的程序,並依次連接到真實服務器。這是做到這一點的唯一方法。 –

+0

所以你想運行在客戶端PC上的代碼和飛來來自瀏覽器的調整請求? –

回答

3

執行此操作的最合理的方法是執行proxy。然後,您可以將瀏覽器配置爲使用代理,並且每個來自Internet的資源請求都將被路由到代理。

在Python中編寫代理服務器應該不會太困難,因爲所有低級別詳細信息已由標準庫處理(例如urllib2)。你也可以看看像proxpy這樣的項目,這似乎是一個很好的起點。

另一種令人討厭但更普遍的方式是在網絡級別工作,將所有流量路由到特定的機器,您可以決定要做什麼。請注意,有些協議的設計使得只有預期的接收者才能理解請求,只有發送者能夠解釋結果:對於這種類型的流量,您只能觀察到純淨的噪聲被髮送和返回,而且什麼都不能完成沒有打破溝通。

+0

感謝您的輸入@ 6502。在關閉線程之前,您是否有任何可能提供給我的資源?再次感謝。 – Sthe

+0

@Sthe:添加了一些鏈接,請參閱編輯 – 6502