Fiddler Everywhere抓取http://localhost 或 http://127.0.0.1 的流量
本地调试项目时,经常都是使用http://localhost或者http://127.0.0.1来访问项目,不知道怎么搞的,新的Fiddler Everywhere默认好像捕捉不到本地流量了,于是查看官方文档解决了。
References:
- https://docs.telerik.com/fiddler/Observe-Traffic/Troubleshooting/NoTrafficToLocalhost Fiddler官方解决方案
- https://docs.telerik.com/fiddler-everywhere/user-guide/live-traffic/auto-responder/rules-edtor 添加Rules方法
- https://stackoverflow.com/questions/771150/ipv4-fiddler-how-does-it-work
问题产生的原因和解决方案官方都说的非常清楚,这里简单翻译下:
由于Internet Explorer和.NET Framework 已经在代码中写死了,对于localhost请求不会走代理。所以Fiddler就捕捉不到这样的流量。
IE 9允许Fiddler代理localhost或127.0.0.1的流量,因此不需要额外的设置。
在火狐上应该不会出现这种问题,因为火狐的FiddlerHook插件解决了这个问题,可以代理本地流量。
我是在谷歌上尝试的,官方给出的三种方案我只试了两种,都可以,最后一种没太懂怎么操作,放弃了,有需要可以自行参考上文链接研究。
- 方案1:使用Machine Name 或 Hostname
不使用localhost,使用Hostname。获取本机Hostname的方式有多种,这里说两个比较方便的:
- 鼠标放在Fiddler界面右下角的Connected上就能看到
- 在CMD中输入hostname也可以显示Hostname
比如:当要访问http://localhost:8080/demo
这个地址时,换成访问http://desktop-82s8r2b:8080/demo
。
- 方案2:使用
http://ipv4.fiddler
使用http://ipv4.fiddler
访问localhost的IPv4地址。使用http://ipv6.fiddler
访问localhost的IPv6地址,或者直接使用http://localhost.fiddler
。
比如:当要访问http://localhost:8080/demo
这个地址时,换成访问http://ipv4.fiddler:8080/demo
。
由于Fiddler软件内部拦截了ipv4.fiddler这个域名的访问并自动转换到localhost,所以Fiddler开启捕捉时访问这个域名和访问localhost是一样的,这样就破解了localhost不能被代理的限制。
- 方案3:更新Rules File
由于没使用过Fiddler的Rules File,看了眼,有点复杂的样子,暂时用不到也不想去研究了。可以自行研究。
Fiddler还是很好用的,更新后界面也不错,和Postman一样,使用了Electron。