介绍
- fiddler 是一款 HTTP 协议调试代理工具,它能够抓取记录本机所有 HTTP(S) 请求。其运行机制其实就是本机 127.0.0.1 上监听 8888 端口库的 HTTP 代理。
- fiddler 无论对开发人员或者测试人员来说,都是非常有用的工具。
工作原理
fiddler 基本配置
fiddler 在没有配置之前是不可以抓取 HTTPS 的包的。
按照以下进行配置
- Tools -> HTTPS -> Decrypt HTTPS traffic。
- 勾选后会弹出安装证书提示,根据提示进行安装即可。
- Tools -> Telerik Fiddler Options -> Connections。
- 重启 fiddler
fiddler 抓取 IE 浏览器 fiddler 都可以进行数据抓取,但是使用其他的浏览器 fiddler 可能会抓取不到数据,需要而外设置代理。
设置过滤
右侧窗口拥有一个 filters,勾上 Use Filters 进行启用
Request Headers -> Show only if URL contains
- 只显示 URL 中包含的请求
Hosts -> Show only Intrancet Hosts
- 只显示内网的 host
Hosts -> Show only Internet Hosts
- 只显示外网的 host
Hosts -> Hide the following Hosts
- 隐藏下面的 host
使用分号进行隔开
192.168.0.1;xqtesting.blog.51cto.com;xqtesting.sxl.cn
查看响应信息
点击请求,右侧窗口上面的请求的信息,下面是响应的信息。
app 端抓包
前置条件:
手机和电脑在同一局域网
- 打开 cmd命令行窗口通过 ping 查看手机和电脑是否在统一局域网下
- 完成 fiddler 的基本配置,同 web 端抓包一致
这里的示例手机为 ios
- 查看电脑 IP 地址,打开 cmd命令行,输入:ipconfig,查看本地 IPv4 地址。
- 打开浏览器搜索 本地 IPv4 地址 + 端口(fiddler 配置端口),点击 FiddlerRoot certificate 下载证书。
- 安装证书,点击设置 -> 通用 -> VPN与设备管理 -> 点击已下载的描述文件 -> 点击安装
- 开启证书,点击设置 -> 关于本机 -> 证书信任设置 -> 对下载的证书进行开启
- 手机设置代理,点击设置 -> 无线局域网 -> 点击连接网络右侧的圆圈 -> 配置代理 -> 手动 -> 服务器(电脑 IPv4地址)、端口(fiddler 配置端口)
在做好以上配置之后有的可能会出现网络无法访问的情况,
解决方法:
- 在电脑上下载 fiddler 插件,下载好后执行安装插件,之后重启 fiddler。
- 手机端删除之前的证书,重新下载安装证书。
参考文章:
- 【Fiddler】iOS机抓取https数据时,失败,全部显示“Tunnel to......443”和手机代理后无法上网的现象_ios fiddler tunnel to-CSDN博客
- 【Fiddler】Iphone连接代理后仍无法连接网络的问题-CSDN博客
模拟低速网络
自定义限速配置:点击 Rules -> Customize Rules
Ctrl + F 输入“300”进行快速定位搜索
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
- 上传数据是 300毫秒
- 下载数据是 150毫秒
模拟低速情况就是修改上面数字,修改好之后通过 Ctrl + S 进行保存。
设置好之后,需要进行启用,Rules -> Performances -> Simulate Modem Speeds,之后就会看到 Simulate Modem Speeds 是勾选状态。
篡改数据请求
打开 fiddler 命令行(左下角底部黑色框),在命令行中输入 bpu httpxxx[需要拦截的网址],之后回车。
之后对需要拦截的网页进行提交数据,就能够在 fiddler 中查看到被拦截下来的数据。
之后,直接对 value值进行篡改。
对篡改过后的数据进行发送,点击绿色的按钮。
结束拦截,在命令行中再次输入 bpu 回车即可。
利用 autoresponder 替换源资源
autoresponder 的作用:
- 右侧拥有一个 autoresponder 点击,勾选 Enable rules、Unmatched requests passthrough、Enable Latency 这三个。
- 将需要替换的资源拖拽到右侧框中,我这里选着的是博客里的一张图片。
- 替换图片,根据下图点击 find a file 选择需要替换的图片。
- 点击保存,之后刷新页面,就会被替换了。
利用 fiddler 快速模拟 mock
创建一个 test_mock.txt 文件,内容:
{
"code": "0",
"name": "ganjue"
}
通过 AutoResponder 来对链接替换成 json 数据
发送自定义请求
通过 Composer 可以发送自定义请求。
点击 Execute 发送请求
如果是 GET 类型,通过 url 拼接进行传递参数 ?name=&age=。
返回的数据乱码,将返回的数据设置 utf8。
如果是 POST 类型,可以使用下面的 Request Body 传递参数。
问题
- 在代理之后,手机网络相对会比较慢,部分软件可以上网,部分软件不可以上网。
在打开 fiddler 后电脑网络变慢,甚至不能进行上网。
- 可能是证书问题,重新安装一下证书,Tools -> HTTPS -> 右侧 Actions -> Trust Root Certificate 。