如何在本地机器上嗅探/侦听 HTTP? [关闭]

Posted

技术标签:

【中文标题】如何在本地机器上嗅探/侦听 HTTP? [关闭]【英文标题】:how do I Sniff/Listen HTTP on my local machine? [closed] 【发布时间】:2012-01-13 21:21:44 【问题描述】:

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

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

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

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

【问题讨论】:

什么是“不是真正的问题”?我应该删除它还是什么? 要在 HTTP 级别“嗅探”您需要一个代理。如果来自/到端口 80 的所有流量都通过它路由,则您可以拥有一个透明的。但是要实现它,您需要通过 Internet 网关在您的机器外部执行它,或者在您的机器上的 TCP 级别拦截它。像 WinPvap 这样的库将允许它,但是您必须处理整个 HTTP 协议才能获得所需的信息。 【参考方案1】:

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

【讨论】:

多年前我曾与 IngusSniffer 合作过 - 在 Francois Piette 的 home page 找到。但它不适用于现代 Windows 操作系统。【参考方案2】:

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

更新

如果您想编写另一个 Fiddler ;-) 请参阅此答案: Any resource/codes on how fiddler works?

更新 2

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

按照 Remy 的指示更改 WinInet 代理设置。比如看到这个问题,你只需要将代码从C++翻译成Delphi:C++/WinInet Change Proxy Settings Windows 7。

或者编写windows驱动支持抓包。但对于媒体应用来说,这似乎是更糟糕的选择。

【讨论】:

我希望能够在不设置网络浏览器代理的情况下监听端口 80(如果我理解正确,这就是 Fiddler 所做的)。 为什么不能设置网络浏览器代理设置? Indy 不使用 WinINet - Remy 只说 Fiddler 使用 @mjn - 那就更好了,想想吧。 如果您安装 WinPCap,它有自己的捕获驱动程序,因此您不必自己编写。像任何其他库一样,直接在您的用户模式应用程序中使用 WinPCap 自己的 API,它会为您与驱动程序对话。以这种方式编写网络嗅探器非常容易。然后您可以告诉它嗅探端口 80(或您需要的任何其他模式标准)上的所有流量并将嗅探到的数据传递给您。【参考方案3】:

我可以用Fiddler 或FiddlerCore 完成

【讨论】:

它们中的任何一个都是用 Delphi 编写并使用 THTTPServer 的吗?如果不是,这不能回答所提出的问题。

以上是关于如何在本地机器上嗅探/侦听 HTTP? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

http与重放攻击

2FSK 使用 Yardstick One 嗅探 RFCat

Python3 Scapy - 嗅探分段的 IP 数据包

如何在 iOS 中侦听通知关闭事件?

如何将事件侦听器添加到本地反应原生通知

监听端口是啥?