软件测试工程师进阶过程

一篇文章搞定fiddler抓包

2020-09-04  本文已影响0人  minisummer

哈喽,大家好!我是minisummer!首先感谢您的关注!
今天给大家分享的内容是fiddler抓包工具的使用。

fiddler简介

Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用且实用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

fiddler工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。 当Fiddler退出的时候它会自动注销, 这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。 解决的办法是重新启动下Fiddler。


fiddler工作原理

fiddler下载安装

Fiddler 下载地址 :https://www.telerik.com/download/fiddler
fiddler汉化包汉化插件:https://blog.qcnhy.cn/2019/08/16/2/

fiddler基础配置

配置证书

点击Tools->Options->HTTPS(配置完后记得要重启Fiddler)


fiddler配置证书.png
信任证书
信任证书
image.png

查看一下证书,Tools->Options->HTTPS->Actions—>open windows certificate Manager


image.png
image.png
导出证书Tools->Options->HTTPS->Actions—>Export Root
image.png

火狐浏览器中导入证书

image.png
image.png

火狐浏览器设置fiddler代理
配置fiddler监听端口

image.png

配置抓取HTTPS

点击Tools->Options->HTTPS(配置完后记得要重启Fiddler)
选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾选Actions-> Trust Root Certificate


fiddler配置抓取https.png

配置抓取移动端

点击Tools->Options->Connections(配置完后记得要重启Fiddler)


image.png

配置端口

点击Tools->Options->Connections(配置完后记得要重启Fiddler)


image.png

Android 手机上配置fiddler

1.首先查看电脑的 IP 地址,确保手机和电脑在同一个局域网内。
2.将 Fiddler 代理服务器的证书导到手机上。
步骤一:在手机上打开浏览器,在地址栏中输入代理服务器的 IP 和端口(即电脑的IP加fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装就好了。
步骤二:打开 WiFi 设置页面,选择要连接的 wifi ,并且长按,在弹出的对话框中,选择“修改网络”。在接下来弹出的对话框中,勾选“显示高级选项”。在接下来显示的页面中,点击“代理”,选择“手动”。代理服务器主机名设为 PC 的 IP ,代理服务器端口设为 Fiddler 上配置的端口 8888,点”保存”。

ios手机上配置fiddler

同Android 机一样配置即可。

fiddler面板介绍

fiddler主面板

image.png

fiddler菜单栏详解

file

1、Capture Traffic:可以控制是否把Fiddler注册为系统代理。
2、New Viewer:打开一个新的fiddler窗口
3、Load Archive:用于重新加载之前捕获的以SAZ文件格式保存的数据包。
4、Save:支持以多种方式把数据包保存到文件中。
5、Import Sessions...:支持导入从其他工具捕获的数据包,也支持导入以其他格式存储的数据包。
6、Export Sessions...:把Fiddler捕捉到的回话以多种文件格式保存。
7、Exit:取消把Fiddler注册为系统代理,并关闭Fiddler。

edit

1、Copy:复制会话。
2、Remove:删除会话。
3、Select All:选择所有会话。
4、Undelete:撤销删除会话。
5、Paste as Session把剪贴板上的内容粘贴成一个或多个模拟的会话。
6、Mark:选择一种颜色标记选中会话。
7、Unlock for Editing 解锁会话。
8、Find Session...打开Find Session窗口,搜索捕获到的数据包。


rules

1、Hide Image Request:隐藏图片回话。
2、Hide CONNECTS:隐藏连接通道回话。
3、Automatic Breakpoints:自动在[请求前]或[响应后]设置断点。Ignore Image触发器控制这些断点是否作用于图片请求。
4、Customize Rules...:打开Fiddler脚本编辑窗口。
5、Require Proxy Authentication:,要求客户端安装证书。该规则可以用于测试HTTP客户端,确保所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应码。
6、Apply GZIP Encoding:只要请求包含具有gzip标识的Accept-Encoding请求头,就会对所有响应使用GZIP HTTP进行压缩(图片请求除外)。
7、Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码
8、Hide 304s:隐藏响应为HTTP/304 Not Modified状态的所有回话。
9、Request Japanese Content:选项会把所有请求的Accept-Encoding请求头设置或替换为ja标识,表示客户端希望响应以日语形式发送。
10、User-Agents:把所有请求的User-Agent请求头设置或替换成指定值。
11、performance:模拟弱网测试速度。

image.png

1、Options...:打开Fiddler选项窗口。
2、WinINET Options...打开IE的Internet属性窗口
3、Clear WinINET Cache:清空IE和其他应用中所使用的WinINET缓存中的所有文件。
4、Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie
5、TextWizard...:选项会启动TextWizard窗口,对文本进行编码和解码。
6、Compare Session:比较回话。
7、Reset Script:重置Fiddler脚本。
8、Sandbox:打开http://webdbg.com/sandbox/
9、View IE Cache:打开IE缓存窗口。

image.png
1、Show Toolbar:控制Fiddler工具栏是否可见
2、Default Layout、Stacked Layout、Wide Layout三种界面布局
3、Minimize to Tray:最小化Fiddler到系统托盘(快捷键:CTRL+M )
4、Squish Session List:控制回话列表是否水平收缩。
5、AutoScroll Session list:添加新的回话时,自动滚动到回话列表底部

fiddler工具栏详解

image.png

fiddler会话列表详解

image.png

fiddler功能页签详解

image.png

Statistics页签

通过该页签,用户可以通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求传输的字节数。访问页面时选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行速度性能优化。

inspectors页签(常用页签)

它提供headers、textview、hexview,Raw等多种方式查看一条http请求的请求和响应,它分为上下两部分:上部分为请求展示,下部分为响应展示。

AutoResponse页签(常用页签)

它可以抓取在线页面保存到本地进行调试,大大减少了在线调试的困难,可以让我们修改服务器端返回的数据,例如让返回都是404的数据包读取本地文件作为返回内容。

composer页签(常用页签)

支持手动构建和发送HTTP,HTTPS和FTP请求,我们还可以从回话列表中拖曳回话,把它放到composer选项卡中,当我们点击Execute按钮时则把请求发送到服务器端。

FiddlerScripts页签

打开Fiddler脚本编辑。

log页签:

打印日志

Filters页签(常用页签)

过滤器可以对左侧的数据流列表进行过滤,我们可以标记、修改或隐藏某些特征的数据流。

Timeline页签

时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为X轴,用图表的形式展现出来,就形成了瀑布图。在左侧会话窗口点击一个或多个回话,Timeline 便会显示指定内容从服务端传输到客户端的时间。

fiddler命令行详解

Fiddler命令行可以输入命令操作回话列表,常见命令:

help     打开官方的使用页面介绍,所有的命令都会列出来。
cls       清屏 (Ctrl+x 也可以清屏)
select    选择所有相应类型的回话(如select image或select css)。
?sometext 查找字符串并高亮显示查找到的会话。
\>size     选择请求响应大小小于size字节的会话。
=status/=method/@host 查找状态、方法、主机相对应的会话
1uit      退出fiddler
bpafter xxx 中断URL包含指定字符的全部回话响应
bps xxx     中断HTTP响应状态为指定字符的全部回话响应。
bpv xxx     中断指定请求方式的全部回话响应
bpm xxx     中断指定请求方式的全部回话响应。等同于bpv xxx
bpu xxx:    与bpafter类似。

fiddler状态栏详解

image.png

fiddler抓包实战

实战一:fiddler抓取网页数据

在火狐浏览器中打开百度搜索,输入fiddler,点击百度一下按钮,浏览器与服务器交互的数据全被fiddler抓取下来了。


image.png

实战二:fiddler模拟手机端数据

参考:https://www.jianshu.com/p/041871156513

实战三:fiddler模拟弱网测试

限速对于web前端研发是非常重要的,由于开发者的机器一般配置都很高,并且是在localhost下来调试程序,所以很难模拟到用户的真实使用情 况,如正在下载js,css等静态资源的时候,页面的一个渲染情况。当网速很慢的时候,我们更希望看到的是先渲染出用户界面,而不是让用户看到一片空白。 那么这个时候,网络限速就能很方便在localhost针对类似的情况来做性能调试与优化。
我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里 面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。

模拟稳定的弱网状态

1.自定义弱网规则
设置我们需要模拟的网速,Rules→ Customize Rules,点击该选项后会出现一个文本编辑框。


image.png

在这个文本编辑器中使用Ctrl+F使用搜索功能搜索关键字:m_SimulateModem,将其替换为以下代码:
代码中:request-trickle-delay代表的是你网络请求的延迟时间,response-trickle-delay代表的是网络响应的延迟时间,单位都是毫秒。

        if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded. 每延迟300ms发送1kb的数据,也就是每1s发送10/3kb的数据
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.每延迟150ms下行1kb的数据
            oSession["response-trickle-delay"] = "150"; 
        } 
image.png

2.在fiddler中启用Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度


image.png

模拟不稳定的弱网状态

1.自定义弱网规则
可能我们在测试中不会想要一个一直虚弱的网络环境,而是随机强弱的网络,这样比较贴切我们的真是情况,那么我们可以修改上述代码为:
这里的randInt(1,2000)应该很好理解,代表1-2000中的一个随机整数,这样就会出现偶尔有延迟偶尔网络又良好的情况。

static function randInt(min, max) {
    return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = ""+randInt(1,2000);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,2000);
}
image.png

2.在fiddler中启用Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度

实战四:fiddler模拟mock测试

mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从而实现对上级模块的测试。
1.先在本地创建一个fiddler_mock.txt文件

{
    "code": "200 OK",
    "name": "minisummer",
    "url": "https://www.jianshu.com/u/0422c719f7ef"
}
image.png
2.选择百度首页接口,并且点击“autoresponde”--》“add rule”,添加到右框中,勾选三个选项,点击“find a file”,选择你刚刚创建的文件,再点击“保存”。
image.png
3.再在浏览器中输入:www.baidu.com,按“回车”键,就得到了我们自定义的数据。
image.png

实战五:fiddler设置断点修改请求和响应数据

拦截HTTP请求后修改方式有两种,一种是临时修改,即结果只对当次请求有效,另一种是永久修改,可以通过urlreplace命令实现。
方法一:开启断点:规则->自定义断点
1)before request。也就是发送请求之前,Fiddler代理中转之前,这时可以修改请求的数据。


image.png

2)after response。也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。
这里选择find file,修改响应内容为fiddler_mock.txt文件的数据,点击“运行到完成”


image.png
image.png
image.png

关闭断点:规则->自定义断点->禁用

方法二:通过命令行设置断点
1)bpu 域名 :在请求开始时中断
在命令行输入命令,修改请求数据:bpu www.baidu.com

image.png

2)退出断点:bpu
取消断点,在命令行输入命令:bpu

image.png
3)bpafter 域名 :在响应到达时中断
在命令行输入命令,修改响应数据:bpafter www.baidu.com
image.png

4)退出断点:bpafter
取消断点,在命令行输入命令:bpafter


image.png

实战六:fiddler接口测试

1.在右侧点击“composer”的选项,
2.在parsed中进行根据http发送的请求进行选择,我们模拟post请求,
3.添加post的url地址
4.选择http协议的版本 ,
5.填写post请求的header和body ,
6.最后点击 Execute,就可以发送post请求,在左侧可以查看到发送的请求记录。
7.点击“会话详细”可以查看post响应的数据。


image.png
image.png

实战七:fiddler流量测试

在测移动APP的时候,有个非常值得关注的测试点:流量测试。那么如何通过fiddler工具把耗流量比较大的请求给抓取出来呢?
我们只需要过滤出大于50k的请求(也可以设置大于200k,看自己的需求),勾选Hide smaller than 50KB(隐藏小于50k的请求),Action按钮勾选:Run filterset now


image.png

fiddler总结

fiddler

出处:https://www.cnblogs.com/csmashang/p/12760587.html
https://blog.csdn.net/u010618194/article/details/76652513

请大家多多指教~
以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。
注:转载请注明出处,商用请征得作者本人同意,谢谢!!!

上一篇下一篇

猜你喜欢

热点阅读