[英]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中的硬编码限制,发送到localhost
或127.0.0.1
流量可能会绕过Fiddler(浏览器没有此问题)。
要解决此问题,您可以更新.NET代码以获取Fiddler支持的localhost
的别名之一,即: localhost.fiddler
或ipv4.fiddler
或ipv6.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.