Fiddler 基础知识

Fiddler 是什么?

Fiddler 是一款 HTTP 协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP(S) 请求,可以针对特定的 HTTP(S) 请求,分析请求数据、设置断点、调试 web 应用、修改请求的数据,甚至可以修改服务器返回的数据,模拟客户端和服务器的交互,完成一系列 Mock 测试,功能非常强大,是 web 调试的利器

Fiddler 主要功能

  • 截获从浏览器或者客户端软件向服务器发送的 http/https 请求
  • 修改客户端请求或服务端响应
  • 创建自动响应规则
  • 模拟弱网场景
  • 提供第三方扩展插件,测试网站性能

    Fiddler 抓包原理

    Fiddler 是以代理 Web 服务器的形式工作的,浏览器/客户端与服务器之间通过建立 TCP 连接以 HTTP 协议进行通信,它使用代理地址是 127.0.0.1,端口为 8888
  1. fiddler 截获客户端浏览器发送给服务器的 https 请求,此时还未建立握手
  2. fiddler 向服务器发送请求进行握手,获取到服务器的 CA 证书, 用根证书公钥进行解密,验证服务器数据签名,获取到服务器 CA 证书公钥
  3. fiddler 伪造自己的 CA 证书,冒充服务器证书传递给客户端浏览器,客户端浏览器做跟 fiddler 一样的事
  4. 客户端浏览器生成 https 通信用的对称密钥,用 fiddler 伪造的证书公钥加密后传递给服务器,被 fiddler 截获
  5. fiddler 将截获的密文用自己伪造证书的私钥解开,获得 https 通信用的对称密钥
  6. fiddler 将对称密钥用服务器证书公钥加密传递给服务器,服务器用私钥解开后建立信任,握手完成,用对称密钥加密消息,开始通信
  7. fiddler 接收到服务器发送的密文,用对称密钥解开获得服务器发送的明文。再次加密发送给客户端浏览器
  8. 客户端向服务器发送消息,用对称密钥加密,被 fidller 截获后,解密获得明文

图片1.jpg

Fiddler 工具界面功能介绍

图片2.jpg

顶部左侧菜单栏

图片2.jpg
消息icon:备注,添加之后在会话栏的 Comment 列中显示备注内容
Replay:对选中的请求再次发送对应请求
X:清除会话面板

  • 清除所有对话
  • 清除加载图片的请求
  • 清除使用 http connect 方法的请求
  • 清除状态码非200的请求
  • 清除非浏览器发出的请求
  • 清除已响应请求且未标记的请求
  • 清除响应 body 一样的请求,只保留一个

Go:断点调试,点击 go,则会执行下一步
Stream:代理模式。默认为[缓冲模式],点击进行切换

  • 流模式 streaming:将客户端的请求数据实时的传给服务端,更接近于浏览器本身的真实行为
  • 缓冲模式 buffering:将客户端的请求数据缓冲起来,等数据写完之后再传给服务端

Decode:解压请求。解压 http 请求里面的东西,帮助查看响应内容
Keep:保持会话的数目

顶部右侧菜单栏

图片4.jpg
Any Process:捕获请求,只看需要的请求。将“靶心”投向需要的请求
Find:查找请求,可以高亮所查找的请求
Save:保存会话
截图:默认5秒后截图(电脑全屏)
时钟icon:计时器
Browse:点击会话,再点击Browse,启动浏览器发送此请求,快速启动浏览器
Clear Cache:清空浏览器缓存
TextWizard:编码、解码文本内容,一般包含中文的请求都需要解码才能看到,所以复制url到TextWizard,然后选择URLDecode
TearOff:浮窗
msdn搜索:.net开发

常见图标的含义

图片5.png
图片6.png

左下控制台

图片7.jpg
控制台:可以输入一些命令行;输入 help 可以看到常见的命令行
capturing:是否开启捕获功能,显示 capturing 表示正常捕获,否则表示不捕获
All Processes:过滤会话来源,web brower对会话进行过滤
m/n:记录当前展示会话的数量
状态信息:状态条显示

右侧会话功能面板

图片8.jpg
statistics请求的性能指标;全世界范围的性能测试

  • RTT:一个请求的从发送出去到返回的时间
  • 底部的 Show chart 可以看出图表的示例

inspectors对请求进行解包

  • header:请求头信息
  • textView:可以看到返回的数据
  • imageview:可以看到返回的图片(如果有图片返回的话)
  • webforms:看到请求传递的信息
  • cookies:请求携带的 cookie
  • response header:响应报文的头文件

autoresponder文件代理,可以使用 fiddler 来自定义请求返回的文件
composer前后端接口联调,可以将条目拖到 composer 然后进行模拟执行;伪造请求。不写 js 实现跟服务器交互
logfiddler 的使用日志
filters过滤功能,可以很好帮助只显示我们关心的请求或者隐藏掉我们不关心的请求
timeline网站性能分析,一个网站的请求多个网站请求进行,选中查看 timeline 查看请求详情