解决fiddler抓不到浏览器包的问题
不管是对于开发还是测试同学,fiddler抓包都是一个非常实用的工具。但是有时候浏览器的包就是抓不到了,也不知道具体是什么原因。下面我把自己在解决这个问题过程中的一些思考和经验分享一下。
安装fiddler
安装fiddler的教程我就不写了,Google一下会有一大把非常实用的教程。这里附上其中一篇较为全面的教程:http://www.hangge.com/blog/cache/detail_1697.html
fiddler抓包页面,要保证是capture状态,另外入股filters设置了过来host,要在actions中选择执行run filterset now使设置生效和激活捕获状态。
简单介绍fiddler的工作原理
Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。使用了Fiddler之后,web客户端和服务器的请求如下所示:
解决fiddler抓不到包的方法
没有打开fiddler之前,我们去看一下浏览器的代理设置是怎么样的。首先打开浏览器配置:chrome://settings/ ,并打开代理设置
弹窗Internet属性,切换到连接tab,点击局域网设置
查看局域网的代理配置,现在是空白的
首次打开fiddler后,导航栏中间有个黄色的长条提示“the system proxy was changed. click to reenable capturing”,我们要点击一下中间的黄条,重新激活一下捕获。
再次打开浏览器的代理配置,可以看到浏览器的代理配置已经被fiddler自动修改了。代理配置被改为了127.0.0.1:8888。到了这里,基本上已经可以抓到包了。
如果此时还不能抓到包,可以检查一下浏览器是不是还用了类似Proxy SwitchyOmega的代理插件。如果是,可以把SwitchyOmega的代理设置换为系统代理,或者可以先禁用它。(理由很简单,一个电脑不能设置两个代理,走了SwitchyOmega代理就不能走fiddler的)
有时候代理插件也关了,但是fiddler还是抓不到包怎么办。还是回到代理设置这里,发现自动配置中勾选了使用自动配置脚本,究其原因发现是电脑上装过一个软件可以给浏览器自动配置代理地址,并且每次都是自动检测设置的,这就导致fiddler的代理配置在浏览器打开的时候每次都会被这个自动配置替换掉,所以就走不到fiddler的代理配置中去。最后,选择关掉该软件修改代理配置的权限后,问题就迎刃而解了。
最后,总结一下。fiddler是一款很实用的抓包调试工具,大家在遇到问题的时候一定要多思考网络的原理和本质,举一反三。