Fiddler 使用


1、Fiddler简介

Fiddler是位于客户端和服务器端的http代理
目前最常用的http抓包工具之一
功能非常强大,是web调试的利器

  • 监控浏览器所有的http/https流量
  • 查看,分析请求内容细节
  • 伪造客户端请求和服务器响应
  • 测试网站的性能
  • 解密https的web会话
  • 全局,局部断点功能
  • 第三方插件

使用场景

  • 接口调试,接口测试,线上环境调式,web性能分析
  • 判断前后端bug,开发环境hosts配置,mock,弱网断网测试

2、Fiddler使用

fiddler在安装完后,检查一下配置信息

监听端口:8888
已勾选:在启动时作为系统代理

2.1 工具栏

Replay: 重放请求 快捷键:R 选择一个会话,多次按Replay,可以得到多个相同的请求,shift+R 可以输入请求数量
Remove: 移除 选择某个会话,按delete; 删除未被选中的请求:shift+delete
Go: 对请求前断点的会话,点击Go以后,发送该请求到服务器
Decode: 解码,点击后是对所有的请求进行解码,选择某一个请求,双击后,可以对某个请求进行解码
Keep All sessions: 保持会话的数量
Any Process: 进程请求过滤 点击后,在某个应用上点击,后面就只会抓取该应用的包(抓取某个进程)
Find: 查找会话 ctrl+f
Save: 保存会话 可以将请求保存为 .saz格式的归档文件
Clear Cache: 清除IE浏览器缓存
TextWizard: 文本编码解码工具
Online: 可以看到该主机的IP

2.2 监控面板(会话列表)

Fiddler抓取到的第条http请求(每一条称为一个session)
主要包含了请求的ID编号,状态码,协议,主机名,URL,内容类型,body大小,进程信息,自定义备注等信息

【#】-- HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增,图标 代表 请求的类型
【Result】-- HTTP 响应的状态,可以参考这里
【Protocol】-- 请求使用的协议 (如 http、ftp)
【Host】-- 请求地址的域名
【URL】-- 请求服务器路径和文件名,也包括 get 参数
【Body】-- 请求的大小,以 byte 为单位
【Caching】-- 请求的缓存过期时间或缓存控制 header 等值
【Content-Type】-- 请求响应的类型
【Process】-- 发出此请求的 windows 进程及进程ID
【Comments】-- 用户通过脚本或者右键菜单给此 session 增加的备注
【Custom】 -- 用户可以通过脚本设置的自定义值

2.3 命令行和状态栏

Capturing: 用于切换 设置代理或不设置代理
All Processes: 用于过滤进程
请求前断点:请求还未发送到服务器
响应后断点:响应还未返回到客户端

2.4 辅助标签和工具

2.4.1 Statistics 统计器:某个会话 前端整体性能分析

2.4.2 Inspectors 检查器:检查请求的 请求报文和响应报文 以不同的格式呈现

2.4.3 AutoResponder 自动响应器:可用于拦截某一请求,进行如下操作
重定向到本地的资源
使用Fiddler的内置响应
自定义响应

勾选:
Enable rules(启用规则)
Unmatched requests passthrough(不匹配的请求直接通过)

点击:
Add Rule(添加规则) 可以将服务器某个返回的资源,替换成(重定向)你想返回的资源 例如:
服务器返回:https://www.lifisher.com/_nuxt/img/1fc0779.png
修改为自定义:C:\Users\lih02\Desktop\QQ截图20201118170750.png

也可以在会话列表,选择某个请求,直接拖动到 AutoResponder 中规则框中释放,再修改(重定向)你想返回的资源

2.4.4 Composer 设计器:用于设计请求报文,并执行

可以在会话列表,选择某个请求,直接拖动到 Composer 中 对请求参数等相关数据进行修改,然后再点击:Execute 进行执行

如果有多个请求需要修改,可以将多个请求拖动到 Composer->Scratchpad 下 对某个头部信息点击3次,再点击 :Execute 进行执行

2.4.5 Filter 过滤器

勾选:Use Filters

2.4.5.1 Hosts: 域的过滤

No Zone Filter: 无域名过滤
Show only Intranet Hosts: 仅展示局域网域名
Show only Internet Hosts: 仅展示广域网域名

No Host Filter: 无主机过滤

Hide the following Hosts: 隐藏以下的主机
Show only the following Hosts: 只展示以下的主机
Flag the following Hosts: 标记以下的主机

2.4.5.2 Client Processs 客户端进程

Show only traffic from ... 仅展示某个进程的流量
Show only Internet Explorer traffic 仅展示IE浏览器的流量
Hide traffic from Server Host 隐藏服务主机的流量

2.4.5.3 Request Headers 请求头

Show only if URL contains: 只展示URL包含xxx
Hide if URL contains: 隐藏URL包含xxx
Flag requests with headers: 标记请求带上xxx的头部信息
Delete request headers: 删除请求头部信息XXX (只输入 键 即可)
Set request header: 设置请求头部信息

2.4.5.4 Breakpoints 断点

Break request on POST: 对post请求进行断点
Break request on GET with query string: 对带有参数的get请求进行断点
Break on XMLHttpRequest: 对ajax请求进行断点
Break response on Content-Type: 对XXX内容类型的响应设置断点

2.4.5.5 Response Status Code 响应状态码

Hide success(2XX): 状态码为200的隐藏
Hide non-2XX:非200的隐藏
Hide Authentication demands(401,407): 身份验证要求 401,407 的隐藏
Hide redirects(300,301,302,303,307):重定向的隐藏
Hide Not Modified(304):非304的隐藏

2.4.5.6 Response Type and Size 响应类型和尺寸(用得不多 略)

2.4.5.7 Response Header 响应头(咯)

2.5 断点

全局断点 有两种方法

方法一:
Rules->Automatic Breakpoint->Before Requests F11 请求前断点
Rules->Automatic Breakpoint->After Reponses Alt+F11 响应后断点

方法二:在状态栏中间空白处 点击一次,点击二次,点击三次 会对应3种状态

请求前断点: 在请求到达服务器前(由fiddler截获)通过修改参数(RAW格式下),再发送到服务器
响应后断点: 在响应返回客户端前(由fiddler截获)通过修改响应数据(RAW格式下),再发送到客户端

局部断点

bpu: 请求前断点
在命令行输入:bpu(需要断点的部分或全部url) 回车 状态栏会显示:Request URL breakpoint for (输入的部分或全部url)
再次输入:bpu 回车 取消断点 状态栏会显示:Request URL breakpoint cleared

bpafter:响应后断点
在命令行输入:bpafter(需要断点的部分或全部url) 回车 状态栏会显示:Response URL breakpoint for (输入的部分或全部url)
再次输入:bpafter 回车 取消断点 状态栏会显示:Response URL breakpoint cleared

2.6 弱网测试

方法一:
Rules->Performance->Simulate Modem Speeds (采用脚本中默认的速度)

方法二:
勾选:Rules->Performance->Simulate Modem Speeds
Rules->Customize Rules->搜索:simulate 修改时间速度 保存 重启Fiddler(采用脚本中修改的速度)

2.7 设置Fiddler捕获HTTPS流量

先确定浏览器有设置:使用系统代理或手动配置代理

Google浏览器
点击: Tools->Fiddler Options ->HTTPS
勾选: Decrypt HTTPS Traffic
保存

如果还不能录制HTTPS请求 则继续向下操作:
点击:Actions->Reset All Certificates(重置证书) 自动删除之前的证书后,会弹出对话框,继续安装证书

Firefox浏览器
点击:Actions->Export Root Certificate to Desktop(导出证书到桌面)
点击:Firefox->选项->证书->将证书进行导入->选择导入的证书->编辑信任

2.8 IOS APP 抓包

步骤:

点击设置->WIFI->打开连接的WIFI设置
点击配置代理->手动
设置IOS代理服务器地址为 Fiddler 所在主机的IP地址
设置端口为 Fiddler 监听的端口
点击存储 保存代理设置

点击:Tools->Fiddler Options->Connections
勾选:Allow remote computers to connect
重启Fiddler
确保防火墙允许 Fiddler 进程可以远程连接
确保IOS设备可以访问到 http://FiddlerMachineIP:8888 该地址会返回 Fiddler Echo Service 页面
点击:FiddlerRoot certificate 安装证书
安装成功后,在 通用->关于本机->证书信任设置中,信任刚安装的Fiddler证书

此时Fiddler已经可以捕获HTTPS请求

2.9 Android APP 抓包

步骤:

确保 Android机和主机在同一个网段下

点击:手机WIFI->代理设置->手动 服务器(Fiddler所在主机的IP)端口(Fiddler监听的端口)
点击:Tools->Fiddler Options->Connections->勾选:Allow remote computers to connect
此时已经可以抓取APP的包

打开Android设备 在浏览器输入:http://(Fiddler所在主机的IP):端口(Fiddler监听的端口)
点击页面底部 FiddlerRoot Certificate下载证书
打开设置->指纹,面部和安全->设备管理与凭证->用户凭据 看到cert已安装
注意:测试完毕,记得关闭代理,否则手机无法上网