fiddler工具
学习目标
- 安装fiddler抓包工具
- 熟悉fiddler抓包工具界面
- 熟练使用fiddler抓包工具
1. fiddler介绍
- 目前最常用的HTTP抓包工具之一
- HTTP协议调试代理工具
- 客户端和服务器之间走http协议的资源会被fiddler工具抓取
2. fiddler作用
- 监控浏览器所有的HTTP/HTTPS的流量
- 查看、分析HTTP请求内容的细节
- 伪造客户端请求、服务器响应
- 测试网站性能
- 解密HTTPS的web会话
- 断点功能
- 第三方插件
3. 下载地址
Fiddler工具下载地址:www.telerik.com/fiddler
Fiddler证书生成器:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2
2. 安装流程
Fiddler工具安装:傻瓜式安装,仅需更改一个安装地址,其他一路下一步
Fiddler证书生成器安装:将证书生成器放在fiddler安装的目录下,然后进行傻瓜式安装
4. 使用场景
- 接口调试、接口测试、线上环境调试、web性能分析
- 判断前后端bug、开发环境hosts配置、mock、弱网断网模拟
5. 抓包原理

6. 界面概览

① 工具栏图标概览
注释 | 重新请求 | 删除会话 | 继续执行 | 流模式/缓冲模式 | 解码 | 保留会话 | 监控指定进程
寻找 | 保存会话 | 切图 | 计时 | 打开浏览器 | 清除IE缓存
编码/解码工具 | 弹出控制监控面板 | MSDN | 帮助
② 任务面板选项概览

统计 | 检查 | 自动响应 | 创作 | fiddler控制器 | 脚本 | 日志 | 过滤器 | 时间线
② 会话列表概览


③ 菜单项



7. 抓取B/S项目的HTTP包
- B/S指的是浏览器端的web项目
- HTTP包是未加密过的请求资源,对比HTTPS来说安全系数低,因此fiddler可以直接抓取HTTP包(不需要额外配置)

打开工具就可以直接抓取到http的资源请求包
8. 抓取HTTPS包
- 点击工具栏中Tools-->Options
- 切换到HTTPS选项卡,勾选Capture HTTPS CONNECTS(捕获HTTPS连接),勾选Decrypt HTTPS traffic(解密HTTPS流量)
- 第一次会弹出证书安装提示,若没有弹出提示,勾选Actions(操作)-> Trust Root Certificate(信任根证书),安装证书
- 第一次打开HTTPS流量会弹出证书安装提示,若没有弹出提示,勾选Actions(操作)-> Trust Root Certificate(信任根证书),安装证书
此时可以访问任意网站,看fiddler是否能抓取https的接口。注意:需要跨域的国外服务器网址需要配合VPN!
9. 抓取安卓APP包
- 由于安卓7.0以后的版本对数据传输加强了安全监测机制,因此若要使用抓包工具抓取安卓手机的接口,只能借助安卓手机模拟器,且版本在安卓7.0以下。建议使用雷电模拟器3.0的正式版
- 也可以使用安卓手机进行抓包,但会有很多接口无法抓取
以下以雷电3安卓模拟器做演示,安卓真机也是相同操作:
第一步:配置fiddler
选择菜单区域的Tools→Options...

选择 HTTPS,勾选 Decrypt HTTPS traffic 和 Ignore server certificate(unsafe)(忽略服务器证书(不安全))

选择connections 设置fiddler服务端口,勾选Allow remote computers to connect(允许远程计算机连接)

注意!改完fiddler配置后,需要重启fiddler!!
第二步:打开dos命令窗口,查询本地IP
执行命令:ipconfig

第三步:配置手机的wifi网络设置
划重点!!手机和fiddler所在电脑 处于同一个局域网下,fiddler才能拦截http请求


第四步:安装fiddler证书
打开手机浏览器,输入“IP:端口”:
等待下载完成后,在手机顶部任务栏里点击下载的fiddler证书文件:

给证书取个名字:

配置PIN码(只有手机没有锁屏密码的时候才需要设置):


此时,手机上访问网站或APP,就会转到fiddler代理上,即可看到手机访问的接口~
10. 抓取IOS的APP包
因为系统不一样,所以步骤会有差异,但整体思路不变:







此时,IOS手机也可以愉快抓包啦!
整理一下手机抓包的过程:
- 让手机和电脑连接在同一个局域网下,即同一个wifi
- 配置fiddler,勾选Allow remote computers to connect(允许远程计算机连接),默认端口8888(端口可以随意改)
- 设置手机网络代理,改为“手工代理”,填写电脑IP和8888端口号
- 打开手机浏览器,访问“电脑IP:端口号”,下载安装认证证书
- 将认证证书设置为“信任证书”即可
抓包虽好,但也要注意下以下事项:
- 当fiddler未开启时,手机的wifi仍保留了代理,手机会无网络
- 当设备发生更换(更换电脑或手机),需要重新装fiddler信任证书
- 安卓7以上版本,由于不再信任用户自行安装的证书,因此会影响抓包
抓包是fiddler最强大的功能之一,除此之外还有其他实用的功能点,一个个来看...
11. 给接口添加备注

备注加进了会话区,若保存会话,备注也会一同被保存,很方便

6. 重新请求接口

除了按Replay按钮,还可以按快捷键R(注意是大写R)

选中接口后,按shift+大写R,可以设置一次性请求N次

这样相当于对服务器进行较小的压力测试,属于“串型压力”

12. 删除会话区的接口
选中接口后,鼠标右键:

按键盘上的DELETE键,也能删除选中的接口会话
工具栏上也有删除功能,如下图:

13. 命令行

14. 开启/关闭抓包

快捷键F12也可以开启/关闭抓包
15. Autoresponder自动响应进行资源拦截
使用fiddler抓取到会话资源后,对该资源制定一套响应规则,下次触发该资源时,就会按照规则进行响应
比如,更换百度logo
①首先清除本地缓存的图片资源

②打开百度,百度的logo如下

③在fiddler中找到该资源

④设置Autoresponder自动响应

⑤添加响应规则

⑥选择本地电脑的某个资源

⑦保存规则

⑧再一次清除本地缓存的图片资源

⑨再一次访问百度首页,图片已被替换

16. Composer更改请求
更改接口的信息后,再给服务器发请求,模拟不同请求情况的服务器响应
①选中一个会话资源,拖拽到Composer区域

②可任意更改数据

③更改完成后,再一次发送请求

④此时请求的信息已被更改,会得到不同的响应结果

17. 过滤器
可以过滤掉不想抓取的资源
①勾选过滤

②第一个下拉框选中:Show only Intranet Hosts仅显示局域网主机

③第一个下拉框选中:Show only Internet Hosts仅显示互联网主机

当然你也可以不选择,那就无论局域网、互联网的资源都可以抓取
④第二个下拉框选中:Hide the following Hosts隐藏以下主机

⑤第二个下拉框选中:Show only the following Hosts仅显示下列主机

⑥第二个下拉框选中:Flag the following Hosts标记下列主机

18. 打断点
在资源在请求、响应的过程中,fiddler可以在中途进行掐断拦截,拦截后可以自行对资源做一些调整后,再放行
①可在菜单选项中、底部状态栏区开启断点

- Before Requests:请求之前断点
- After Requests:响应之后断点
②开启“请求断点”后,所有资源发起请求时,都被拦截,停留在fiddler代理中

快捷键F11(开启请求断点)、 快捷键Shift+F11(关闭请求断点)
③可以对参数做一些调整后,再放行

④也可以一次性放行全部拦截的资源

效果:
用户发起接口请求时,使用ABC参数,被fiddler拦截后,你将参数改成XYZ,再放行,
服务器收到接口所拿到的参数也成了XYZ
⑤开启“响应断点”后,所有资源从服务器返回到客户端时,都被拦截,停留在fiddler代理中

快捷键Alt+F11(开启响应断点)、 快捷键Shift+F11(关闭响应断点)
⑥可以对参数做一些调整后,再放行

⑦也可以一次性放行全部拦截的资源

效果:
服务器处理完接口后,返回数据是ABC,被fiddler拦截后,可以将数据改成XYZ,再放行,
客户端收到接口处理结果也变成了XYZ
19. 弱网测试
由于fiddler可以在客户端和服务器之间做拦截,因此也可以模拟弱网丢包情况
①在菜单选项中打开Customize Rules(自定义规则)

②Ctrl+f打开搜索,搜索关键词:m_SimulateModem

③调整上行速度和下行速度

④再重新开启弱网:Performance→勾选Simulate Modem Speed

- 上传速度:传1KB的内容,需要花费3000毫秒,相当于1KB÷3秒=0.33KB/秒
- 下载速度:下载1KB的内容,需要花费1500毫秒,相当于1KB÷1.5秒=0.66KB/秒
如果要模拟2G网络, 上传下载配置如下:
- oSession["request-trickle-delay"] = "3000";
- oSession["response-trickle-delay"] = "1500";
如果要模拟3G网络, 上传下载配置如下:
- oSession["request-trickle-delay"] = "20";
- oSession["response-trickle-delay"] = "10";