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下载:https://www.ldmnq.com/other/version-history-and-release-notes.html?log=3

以下以雷电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";