Fiddler
Fiddler介绍
Fiddler是最主流的抓包工具,位于客户端和服务器端的HTTP代理
作用:
- 监控浏览器所以HTTP/HTTPS流量
- 查看、分析请求内容
- 伪造客户端请求和服务器响应
- 测试网站性能
- 解密HTTPS的web会话
- 全局、局部断点功能
- 第三方插件
代理:就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端.
Fiddler工作原理:
- 启动fiddler作为代理服务器,代理地址:127.0.0.1,端口默认为8888
- IE、 chrome浏览器代理设置会被自动篡改为对应代理地址和端口号(关闭后,浏览器代理设置会自动还原,其他浏览器需手动修改代理服务器配置)
- client、server请求、响应都会经过fiddler代理服务器被记录下来
代理模式:
- 流模式stream: fiddler会实时反馈server端响应给client.更接近真实浏览器的性能
- 缓冲模式buffering: fiddler会等待server所有响应都返回时,才会反馈给client.可以控制响应、修改响应数据
同类工具:httpwatch、 firebug、 wireshark
Fiddler设置浏览器抓包
- 设置Fiddler代理监听的端口号 Tools->Options->Connections
- 修改浏览器的代理(IE、Chrome会自动修改代理地址和端口号),其他浏览器需手动设置
- 启动抓包 File->Capture Traffic / 快捷键F12
Fiddler页面介绍
菜单栏:
- File:用于导出Session、打开新的Fiddle窗口、保存会话等功能.
- Edit:用于复制session、host、url、header等、remove session 、标记、以及find Seesion
- Rules:用于创建规则规则过滤会话.例如可以隐藏掉图片类型的请求,或者304的请求之类
- Tools: 主要是工具,可在options中设置Fiddler的端口号、Https的请求、connnection等.也可以清除cache
- View :主要用于Fiddler窗口显示上的问题,例如可以设置ToolBar是否显示等
工具栏
- 清除所有会话: Ctrl+x
- Replay: 选中一条会话记录后, 点击replay可以再次请求一次该操作, 快捷键R
- GO: 继续执行;调试bug,断点拦截请求
- Stream: 设置代理模式,默认是缓冲模式
- Decode: 解码
- Keep:All session: 设置保存会话的数量
- Any Process: 设置要监控的进程
- Find: 查找会话
- Save: 保存会话
- Browse: 打开浏览器
- clear Cache: 清除IE缓存
- TextWizard: 编码格式转换(可以把一段内容转化为Base64、urlencode、MD5等格式)
- Tearoff: 分离会话区和信息区
会话栏
显示Fiddler抓取的每条请求会话session
- /#: 序号
- Result: Http响应状态码
- Protocol: 协议类型
- Host: 请求地址域名
- URL: 访问路径
- Body: 请求体大小,单位bytes
- Caching: 请求的缓存过期时间
- Content-Type: 请求响应的类型
- Process: 发出此请求的windows进程和进程ID
- Comments: 会话备注
- Custom: 用户可以通过脚本设置的自定义
- Online: 显示本机ip等信息
命令行工具
输入help, 能查看命令行工具文档: https://docs.telerik.com/fiddler/knowledgebase/quickexec
状态栏
- Capturing: 当处于抓包状态时,显示该样式
- All Processes: 设置要抓包的进程,默认选择All Processes
- 空白方框: 设置断点
- n/m: 共m个会话, 当前选中第n个会话
常用功能
回放
再次请求一个会话: 点击该会话, 再点击Replay按钮(或使用快捷键R)
重复请求一个会话多次: 点击该会话, shift+R, 在弹窗中设置重复请求的次数
断点
根据作用范围不同,分为两种:
- 全局断点: 针对捕获的每一个会话都设置断点
- 局部断点: 选中一个会话后,设置断点,配合Replay和Go, 可以对一个会话进行调试
根据设置断点的时间点不同,分为两种: - 请求前断点: 在client发出请求后,控制fiddler代理转发请求给server
- 响应后断点: 在server返回响应后,控制fiddler代理转发响应给client
断点的作用:可以修改请求包、 响应包的内容
会话栏增加一列
1、页面添加
- 右击任一一列,选择Customize Columns
- 选择要添加列,并输入列名
2、在fiddler scriptEditor脚本中添加
- 打开Fiddler ScriptEditor: Rules->Customize Rules
- 搜索"static function Main()", 添加如下内容:FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP") 【添加ip列】
弱网测试
if (m_SimulateModem) { // 首先判断m_SimulateModem, 若为true则启用限速
// Delay sends by 300ms per KB uploaded. 发送请求延迟
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded. 接收响应延迟
oSession["response-trickle-delay"] = "150";
}
操作步骤:
- 启用限速: Rule->Performance->勾选Simulate Modem Speeds, 启用限速
- 打开Fiddler脚本编辑页: 点击Rule->Customize Rules... (快捷键Ctrl+R)
- 设置限速: 搜索"m_SimulateModem", 设置限速时长
- 关闭限速: Rule->Performance->取消勾选Simulate Modem Speeds, 关闭限速
Https抓包
1、IE、Chrome浏览器抓取HTTPS流量
- 启用HTTPS抓包: Tools->Options->HTTPS->勾选Capture HTTPS CONNECTs 和 Decrypt HTTPS traffic
- 安装FiddlerRoot证书: Tools->Options->HTTPS->Actions->Trust Root Certificate (默认fiddler已在系统中安装该证书, 并且Chrome、IE浏览器默认使用系统证书)
2、Firefox浏览器抓取HTTPS流量 - 启用HTTPS抓包
- 安装FiddlerRoot证书
- Firefox启用Fiddler代理: firefox网络设置->手动代理配置
- 在Firefox中安装FiddlerRoot证书: firefox证书管理器->将从fiddler中导入到桌面的证书文件导入, 并重启浏览器
原理: client端需信任Fiddler作为一个代理, 去请求server端. 所以client端需安装FiddlerRoot证书
app抓包
操作步骤:
- 启动Fiddler代理和https抓包
- 设置允许远程设备连接Fiddler代理: Tools->Options->Connects->勾选Allow remote computers to connect
- 确保防火墙允许Fiddler进程可以远程连接
- 远程设备连接Fiddler设备的WiFi, 并设置代理ip和端口号
- 远程设备访问地址: 代理IP:8080, 点击FiddlerRoot Certificate下载证书
- 远程设备安装该证书
Statistics
HTTP请求性能分析、会话请求和响应统计
Inspectors
查看请求和响应内容
AutoResponder
可以用于拦截某一请求,定制响应内容
响应内容的定制方式包括:
- 重定向到本地资源;
- 使用Fiddler的内置响应;
- 自定义响应
操作步骤:
- 添加规则: 拖动会话到AutoResponder栏 或 在AutoResponder栏,点击Add Rules
- 规则编辑: 在AutoResponder栏Rule Editor中, 填入要重定向的资源路径 和 新的资源路径
- 保存规则: 规则设置号之后,在Rule Editor中点击save
- 启用规则: 在规则列表,勾选要启用的规则,并勾选Enable Rules启动AutoResponder
- 在浏览器重新发起请求
在fiddler中修改响应资源:
- 编辑规则: 右键点击规则列表中的某一条规则,在下拉弹窗中选择Edit Response
- 在响应编辑页, 选择响应格式为Raw, 直接修改响应内容,并点击Save
- 保存规则: 直接点击Rule Editor中的save按钮
注: 响应编辑页Raw格式的响应可能存在乱码,可以在Inspectors中,将Raw格式的响应内容复制到响应编辑页
未匹配到要替换的资源
- 未勾选Unmatched requests passthrough时,响应中无匹配资源的请求都会报错404
- 已勾选Unmatched requests passthrough时,不论响应中是否有匹配的资源, 都会请求通过
URL匹配规则
- EXACT开头: 表示完全匹配
- regex开头: 表示使用正则表达式进行匹配
- StringToMatch: 字符串匹配
Composer
用于创建和发送Http请求
优点:
- 能从会话中拖拽一个捕获到的Request, 进行修改
- 发送Request后,还能设置断点
两种编辑模式:
- Parsed模式: 将Request分为三个部分进行编辑: Request line, Request Headesr, Request Body
- Raw模式: 手动写一个Request
Filters
过滤或标记会话
Fiddler插件
Fiddler插件下载地址:https://www.telerik.com/fiddler/add-ons