2012-01-13 51 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