【问题标题】:Capture internal request calls in fiddler在提琴手中捕获内部请求调用
【发布时间】:2013-09-16 11:37:53
【问题描述】:

我有 Web 应用程序并在内部调用 WCF 和 ASMX 服务来获取信息。 但是,在 fildder 中,我只能看到唯一的 Web 应用程序 aspx 请求,而不是 WCF 和 asmx 服务调用。

如何在 Fiddler trafiice 中捕获那些 WCF 和 asmx 调用。

如果 fiddler 没有该选项,请推荐一些其他工具。

【问题讨论】:

    标签: c# wcf asmx fiddler


    【解决方案1】:

    默认情况下,Fiddler 作为代理服务器运行,它捕获通过它的流量。

    当您在客户端上运行 Fiddler 时,您的浏览器会通过 Fiddler 将请求传递到服务器。如果您的客户端和服务器在同一台 PC 上,由于 .NET Framework 中的硬编码限制,发送到 localhost127.0.0.1 的流量可能会绕过 Fiddler(浏览器不存在此问题)。

    要解决此问题,您可以更新 .NET 代码以使用 Fiddler 支持的 localhost别名 之一,即:localhost.fiddleripv4.fiddleripv6.fiddler

    如果 Fiddler 在服务器上运行,并且您想要捕获服务器端代码发出的请求(例如来自 ASP.NET 的出站请求),那么您需要配置您的 ASP.NET 应用程序以发送它的到 Fiddler 的流量。这是因为,当 Fiddler 运行时,它会将 当前用户 配置为将其流量发送到 Fiddler,但 ASP.NET 在 Windows 服务帐户 内而不是在当前用户的帐户内运行.有几种方法可以捕获从 ASP.NET 内部发出的请求,但this blog post 总结了最简单的方法。更新适当的machine.config(通常是文件的 64 位版本)以包含该行

    <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />

    现在,如果 Fiddler 在不同的服务器上运行,那么您必须配置代理设置以指向 Fiddler 运行的任何机器,例如 p>

    <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://MyFiddlerServer:8888" usesystemdefault="false" />

    【讨论】:

    • 嗨,Eric,我的情况是,我们在 QA/UAT/PROD 服务器中有 Web 应用程序。这些 Web 应用程序在内部使用了一些 WCF 服务和 asmx 服务。现在,我正在本地 PC 中浏览这些 QA/UAT/PROD Web 应用程序,而 filddler 仅安装在我的本地 PC 中。在这种情况下,我如何捕获内部 WCF 和 asmx 请求。这里没有我的本地服务器的概念,除了浏览器和提琴手之外,我的本地服务器中没有任何内容。
    • @user2783742 您需要在托管 QA/prod 代码的服务器上编辑配置文件,并使其指向您的本地计算机。如 EricLaw 所示
    【解决方案2】:

    Fiddler 的工作原理是在一个端口(例如 8888)拦截 Web 请求,然后将请求转发到您在 WCF 中设置的实际目标端口(例如 8000)。这就是允许 Fiddler 捕获主机和客户端之间的双向流量的原因。

    因此,您需要在客户端或主机上运行提琴手。然后,在启动 Fiddler 后,转到 Tools 菜单并选择 Fiddler Options,确保它正在侦听端口 8888。接下来,转到 Rules 菜单,选择 Customize Rules 并在 Handlers 类中添加如下代码:

    if (oSession.host=="localhost:8888") { 
         oSession.host="localhost:8000";
    }
    

    接下来,更改您的客户端应用程序,使其使用 8888(而不是普通端口号),然后运行该程序。如果设置正确,Fiddler 将充当中间人,拦截并记录请求和响应。

    祝你好运。如果这可以作为答案,请不要忘记标记它。

    【讨论】:

    • 嗨大脑,如果它在我的本地,他们建议的方式是正确的。但是,请问托管在 QA/UAT/PROD 环境中的应用程序如何获取内部流量。两者都是应用程序,WCF 服务位于不同的服务器中。
    • 好的,只需将 QA 或 Prod 服务器的 URL 替换为规则中的“localhost”即可。所以“MyQAServer:8888”而不是“localhost:8888”。
    • 嗨大脑,我尝试了上述建议。但没有运气。能否请您建议我需要更改的确切位置以及我的 secnario,我们在 QA/UAT/PROD 服务器中有 Web 应用程序。这些 Web 应用程序在内部使用了一些 WCF 服务和 asmx 服务。现在,我正在本地 PC 中浏览这些 QA/UAT/PROD Web 应用程序,而 filddler 仅安装在我的本地 PC 中。在这种情况下,我如何捕获内部 WCF 和 asmx 请求。这里没有我的本地服务器的概念,除了浏览器和提琴手之外,我的本地服务器中什么也没有
    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多