Fiddler是一款功能非常强大的HTTP协议代理工具,能监听客户端和服务器间的HTTP通讯。在日常工作中,Fiddler是应用非常广泛的抓包和调试工具。掌握Fiddler,帮你轻松搞定接口调试。
Fiddler介绍
Fiddler简介
Fiddler是一款免费、灵活、操作简单、功能强大的HTTP代理工具,是目前最常用的HTTP抓包工具之一。可以抓取所有的HTTP/HTTPS包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等功能。
Fiddler工作原理
Fiddler是在客户端和服务端之间建立的的HTTP代理服务器,能够监听客户端发出的请求和服务端返回的响应结果。

图解:
在客户端和服务器之间,建立了一个HTTP代理服务器
当启动的时候,Fiddler会默认把自己设置为系统代理,来监听客户端的HTTP/HTTPS请求
默认代理地址为:127.0.0.1默认端口为:8888
浏览器访问WEB网站的时候,请求报文会先发送到Fiddler
Fiddler再把请求报文转发给服务器
Web服务器返回的响应报文,也会先达到Fiddler
Fiddler再把响应报文返回给浏览器
原理剖析
(1)系统代理
上面说过,Fiddler启动的时候,会把自己设置为系统代理。下面我们来进行验证(win10为例)。
双击启动Fiddler后,依次点击操作系统的开始菜单-->设置-->网络和Internet-->代理,可以看到手动设置代理这里,<使用代理服务器>的开关变为「开」,地址的内容为Fiddler的代理地址,端口为8888。
我们还可以看一下Fiddler操作界面。依次点击Fiddler菜单栏-->Tools-->Options,选Connections,可以看到Fiddler默认的端口是8888。
由此,充分说明Fiddler作为一个服务器启动,它默认占用的端口为8888,启动的同时,会自动去修改操作系统的代理设置。
此外,我们还可以在浏览器的地址栏中,输入:http://localhost:8888,可以看到出现一个和Fiddler相关的网页。
当关闭Fiddler后,系统代理开关又自动变回「关」状态,地址栏中内容变为空,客户端请求和服务端响应不再通过Fiddler进行代理转发。
(2)抓包
当我们访问网页时,浏览器会通过HTTP(S)协议向服务端请求资源,当开启Fiddler后,HTTP请求不会直接发送给服务端,而是需要通过Fiddler代理进行转发,服务端收到请求进行响应,服务端响应同样会通过Fiddler代理进行转发。在Fiddler左侧的会话列表,我们可以看到刚才浏览过的所有网页,会话列表中的1条session对应1个(HTTP/HTTPS)请求。

主要抓包工具比对
市场上抓包工具有很多,如:wireshark、httpwatch、charles、BurpSuite开发者工具,为何选择Fiddler。

HTTPS证书安装
默认情况下,Fiddler只能监听HTTP请求。当打开HTTPS网页时(如https://www.baidu.com),请求使用HTTPS协议建立连接通道,Fiddler无法解析这些加密请求。如下图,会话列表中HTTPS的请求,Host列显示为:Tunnelto,#列显示灰色的锁状态,请求报文的请求体显示乱码。这种种迹象表明Fiddler没有安装HTTPS证书,导致无法抓取HTTPS请求包。
想要抓取HTTPS请求包,需要进行设置。设置路径:Tool->Options->HTTPS,勾选如图内容。
点击“Actions”,选择ExportRootCertifificatetoDesktop,点击“yes”,导出证书到桌面后,重启Fiddler。
打开谷歌浏览器,点击隐私和安全-管理设备证书,将Fiddler证书导入受信任的证书,点击“关闭”。

浏览HTTPS网页,可以在Fiddler会话列表中看到,HTTPS数据包已经成功被抓取。

局部断点
局部断点,是针对某条特定的请求设置断点进行调试。在命令行中输入需要设置断点的请求指令,也是常用的一种断调试方式。常用断点调试命令如下:
请求前断点:bpu空格+接口地址,回车
响应后断点:bpafter空格+接口地址,回车
响应状态码断点:bps空格+响应状态码,回车HTTP
请求方式断点:bpm空格+请求方式,回车
取消所有请求前断点:bpu+回车
取消所有响应后断点:bpafter+回车
取消所有响应状态码断点:bps+回车
取消所有请求方式断点:bpm+回车
请求前断点
通过设置请求前断点,来篡改请求参数
案例:以博客园的用户注册为例
第一步:浏览器打开网页:
https://account.cnblogs.com/signup
第二步:在fiddler命令窗口输入:
bpuhttps://account.cnblogs.com/signup
第三步:在第一步打开的网页中,填写注册信息,滑动验证码,点击【注册】按钮
第四步:在Fiddler会话列表中,可以看到这个请求已经被设置了请求前断点。
第五步:点击这个会话请求,再点击右侧的WebForms表单,可以看到我们刚才填写的注册信息
第六步:篡改刚才填写的邮件地址、手机号码
第七步:点击【BreakonRep】、【RuntoComp】2个按钮。
第八步:观察响应报文

响应报文如下:

从这个案例可以看出,web前端填写的邮件地址、手机号码等信息,可以在fiddler中可以进篡改。如果后端接口没有对数据进行校验,那么我们填写的不合法邮件地址、手机号码将变得合法了。但是后端接口,如果不通过篡改数据来做测试,web前端根本没办法输入非法的邮箱和手机号。
常用设置与技巧
隐藏Host为tunnelto的会话
Rules->HideConnects,把前面的勾勾起来。HTTPS解密失败的会话不会显示。
隐藏图片类会话
Rules->Hideimagerequests,把前面的勾勾起来。图片类会话不会显示。
快速清空会话列表
按快捷键:Ctrl+X,可以快速清空会话列表。
上一条:Python数据挖掘-应用toad包中的detect函数进行描述性统计
下一条:Fiddler抓包软件入门