繁体   English   中英

在fiddler中捕获内部请求调用

[英]Capture internal request calls in fiddler

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

我如何在Fiddler流量中捕获那些WCF和asmx调用。

如果fiddler没有这个选项,请建议其他一些工具。

默认情况下,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内部发出的请求,但是这篇博文总结了最简单的方法。 更新相应的machine.config (通常是文件的64位版本)以包含该行

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

现在,如果提琴手是在不同的服务器上运行,那么你就必须配置代理服务器设置为指向任何机器提琴手运行上,如

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM