如何让Fiddler不再忽略本地主机的流量?

153

当使用 Fiddler 监视 Internet Explorer 中的 HTTP 请求和响应时,它会忽略所有流量指向 http://localhost 的流量。


我觉得这只是IE < 9的问题,对吧? - Josh Mouch
嗯...我的本地主机流量没有被默认忽略,我也用IE 11进行了测试。 - m3nda
我还不得不从IIS切换到IIS Express。 - niico
Fiddler曾经是一个非常好的工具,但现在它只是一个配置噩梦。 - The Muffin Man
16个回答

103

3
甜味。简单而有效。 - Bradley Mountford
13
这适用于卡西尼,但如果要连接使用SSL的网站或服务,则需要使用IIS。 - user20358
太棒了!完美地运行了 - 再也不能更简单了。 - narayan
2
使用Cygwin和curl时,以下命令对我无效: curl -X POST -H "application/json" -d '{"name":{"firstName":"eli", "lastName":"kool"}}' localhost.:61444/Inbound/Catch - justian17
19
WebAPI 无法与本地主机(localhost)一起使用。它会显示“Bad Request - Invalid Hostname”错误信息。 - Pramod Jangam

94

Fiddler的网站直接回答了这个问题

有几个建议的解决方法,但最简单的方法就是使用机器名称而不是“localhost”或“127.0.0.1”:

http://machinename/mytestpage.aspx

不确定为什么Fiddler的网站没有建议“在localhost后添加句点”的建议,我认为这是最好的建议。特别是在一些服务器环境中,我只能使用localhost(由于ActiveX控件、权限等)。 - Josh Mouch
3
因为一些网络服务器会将 localhost. 视为无效的主机名而拒绝连接。 - Aaron Jensen
4
在我的情况下,“localhost.” 和“machinename”被拒绝。 - The Muffin Man
3
注意,“localhost”在许多API上(或者127.0.0.1)是不起作用的。我使用了“http://localhost.fiddler”修改版,这对我来说完美地解决了问题。 - Vman
1
在某些情况下,MachineName 更受欢迎,而 127.0.0.1 可能会被 IIS 拒绝。 - lyolikaa

46

Fiddler v4.5.1.0将允许您将"localhost"替换为"localhost.fiddler",并将localhost呈现为在您的机器上运行的接收服务器的主机名。

这样在使用Visual Studio内置Web服务器连接WCF服务时就可以避免“主机无法识别”的错误。

也就是说,您可以使用http://localhost.fiddler:51900/service.wcf而不是http://localhost:51900/service.wcf


2
完美运作!由于我的工作网络配置,其他建议都没有起作用。这是唯一对我有效的技巧。 - Zorthgo
@Zorthgo 很高兴听到这个好消息。 :) - Jonathan

44

1
截至2013年4月:http://fiddler2.com/documentation/Configure-Fiddler/Tasks/MonitorLocalTraffic 附言:感谢Eric提供这个极好的工具。 - Pete
在本地主机的末尾添加句号是最好的技巧,而 Fiddler 的网站并没有提到这一点。 - Josh Mouch
尝试了此页面上的其他各种解决方案:添加句点,将主机名从“localhost”更改为我的计算机名称。两者都没有起作用。使用工作区文档中提到的“ipv4.fiddler”替换“localhost”可以解决问题。 - Simon Elms
在项目文件中编码地址的情况下,这些文件位于源代码库中,并分发给团队中的所有开发人员(考虑Mercurial/Git),或者并非所有开发人员都实际拥有Fiddler的情况下,这些解决方案是不现实的,会引起更多问题。需要的是一种Fiddler可以在项目之外运行且对该项目或其配置没有任何影响的方法。 - user2960136
在我的情况下是这样的。我使用SOAP-UI发送了一个SOAP HTTP请求,但Fiddler 4没有获取到它。然后我使用POSTMAN发送了同样的HTTP请求,并成功获取到了它。 - Jérôme MEVEL

8

5

若要让Fiddler在本地IIS上捕获来自localhost的流量,有3个步骤(我在我的电脑上试过了):

  1. 点击工具菜单> Fiddler选项。确保已选中“允许远程客户端连接”。关闭Fiddler。

enter image description here

  1. 在KEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2内创建一个名为ReverseProxyForPort的新DWORD。将DWORD设为80端口(此处选择十进制)。重新启动Fiddler。

enter image description here

  1. 将8888端口添加到客户端定义的地址中。例如 localhost:8888/MyService/WebAPI/v1/

是的,这个设置使得Fiddler作为反向代理运行,它将传入的请求转发到不同的端口。在这个例子中,它将发送到8888端口的请求转发到80端口。 - ozanmut
对我来说最复杂的是完全忽略本地主机并将所有其他流量发送到Fiddler进行处理。您必须绕过本地主机,但也要在函数中排除它(您可以尝试使用隐藏304规则进行测试)。因此,我以以下方式排除了它:if ((m_EnableProxy) && !(oSession.host =="127.0.0.1" || oSession.host =="localhost" || oSession.host =="ipv4.fiddler")) { oSession["X-OverrideGateway"] = "socks=127.0.0.1:8080"; oSession["ui-backcolor"] = "#EFEF9F"; }。此函数应该在onBeforeRequest中。 - m3nda

4

4
使用默认配置的 Fiddler v4.6 无法查看来自“localhost”的任何流量。尝试了这里提供的许多建议,但是均未奏效。
启用帮助->故障排除,可以看到更多的请求。会话以删除线字体标记,并给出的原因是“由于状态栏>进程过滤器而被隐藏”。
发现Eric Lawrence给出了与同样问题的人的回复http://www.telerik.com/forums/fiddler-not-capturing-ios-traffic-even-though-echo-service-works 基本上要做的是:查看 Fiddler 窗口底部的状态栏,在该栏中的第二个小“托盘”上可能显示类似于“Web 浏览器”的内容。点击它,然后切换到“所有进程”。 Fiddler状态栏

3

2
请使用本地IP地址(而不是127.0.0.1),例如192.16.0.88等。打开cmd.exe并输入ipconfig,您将看到它。

alt text


它不起作用。看起来你无法在本地连接到自己的IP地址。 - zeocrash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接