【问题标题】:Capturing HTTP requests捕获 HTTP 请求
【发布时间】:2009-02-11 00:30:55
【问题描述】:

有没有办法使用 C# 监视和捕获来自机器的所有传出 HTTP 请求?

我需要一种独立于浏览器的方式来记录访问过的 URL。

【问题讨论】:

    标签: c# http


    【解决方案1】:

    我使用提琴手(http://www.fiddler2.com

    【讨论】:

      【解决方案2】:

      您可能希望使用现有的网络接口捕获库(如 pcap 或 winpcap)来执行此操作。 自己重写所有必要的东西会非常耗时。

      链接到Pcap

      链接到WinPcap

      编辑:刚刚看到有人还为 winpcap 编写了 C# 绑定:SharpPcap

      【讨论】:

      • 其他帖子很有帮助,但我可以让应用程序捕获传出(以及传入)数据包的唯一方法是安装 WinPcap 驱动程序并使用 SharpPcap 库调用它。事实证明,一些操作系统/硬件设置不允许您使用普通的旧 C# 套接字获取传出数据包。
      • 不仅仅是套接字。出于“安全原因”,操作系统网络驱动程序(在 Windows post SP2 中)限制了您可以看到通过的数据包类型。为了获得较低级别的访问权限,WinPcap (Windows) 和 libpcap (*nix) 实现了它们自己的网络内核驱动程序。
      • 你成功了吗?如果是,你能提供怎么做吗?
      【解决方案3】:

      听起来您正在使用某种“数据包嗅探”实用程序。

      以下是代码项目网站上关于用 C# 编写的数据包嗅探器(带有可下载源代码)的文章的几个链接:

      Packet Capture and Analayzer

      A Network Sniffer in C#

      如果您只是在捕获访问过的 URL 之后,这些实用程序可能有点过头了,但是,您可以从 HTTP 数据包中提取 URL 并丢弃其余部分,但是,您可能还希望捕获所有数据包信息,在这种情况下,这些实用程序会有所帮助。

      【讨论】:

      • 我正在寻找 C 语言中的 http 嗅探器代码。您能否建议任何资源..
      【解决方案4】:

      通过某种代理设置,您可能会节省大量时间和精力。一个不错的本地计算机解决方案是 Fiddler(需要 Windows),或者类似 Squid 服务器的网络解决方案。

      【讨论】:

        【解决方案5】:

        我希望Wirehark 对你有用。 它是免费且跨平台的。 还, “Wireshark 是世界上最重要的网络协议分析仪,并且是许多行业和教育机构事实上(通常是法律上)的标准”

        看, Wireshark-Wikipedia

        【讨论】:

        • 感谢您的建议,但我看不到从 C# 调用它的方法。此外,它是基于 WinPcap 构建的,所以我不妨直接使用它。
        • 嗯,我希望你可以按照你在评论中所说的那样使用 WinPcap 来获得正确的答案。
        【解决方案6】:

        此外,在 C# 中为此目的编写一个简单的 http 代理是一项微不足道的任务。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-20
        • 1970-01-01
        相关资源
        最近更新 更多