【问题标题】:Is there a way to configure Fiddler to intercept HTTP calls from a Windows service?有没有办法配置 Fiddler 来拦截来自 Windows 服务的 HTTP 调用?
【发布时间】:2010-05-27 00:21:42
【问题描述】:

我们正在更换一个旧的(5 年以上)Windows 服务应用程序,该应用程序是用 VS2005 构建的,它会进行 HTTP GET 调用。有几件事使这变得困难(例如 Web 服务器在客户的网络上,我们无法直接连接到它),不幸的是,我们不希望关闭正在运行的系统来用 WinForm 替换它Fiddler 可以监控的版本。新代码似乎可以正确执行所有操作,但遗憾的是,它无法通过身份验证。

有没有办法配置 Fiddler (2.2.9.1) 以拦截来自 Windows 服务的 HTTP 调用?

【问题讨论】:

    标签: c# fiddler


    【解决方案1】:

    Codeka 提供了一条线索,让我朝着正确的方向前进。仍然缺少的部分是如何配置代理。 <appname>.exe.config needs <defaultProxy> specified 添加如下部分:

    <configuration>
    
        <!-- The `<system.net>` element is an immediate child of `<configuration>` but can appear anywhere in app.config -->
        <system.net>
            <defaultProxy enabled="true">
                <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/>
            </defaultProxy>
        </system.net>
    
    </configuration>
    

    完成后,Windows 服务的 http 流量开始流经 Fiddler。

    【讨论】:

    • @Eric - 感谢您发布链接。在遵循 Codeka 的线索时,我实际上已经看到了该常见问题解答项目。它应用于 Windows 服务并不是很明显。
    • FWIW,它与“Windows 服务”无关,而与您的服务是用 .NET 编写的这一事实有关。 :-)
    • 如果它是本机 Windows 服务而不是 .NET 服务,您知道如何做到这一点吗?
    【解决方案2】:

    Fiddler 仅充当 HTTP 代理,因此如果您可以在服务中配置代理,则可以将其配置为通过 Fiddler。这是否可能很难说......

    如果这不起作用,您可以通过在第二台计算机上运行 Fiddler 并将其配置为侦听端口 80 来实现。然后在您的“测试”计算机上,编辑您的主机文件,使其指向第二台计算机反而。假设 Web 服务位于 www.example.com,您设置了测试服务器,以便“www.example.com”指向您的第二台计算机(运行 Fiddler)。然后,当服务连接到“www.example.com”时,它实际上会连接到 Fiddler。 Fiddler 将在记录请求/响应后将连接转发到 real www.example.com。

    我还没有测试过上述内容,但我认为它会起作用。显然,如果您可以在您的服务中配置代理设置会更容易!

    【讨论】:

      【解决方案3】:

      当然,如果 Fiddler 不工作,总是有Wireshark。作为提示,请在 Wireshark 中使用几个过滤器(例如,仅显示进出目标 IP 的数据包)以避免感觉数据溢出。

      【讨论】:

        【解决方案4】:

        由于 .NET 绕过 localhost 和 127.0.0.1 的代理,只需硬编码您的机器名称而不是您正在测试的 url。

        //myUrl = "http://127.0.0.1/myservice";
        myUrl = "http://mymachine/myservice";
        

        【讨论】:

          【解决方案5】:

          注意:重要提示:无论其他设置如何,.NET 将始终绕过包含 localhost 的 URL 的 Fiddler 代理。因此,不要使用 localhost,而是将代码更改为引用机器名称。例如:

          这个 URL 不会出现在 Fiddler 中:

          http://localhost/X509SignCodeService/X509SigningService.asmx 此 URL 将出现在 Fiddler 中:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-02-09
            • 1970-01-01
            • 2019-03-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-24
            • 1970-01-01
            相关资源
            最近更新 更多