2012-01-13 50 views
1

我想嗅聽/聽取端口80的請求/響應。如何在本地機器上嗅探/偵聽HTTP?

可以用TIdHTTPServer完成嗎?如果是這樣,那麼怎麼樣?我想我的應用程序在瀏覽器活動(它可以是IE瀏覽器,鉻,FF等...),並獲得所有媒體鏈接(圖像,電影)聽傾聽。像MediaPluck

MediaPluck的「問題」是,您需要在您的網頁瀏覽器配置中更改代理服務器,我認爲這是一個壞主意。

+0

什麼是「不是真正的問題」呢?我應該刪除它還是什麼? – ZigiZ 2012-01-14 14:18:49

+0

要在HTTP級別「嗅探」您需要代理。如果來自/到端口80的所有通信都通過它傳送,則可以使用透明端口。但要實現它,您需要通過互聯網網關在機器外部執行該操作,或者在計算機上的TCP級別攔截它。像WinPvap這樣的庫將允許它,但是然後你將不得不處理整個HTTP協議來獲取你需要的信息。 – 2012-01-14 14:54:01

回答

3

無法使用TIdHTTPServerTIdHTTPProxyServer來嗅探HTTP通信,而無需更改連接到它的瀏覽器/客戶端設置。這就是Fiddler所做的 - 暫時改變WinInet的代理設置(IE使用WinInet,所以它透明地改變了這些改動)。你所要求的要求對網絡子系統進行較低級別的嗅探,比如WinPCap/Ethereal的功能。

+0

多年前我曾與IngusSniffer一起工作 - 在Francois Piette的[主頁](http://www.overbyte.be/eng/download.html?url=/arch/isniffer.zip)中找到。但它不適用於現代Windows操作系統。 – ZigiZ 2012-01-14 14:35:31

-1

我可以FiddlerFiddlerCore

+0

他們是用Delphi編寫的,還是用'THTTPServer'?如果沒有,這不會回答問題。 – 2012-01-13 22:22:02

1

做您可以編寫使用TIdHTTPServer代理服務器。但是,如果您在網絡瀏覽器中配置此代理服務器,此「嗅探」將僅適用。

UPDATE

如果你想寫另一提琴手;-)看到這樣的回答: Any resource/codes on how fiddler works?

更新2

根據您的問題的更新,你有兩個選擇。

或者像Remy指出的那樣更改WinInet代理設置。例如,看到這個問題,你只需要將代碼從C++轉換爲Delphi:C++/WinInet Change Proxy Settings Windows 7

或者編寫windows驅動程序來支持捕獲數據包。但是這對媒體應用程序來說似乎更糟糕。

+0

我希望能夠在沒有設置Web瀏覽器的代理服務器的情況下監聽端口80(如果我理解正確,這就是Fiddler所做的)。 – ZigiZ 2012-01-13 22:12:47

+1

爲什麼你不能設置網頁瀏覽器代理設置? – Pol 2012-01-13 22:29:48

+0

請參閱我的編輯。 – ZigiZ 2012-01-13 23:10:50