Fiddler基本原理
Fiddler是一款的强大的Web调试工具,他是一个位于客户端和服务器端的HTTP代理,它能记录所有客户端和服务器的http和https请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据;客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,所以Fiddler与客户端与服务器工作的原理图如下:
使用Fiddler的话,需要先设置浏览器的代理地址,才可以抓取到浏览器的数据包。而很方便的是在你启动该工具后,它就已经自动帮你设置好了浏览器的代理了,当关闭后,它又将浏览器代理还原了。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler
如果发现Fiddler没有自动设置浏览器代理的话,那就得自己动手去浏览器进行设置代理操作了。
浏览器代理设置
1)IE和360代理设置:默认IE和360代理都是自动开启的,Fiddler启动后自动修改代理。
代理查看方式:浏览器菜单栏上:工具—>Internet选项—>连接—>局域网设置—>高级代理。
2)火狐浏览器代理设置:火狐浏览器启动之后,Fiddler没有反应,不会自动修改代理,是因为火狐代理是自己独立的,不会像IE、360那样自动改变;
代理设置:菜单栏->选项——>高级——>网络——>连接——>设置——>手动配置代理——>Http代理和端口输入(与Fiddler代理端口保持一致),代理服务器地址127.0.0.1,即本机,端口为8888(可根据第4点的步骤进行查看);
3)谷歌浏览器代理设置:工具——>设置——>拖动页面到底部,点击:显示高级设置按钮——>网络——>更改代理服务器设置——>点击:局域网设置——>高级——>进入代理服务器设置;
4)Fiddler自己的端口查看:Fiddler->Tools——>Options——>Connections下的Fiddler listens on port:8888,8888就是我们Fiddler默认的端口号,如下图;
Fiddler默认端口号是8888,如果要修改,修改之后要重启Fiddler。
Fiddler版本
操作系统低于win7或是XP系统用Fiddler2就行,win7或win7以上版本,用fiddler4 版本,建议都用Fiddler4版本;
Fiddler如何捕获HTTPS会话
默认Fiddler只捕获HTTP会话,不会捕获HTTPS会话,如果需要对HTTP会话进行捕获则需要对Fiddler进行设置,设置步骤如下:
1)打开Fiddler Tool->Fiddler Options->HTTPS tab
下拉框里面的选项:
from all processes : 抓取所有的 https 程序, 包括 本机 和 手机
from browsers only : 只抓取浏览器中的 https 请求
from non-browsers only : 只抓取除了浏览器之外的所有 https 请求
from remote clients only : 抓取远程的客户端的 https ,可以代表手机
2)选中上面的所有checkbox,如上图, 然后弹出如下的对话框,点击"YES"
3)再点击Yes
4)点击是
5)点击确定,这样Fiddler证书就已经添加成功了,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称
6)可以点击Action查看已安装的证书。如下图
7)对浏览器安装证书
7.1)导出证书:
导出的证书显示如下
7.2)在浏览器的高级选项中导入证书
这样就完成了PC端浏览器https协议的抓包设置
Fiddler远程抓包
Fiddler是代理机制,所以我们也可以实现远程操作,Fiddler默认只开启本地,若要抓取远程需要打开远程设置,以我本机电脑远程抓包另一台pc为例
1) 我本机电脑安装Fiddler,然后点击Fiddler菜单栏的Tools——>Options——>Connections——>勾选Allow remote computers connect;
2)查询我本机电脑的IP地址:cmd下使用ipconfig进行查看
3)设置另一台PC的浏览器代理,代理服务器地址为我本地IP,代理端口为Fiddler默认的8888端口
4)在另一台PC上进行浏览器操作,我本地的Fiddler上就可以抓取捕获对应数据,指定代理之后,无论Fiddler抓包开关是关闭还是打开,数据都会传输过来