Fiddler 是什么
Fiddler 是一个 http 调试代理工具,可以用来查看、修改、重发、保存客户端和服务器之间的 http 通讯,也可以用来测试网站性能,诊断网络问题。
Fiddler 充当客户端和服务器之间的中间人,客户端和服务器之间的Http通信都经过 Fiddler,从而可以查看和修改通信内容。
中间人攻击也是采用相同的原理,即使是Https的请求,也可以被抓取和解密
Fiddler只能抓取应用层的Http通信,如果要查看更底层的通信细节,可以用 white sharps,wireshark 等工具。
Fiddler 可以抓取localhost域名下的网络请求
捕获 http 通讯
- 打开 fiddler,点击
file/capture traffic,或者直接按F12,开始捕获 http 通讯。 - 在
session list中可以看到捕获到的 http 通讯。
查看请求和响应
- 在
session list中,双击一个 session,可以看到该 session 的请求和响应。 - 在
Inspectors中,可以看到请求和响应的详细信息,包括请求头、响应头、响应体等。
抓取手机上的 http 通讯
- 设置允许远程设备连接
允许远程设备连接 tools/fiddler options/connection/allow remote computers to connect
- 手机安装 fiddler 证书
手机浏览器打开 yourIP:8888
选择会话
- 任意多选
ctrl + click - 多选连续的会话
shift + click - 向上/向下单选
ctrl + up/down - 向上/向下连续多选
ctrl + shfit + up/down - 反选会话
ctrl + i焦点先定位到 session list - 选择当前会话的父会话
P很实用的功能,比如选择一个 js, 按P,就会定位到触发该js请求的html请求 - 选择当前会话的子会话
C同样实用:选择 html 请求,按C, 定位所有由该 html 请求触发的静态资源请求
查找会话
ctrl + f 打开查找对话框,可以设置只查找请求或只查找响应,查找内容可以指定header或body, 基本上可以满足大部分需求。
会话对比
选择两个会话,右键 选择 compare 命令(需安装对比工具 winMerge), 对比成功和失败的两次请求,方便找出差异。
删除会话
- 删除选中会话
delete - 删除未选中会话
shift + delete同先反选ctrl+i, 再删除 - 删除所有会话
ctrl + x
配置hosts
可以通过Fiddler配置DNS映射,这样就不必在C盘的hosts文件中修改了。
Hosts配置位于菜单 Tools/Hosts
quickbox
quickbox 是 fiddler 的一个工具栏,可以快速执行一些操作, 如: 查找会话,设置断点等。
alt + q 光标定位到 quickExec。
查找会话
- 在url根据关键字查找
? keyword - 根据content-type查找
select image,select json - 根据hostname查找
@target Hostname - 根据响应的status查找
=304 - 根据请求方法查找
=post - 根据content-length查找
>1000 - 根据域名查找
@google - 根据请求头查找
select @Request.Accept html - 根据响应头查找
select @Response.set-cookie domain
- 在url根据关键字查找
高亮会话
- 设置高亮url包含关键字的会话
bold /app.js实用功能: 后续捕获的匹配会话也会被高亮 - 取消高亮
bold
- 设置高亮url包含关键字的会话
过滤会话
- 根据content-type过滤,
allbut image删除所有会话,image会话除外 - 根据content-type过滤
keeponly image只保留image会话, 作用同上
- 根据content-type过滤,
断点
- 设置断点,断点类型为 before request, url包含baidu的请求都会被中断
bpu baidu - 清除断点
bpubpu 不带参数,则表示清除断点 - 设置断点,断点类型为 after response, url包含baidu的响应都会被中断
bpafter baidu - 清除断点
bpafterbpafter 不带参数,则表示清除断点 - 执行断点
go在 inspector 面板修改请求/响应内容后继续执行 - 根据请求方法设置断点
bpm POST - 清除 bpm 断点
bpm - 根据响应状态码设置断点
bps 404 - 清除 bps 断点
bps
- 设置断点,断点类型为 before request, url包含baidu的请求都会被中断
修改请求url
可以把请求url的域名修改为本地ip,方便调试- 设置url替换
urlreplace www.dev.com localhost - 清除url替换
urlreplace
- 设置url替换
删除所有会话
- 清除所有会话
cls - 清除所有会话
clear
- 清除所有会话
构造请求
可以全新创建请求,或基于现有session创建请求
- compose 面板中,手动创建所有的请求参数
- 拖一个 session 到 compose 面板中,修改并发送改请求
- 按住
shift, 点击 execute 按钮 , 会在请求发出前断点,允许再次修改
autoResponder 自动响应
从左侧拖一个 session 到 autoresponder 中,默认会自动创建匹配规则和响应内容
基于session创建的autoresponse, 默认规则精确匹配(EXACT:the-url),默认响应为该 session 的 response(*200-SESSION-6)
用户可修改匹配规则,亦可修改响应内容,在 rule list 中选择该 rule, 按enter编辑响应内容。
自动响应的匹配规则
- 普通字符串,匹配URL包含该字符串的请求
hello.com - NOT:普通字符串,匹配URL不包含该字符串的请求
NOT: hello.com - 通配符匹配所有请求
* - 精确匹配,URL完全相同的请求
EXACT: http://localhost/test.php?foo=BAR - 正则匹配
regex:(?inxs)http://localhost/\w+\.php,regex:.+(gif|png|jpg)$
正则修饰符:iignore case 忽略大小写nrequires explicit capture groups 要求明确的捕获组senables single-line syntax 单行xenables comments after the #character 支持# 后加注释
自动响应的内容
- 本地文件
http://targetUrl重定向到目标url*redir:http://targetUrl*bpu请求前断点*bpafter响应前断点*delay: Xms延迟发出请求*header: hi=hello修改/新增请求头*CORSPreflightAllow返回允许跨域的 header*resetReset the client connection*dropclose the client connection*exit该规则什么都不做,让后续规则处理
自动响应示例
将正则规则捕获到的参数,应用到目标 url
1 | |
FiddlerScript
Fiddler Script 是用 JScript.NET 语言写的,可以自动修改 Request 和 Response. 这样我们就无需手动设置”断点”。
Fiddler Script实际上它是一个脚本文件 CustomRules.js ,保存在 C:\Users\sea\Documents\Fiddler2\Scripts\CustomRules.js
打开 Fiddler Script, 点击菜单 Rules->Customize Rules 或者 ctrl + r
主要方法
1 | |
常用对象和方法
fiddlerScript Editor 有智能提示
对象
oSession
oSession.url,oSession.fullUrl,oSession.host,oSession.hostname,oSession.oRequest,oSession.oResponse,oSession.HostNameIs(),oSession.uriContains()FiddlerObject
FiddlerObject.log()
方法
- 字符串处理方法
replace(),indexOf(),substring()
例子
高亮请求 和 打印日志
1 | |
添加/删除 请求头
1 | |
添加响应头部 支持 CORS
1 | |
将请求重定向到其他主机
1 | |
将一个 url 重定向到另外的 url
1 | |
取消发送 cookie
1 | |
替换 html 文件的内容
1 | |
替换 json 文件的内容
1 | |