抓包工具之Fiddler

在平时工作中,我们测试时经常需要通过抓包的方式看看对应请求信息,或者修改请求和响应,这时候我们就需要用一些抓包工具,今天小编就给大家说说抓包工具-fiddler,希望能够帮助到大家

Fiddler简介

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式
Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。

常见抓包工具对比

工具 优点 缺点
Httpwatch 基于浏览器的;视图界面友好,能分段展示http/https 请求各阶段的处理过程,常用于页面性能排查;安装使用简单; 不支持chrome浏览器;不能篡改请求和响应,只能看
fiddler 独立工具,可以查看修改对应请求和响应,常用于功能测试和安全测试;支持PC/Linux/移动端设备之间的通讯;适应于windows系统 安装使用较为复杂;不便于mac系统使用
firebug Firebug是firefox下的一个扩展,能进行网络分析还能够调试所有网站语言,支持各种浏览器 修改只是在本地,页面刷新不会保存修改
wireshark 能够获取http/https/cp/udp协议请求信息 不能解密https,不便于https协议的请求分析

Fiddler工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler,或者去掉代理设置
Fiddler可以支持:
分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据

Fiddler安装

Fiddler下载

官网下载:https://www.telerik.com/download/fiddler
抓包工具之Fiddler

Fiddler安装

1、下载完成后双击安装包
抓包工具之Fiddler
2、点击I Agree按钮,然后选择你想要存放的安装目录,如果不需要修改,使用默认的即可。
抓包工具之Fiddler
3、点击Install按钮,等待一会时间后即可安装成功。
4、点击Close按钮
到这里我们就初步安装成功了

Fiddler配置支持HTTPS

1、打开fiddler,点击Tools–Telerik Fiddler Options
抓包工具之Fiddler
2、点击HTTPS标签,框中两个都打“√”,保存
抓包工具之Fiddler
3、勾选连接以及查看或设置端口(后面所有配置项的端口都必须要与fiddler这里的端口保持一致,如果这里发生了变化,其他设置项的端口也需要发生变化)
抓包工具之Fiddler
3、本地安装fiddler证书
点击“Actions”–>Trust Root Certificate–>Yes—>是
抓包工具之Fiddler
抓包工具之Fiddler
抓包工具之Fiddler

Fiddler支持PC端浏览器抓包配置

火狐浏览器举例
1、菜单–>选项–>常规–>网络设置–>设置
抓包工具之Fiddler
抓包工具之Fiddler
2、设置手动代理“127.0.0.1”,端口为fiddler端口“8888”,勾选HTTPS选项,这样https协议的请求也可正常获取
抓包工具之Fiddler
其他浏览器也是这种方式设置即可,这样就可以通过fiddler对浏览器的请求进行抓包查看了
抓包工具之Fiddler

Fiddler支持移动端手机抓包配置

手机配置

1、查看自己电脑本机ip
(a)调起电脑的运行环境【win+R】输入cmd,“回车”
抓包工具之Fiddler
(b)在弹出的“cmd.exe”中输入ipconfig,查看IPv4对应的地址,就是你本机的ip
抓包工具之Fiddler
2、设置手机代理(手机所连WiFi必须与电脑相同)
(a)首先要看fiddler的端口
抓包工具之Fiddler
(b)设置手机代理
ios手机
点开无线局域网,点击WiFi后面的
抓包工具之Fiddler

拉到页面下方的“HTTP代理”,选择手动,服务器填写电脑IP地址端口与fiddler的端口保持一致,填8888,直接返回
抓包工具之Fiddler
Android手机
更改WiFi配置页,点击显示高级选项,代理服务器选择手动
抓包工具之Fiddler

配置代理主机名是你的ip,端口与fiddler的端口保持一致,填8888,保存
抓包工具之Fiddler
3、手机下载fiddler证书
手机连接好代理,并且打开fiddler之后,打开手机浏览器,地址栏输入“电脑本机ip:8888”(比如:10.252.181.131:8888),回车
点击“FiddlerRoot certificate”,按步骤安装证书即可
注:更换ip时,需要重新安装新ip的fiddler证书!!!!
抓包工具之Fiddler
抓包工具之Fiddler
抓包工具之Fiddler
抓包工具之Fiddler
4、首次配置代理后需重启fiddler
首次配置手机代理的时候,你可能会发现,fiddler并没有成功抓包,这时你需要关闭fiddler重启

手机调试配置环境

1、打开host:C:\Windows\System32\drivers\etc的
2、然后配置host
服务器ip 域名
eg:10.9.193.198 bj.58.com
3、打开fiddler,访问对应域名即可

Fiddler常见问题解答

问题一: ios手机安装证书之后,但是捕获的 https 请求还是看不到内容,一直显示 tunnel to xxx 443
解决办法:
ios10.3以后证书默认不开启,需要手动开启并重启手机才可以生效; 同时fiddle需要安装58证书,浏览器也需要安装58证书才可以在启动fiddle后
10.3系统在手机设置-通用-关于本机,最后一个受信任证书存储区里面,把fiddler的证书信任下正常浏览网页
问题二: fiddler无法成功安装
解决方法:fiddler是用C#写出来的语言,所以fidder安装前必须先安装.net Framework 最新版本才行,否则无法安装成功

Fiddler使用

抓包工具之Fiddler

会话列含义

Result:HTTP状态码 
Protocol:请求使用的协议,如HTTP/HTTPS/FTP等
HOST:请求地址的主机名或域名
ServerIP:请求的域名访问的具体ip
URL:请求资源的位置
Body:请求大小
Caching:请求的缓存过期时间或者缓存控制值
Content-Type:请求响应的类型
Process:发送此请求的进程ID
Comments:备注
Custom:自定义值
#:抓取HTTP Request的顺序,从1开始,以此递增

Fiddler常用菜单

**1、Capture Traffic **
启用捕获功能,快捷键 F12
此功能的开启/关闭状态,程序安装后默认是开启的。可以在 Fiddler 底部状态栏最左侧看到:(开启状态)、(关闭状态)
2、Load Archive
载入本地保存的 Session 压缩包
3、Save 保存
All Sessions… ——保存捕获到的全部 Session 到压缩包
Selected Sessions
in ArchiveZip… ——保存当前选定的 Session 为压缩包
in Visual Studio Web Test… ——保存当前选定的 Session 为 Visual Studio Web Test
in Text… ——保存当前选定的 Session为文本
in Text (Headers only)… ——保存当前选定的 Session 为文本(仅 Header)
Request
Entire Request… ——保存当前选定的 Session 整个请求(包括 Header)
Request Body… ——保存当前选定的 Session 请求的内容(不包括 Header)
Response
Entire Response… ——保存当前选定的 Session 整个响应(包括 Header)
Response Body… ——保存当前选定的 Session 响应的内容(不包括 Header)
4、Properties ——当前选择 Session 的属性
包括 Session 状态、响应包的大小,客户端服务器信息(如进程、端口、传输字节数、TTLB、客户端IP、服务器IP、TTFB等),请求各环节的时间情况、WinINET 缓存信息等。
TTFB (Time-to-First-Byte) 是指:从第一个请求发出到测试工具接收到服务器应答数据的第一个字节之间的平均时间。
TTLB (Time-to-Last-Byte) 是指:从第一个请求发出到测试工具接收到服务器应答数据的最后一个字节之间的平均时间。
5、Exit ——退出 Fiddler

Fiddler常用快捷键

ctrl+X:清除屏幕请求信息
ctrl+R:打开fiddler的脚本,方便请求字段修改

Fiddler常见几种返回状态码

HTTP状态码主要分为5类:

以1开头:代表请求已被接受,需要继续处理;
以2开头:代表请求已成功被服务器接收、理解、并接受;
以3开头:代表需要客户端采取进一步的操作才能完成请求;
以4开头:代表了客户端看起来可能发生了错误,妨碍了服务器的处理;
以5开头:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

常见的几种状态码具体含义:

200:成功。请求已发送且响应已成功接收。
302:请求的URL已临时转移。
304:客户端的缓存资源是最新的,要客户端使用缓存。
400:坏请求。当目的服务器接收到请求但不理解细节所以无法处理时发生。
404:页面找不到。如果目标API已移动或已更新但未保留向后兼容性时发生。
500:内部服务器错误。服务器端发生了某种致命错误,且错误未被服务提供商捕获。
503:服务器目前无法为请求提供服务。
也可以通过鼠标点击状态栏该图标来进行切换。

Fiddler常用小技巧

自动修改请求的相关字段imei

使用场景: 有时在测试时候很多场景会通过imei,cookie进行分流,这时候我们就需要指定特定标识,让自己的请求能够命中对应试验路
操作方式:
ctr+R:打开fiddler脚本,找到static function OnBeforeRequest(oSession: Session) 方法,添加如下代码:
oSession.oRequest["openudid"] = "1111111";
oSession.oRequest["imei"] = "1111111";
保存脚本
重新打开fiddler,这时候手机请求的imei就会被fiddler修改成1111111去访问服务器

2、在fiddler控制台添加一列IP字段

使用场景: 手机配置好了,但是不知道自己访问的环境是否是自己想要的,这时候就可以通过ip列看自己请求的域名对应的访问ip是否符合预期
操作方式:
ctr+R:打开fiddler脚本,找到static function Main() 方法,添加如下代码:
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP",120,"X-HostIP")
保存脚本
重新打开fiddler,这时候手机请求的imei就会被fiddler修改成1111111去访问服务器

3、Fiddler设置界面column

在column标题处右键,如Url,可选择ensure all columns are visible,此时显示所有列。
在想隐藏的标题处右键,点击hide this column,即可隐藏。

4、自定义发送一个请求

使用场景: 有时在测试时会需要模拟http发送请求,这时候我们不需要手动去写发请求的工具,只需要运用fiddler的Composer 直接填写url即可发送,也可以通过修改对应head参数帮助实现不同维度参数请求
操作步骤: 运用 Composer 自定义请求发送服务器,Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求
Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
抓包工具之Fiddler

5、请求过滤

使用场景: 左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求
操作步骤: 选择Filters
勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host
Zone 指定只显示内网(Intranet)或互联网(Internet)的内容
Host 指定显示某个域名下的会话:如果框框为黄色(如图),表示修改未生效,点击红圈里的文字即可
抓包工具之Fiddler

6、响应时间查看

使用场景: 查看某个请求对应的响应时间,方便页面性能排查
操作方式:
Timeline 请求响应时间
在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间:
抓包工具之Fiddler

Fiddler内置命令与断点

命令行工具
抓包工具之Fiddler

命令 对应请求项 介绍 示例
All 问号后边跟一个字符串,可以匹配出包含这个字符串的请求 ?baidu
> Body 大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求 >1000
< Body 小于号跟大于号相反,匹配出请求大小,小于这个数字的请求 <100
= Result 等于号后面跟数字,可以匹配HTTP返回码 =200
@ Host @后面跟Host,可以匹配域名 @bj.58.com
select Content-Type select后面跟响应类型,可以匹配到相关的类型 select image
cls All 清空当前所有请求 cls
dump All 将所有请求打包成saz压缩包,保存到对应目录下可查看右下角目录地址 dump
start All 开始监听请求 start
stop All 停止监听请求 stop
中断
bpafter All bpafter后边跟一个字符串,表示中断所有包含该字符串的请求 bpafter baidu(输入bpafter解除断点)
bpu All 跟bpafter差不多,只不过这个是收到请求了,中断响应 bpu baidu(输入bpu解除断点)
bps Result 后面跟状态吗,表示中断所有是这个状态码的请求 bps 200(输入bps解除断点)
bpv /bpm HTTP方法 只中断HTTP方法的命令,HTTP方法如POST、GET bpv get(输入bpv解除断点)
g / go All 放行所有中断下来的请求 g