Delphi 如何在本地计算机上嗅探/侦听HTTP?

Delphi 如何在本地计算机上嗅探/侦听HTTP?,delphi,delphi-7,Delphi,Delphi 7,我想嗅探/监听端口80的请求/响应 可以用TIdHTTPServer完成吗?如果是,那怎么办 编辑: 我希望我的应用程序能够监听浏览器活动(可以是IE、Chrome、FF等),并获取所有媒体链接(图像、电影)。差不多 MediaPlug的“问题”是您需要在web浏览器配置中更改代理服务器,我认为这是一个坏主意。我可以用它来完成,或者您可以使用TIdHTTPServer来编写代理服务器。但只有在web浏览器中配置此代理服务器时,这种“嗅探”才会起作用 更新 如果你想再写一个小提琴手;-)看看这个答

我想嗅探/监听端口80的请求/响应

可以用
TIdHTTPServer
完成吗?如果是,那怎么办

编辑: 我希望我的应用程序能够监听浏览器活动(可以是IE、Chrome、FF等),并获取所有媒体链接(图像、电影)。差不多


MediaPlug的“问题”是您需要在web浏览器配置中更改代理服务器,我认为这是一个坏主意。

我可以用它来完成,或者

您可以使用
TIdHTTPServer
来编写代理服务器。但只有在web浏览器中配置此代理服务器时,这种“嗅探”才会起作用

更新

如果你想再写一个小提琴手;-)看看这个答案:

更新2

根据您的问题更新,您有两个选择

按照Remy的指示更改WinInet代理设置。例如,看到这个问题,你只需要把代码从C++翻译成Delphi:./P>
或编写windows驱动程序以支持捕获数据包。但对于媒体应用程序来说,这似乎是更糟糕的选择。

无法使用
TIdHTTPServer
TIdHTTPProxyServer
来嗅探HTTP流量,而无需更改浏览器/客户端设置来连接它。这就是Fiddler所做的-临时更改WinInet的代理设置(即使用WinInet,因此它透明地拾取更改)。您所要求的需要对网络子系统进行较低级别的嗅探,例如WinPCap/Ethereal所做的嗅探。

我希望能够在不设置web浏览器代理的情况下侦听端口80(如果我理解正确,Fiddler会这样做)。为什么不能设置web浏览器代理设置?Indy不使用WinINet-Remy只说Fiddlerdoes@mjn-那更好,想想看。如果你安装WinPCap,它有自己的捕获驱动程序,所以你不必编写自己的。像任何其他库一样,在用户模式应用程序中直接使用WinPCap自己的API,它将为您与驱动程序对话。用这种方式编写网络嗅探器非常容易。然后,您可以告诉它嗅探端口80上的所有流量(或您需要的任何其他模式标准),并将嗅探到的数据传递给您。它们中有一个是用Delphi编写的,使用的是
THTTPServer
?如果不是,这并不能回答所问的问题。什么是“不是真正的问题”?我应该删除它吗?要在HTTP级别“嗅探”,您需要一个代理。如果从端口80到端口80的所有流量都通过该端口路由,则可以使用透明端口。但要实现这一点,您需要在计算机外部通过internet网关执行,或者在计算机上的TCP级别进行拦截。WinPvap这样的库允许这样做,但是你必须处理整个HTTP协议才能获得你需要的信息。几年前我曾与IngusSniffer合作过——在Francois Piette's找到过。但它不适用于现代Windows操作系统。