简介
Fiddler 是一款 C# 实现的浏览器抓包和调试工具,Fiddler 启动后作为浏览器和服务器之间的代理,从中监测浏览器和服务器之间的 http/https 级别的网络交互
主要功能有:
- Web 会话操作
轻松编辑 Web 会话,只需设置一个断点即可暂停会话处理并允许更改请求/响应。撰写自己的 HTTP 请求并通过 Fiddler 运行。 - 性能测试
Fiddler 可以一目了然地看到“总页重”,HTTP缓存和压缩,用“标记任何大于 25kb 的未压缩响应”等规则隔离性能瓶颈。 - 自定义免费工具
受益于丰富的可扩展模型,从简单的 FiddlerScript 到可以使用任何 .NET 语言开发的强大扩展。 - 安全测试
解密 HTTPS 流量并使用中间人解密技术显示和修改 Web 应用程序请求。配置 Fiddler 以解密所有流量,或仅解密特定会话。 - HTTP / HTTPS 流量记录
使用 Fiddler 记录计算机和 Internet 之间的所有 HTTP(S) 流量。调试几乎所有支持代理的应用程序(IE, Chrome, Safari, Firefox, Opera 等)的流量。 - Web 调试
调试来自 PC,Mac 或 Linux 系统和移动(iOS 和 Android)设备的流量。确保在客户端和服务器之间传输正确的 Cookie,headers 和 cache。支持任何框架,包括.NET,Java,Ruby 等。
安装
浏览器设置代理
一打开 Fiddler 就会自动设置系统代理,Chrome 或 Chrome内核的浏览器(如360浏览器)可直接使用,而 FireFox 则需要自行设置代理。
隐藏建立通道连接和重定向
Rules → 勾选 Hide CONNECTs 和 Hide 304s
默认解码
响应体常常需要解码才能看懂,点上该按钮默认解码
捕获 HTTPS
HTTPS = HTTP + TLS/SSL,相当于 HTTP 的加密。
一开始会显示 HTTPS decryption is disabled. Click to configure...
- Tools → Options → HTTPS → 勾选 Capture HTTPS CONNECTs → 勾选 Decrypt HTTPS traffic → 点开 Actions → 重置证书 Reset All Certificates
- 关闭Fiddler → 安装Fiddler证书 → 重新打开
- Tools → Options → HTTPS → MakeCert engine → 设置为 MakeCert
- Actions → Export Root Certificate to Desktop 导出证书到桌面
- Actions → Open Windows Certificate Manager → 右键受信任的根证书颁发机构 → 所有任务 → 导入
若不行可查阅参考文献5、6
不用的话把 Decrypt HTTPS traffic 关掉,以防影响正常浏览页面
快捷键
删除全部请求:Ctrl + X
仅保留选中请求:Shift + Del(Edit → Remove → Unseleted Sessions)
重放选中的请求:R
快速入门
保存 HTTP 请求
测试页面 → 选中该请求 → 右键 → Save → Selected Sessions → as Text…
效果
HTTP 请求报文
HTTP 请求报文组成:请求行、请求头部、空一行、请求体(不一定有)
清除缓存
Tools → Clear WinINET Cache 和 Clear WinINET Cookies
或直接点击菜单栏上的 Clear Cache
添加注释
添加注释可在 Comments 处看到,方便 Export Sessions 后其他人员的理解.
重放
直接点击:重放
快捷键:R
无条件重放:Ctrl+ 点击
多次重放:Shift + 点击
删除
从上到下分别为:
- 删除所有
- 删除图片
- 删除通道连接
- 删除非成功 200
- 删除非浏览器
- 留下完成&未标记
- 重复响应体
删除全部请求:Ctrl + X
断点
底部状态栏,点击图上的地方,可设置断点
- 点 1 次:请求前断点
- 点 2 次:响应后断点
点 Replay 可实现发送请求到服务器前中断
点 Go 继续发送
指定进程
拖动到想抓取的进程上,如浏览器
查找
保存
File → Save
或菜单栏的 Save
可用于给后端提交 BUG 等,同时保留注释、查找结果等信息。
文本编/解码
常用的 get 请求需要用到 URLEncode
本机网络信息
右上角的 Online 可显示主机 IP 等信息,无需再执行 ipconfig
查看。
请求 IP
Rules → Customize Rules → Ctrl + F 搜 static function Main()
→ 添加FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
→ Ctrl + S 保存 → 重启 Fiddler
在最后一列可看到请求IP。每一列可以拖动顺序
添加响应时间
Rules → Customize Rules → Ctrl + F 搜 class Handlers
→ 添加以下代码 → Ctrl + S 保存 → 重启 Fiddler
function BeginRequestTime(oS: Session)
{
if (oS.Timers != null)
{
return oS.Timers.ClientBeginRequest.ToString();
}
return String.Empty;
}
public static BindUIColumn("Time Taken")
function CalcTimingCol(oS: Session){
var sResult = String.Empty;
if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
{
sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString();
}
return sResult;
}
命令行 QuickExec
左下角的黑条就是
测试页面
包含文本 ?
包含某文本的请求
?wubaiyi
响应体大小 > 或 <
响应体大于 40kb 的请求
>40k
状态码或请求方法 =
筛选重定向的请求
=301
筛选 POST 方法
=POST
主机 @
筛选主机
@wubaiyi.com
粗体标记 bold
如果 url 包含目标字符串,则用粗体标记,未来生效。
先执行,再访问测试页面,可以看到都标粗了
bold wubaiyi
再执行一次清除标记
bold
设断点:RequestURI 含字符串 bpafter
当 RequestURI 包含指定字符串,中断响应
bpafter /favicon.ico
再执行一次清除标记
bpafter
设断点:状态码 bps
状态码为 404 时设断点
bps 404
再执行一次清除标记
bps
设断点:请求方法 bpm
请求方法为 POST 时设断点
bpm POST
再执行一次清除标记
bpm
设断点:URIs 含字符串 bpu
URIs 包含字符串
bpu wubaiyi
再执行一次清除标记
bpu
替换 urlreplace
用不同的字符串替换 url 中的任何字符串
urlreplace SeekStr ReplaceWithStr
再执行一次清除标记
urlreplace
过滤 Content-Type allbut
仅保留类型头包含指定字符串的会话
allbut xml
allbut java
选中包含内容 select
select image
select css
select htm
select ui-comments slow
select ui-bold *
select ui-comments \*
select @Request.Accept html
select @Response.Set-Cookie domain
自动响应器 AutoResponder
可用于拦截响应修改规则
勾选 Enable rules 使规则生效
勾选 Unmatched requests passthrough 忽略不匹配请求
修改图片
测试页面 → 右键某张图片 → 复制图片地址 → 编辑规则 → Save
可以看到原页面就替换好了
安卓抓包
配置
Tools → Options → HTTPS → 勾选【Ignore server certificate errors (unsafe)】
Tools → Options → Connections → 勾选【Allow remote computers to connect】
重启 Fiddler
设置手机代理
让手机和电脑在同一个局域网下
查看 IPv4 地址方法有:
- CMD 输入命令
ipcofig
- Fiddler 右上角的 Online
- 查看共享网络
修改手机WIFI的网络设置
手机浏览器访问:http://IPv4地址:Fiddler端口号,如 http://192.168.12.171:8888
点击【FiddlerRoot certificate】下载证书并打开安装证书,用途为【VPN和应用】
遇到的坑
1. 浏览器无法打开页面
取消勾选 Options → HTTPS 的 Decrypt HTTPS CONNECTs