Fiddler系列课程笔记(二):Fiddler工具详解及应用实战
1.Fiddler的安装
2.Fiddler的组成部分
2.1 Fiddler的菜单栏
2.1.1 Hide:隐藏掉一些不必要的请求资源的数据展示
2.1.2 Fiddler修改端口
2.1.3 Fiddler快速打开IE设置
2.2 Fiddler的工具条
工具栏快捷按钮介绍:
2.2.1 [小气泡]:添加备注
给会话添加备注说明
2.2.2 [Replay]:回放请求
回放请求,选中一个http请求,点击replay,会对此请求进行一次回放。
每点一下,重新发起一次选中的这个请求 (快捷键:R/r)
①.快捷键:每按一下字母R/r,重新发起一次选中的这个请求
②.如果想重新发起5次请求呢?-- Shift + R/r,在弹框中输入数字5,点击ok即可。 (这个是串行发起的请求,不是并发)
2.2.3 [X]:清除
(快捷键:Ctrl + X,remove all)
清除所有对话;
清除加载图片的请求;
清除使用http connect方法的请求;
清除状态码非200的请求;
清除非浏览器发出的请求;
清除已响应请求且未标记的请求;
清除响应body一样的请求,只保留一个;
2.2.4 [GO]:断点go
断点go,点一次go,拦截释放一次
在请求的断点时让这个断点继续往下走,类似于debug.
①:请求前断点(↑):拦截所有请求,不会发送到服务器端
②:请求后断点(↓):拦截所有请求,不会将响应传回客户端
点一次go,拦截释放一次
2.2.5 [Stream]:流模式
代理模式。默认:缓冲模式。点击进行切换。
流模式streaming:将客户端的请求数据实时的传给服务端,更接近于浏览器本身的真实行为。
缓冲模式buffering:将客户端的请求数据缓冲起来,等数据写完之后再传给服务端。
2.2.6 [Decode]:解码
点一下,对所有请求进行解码。
解压请求。解压http请求里面的东西,帮助查看响应内容【常用】
2.2.7 [Keep]:保持会话的数目
Keep All sessions :保持所有会话,也可以选择保持100个会话等,默认是保持all的,但是会话越多,fiddler占用机器的内存越大
2.2.8 [靶心]:过滤请求
过滤请求,可以过滤掉不想看到的请求 (不知为啥,我怎么用不了?)
鼠标按住此处,变为十字号显示,按住后移动到想要捕获的进程页面,此处变为红色显示,且只捕获此页面相关进程;再次点击后变为Any Process
比如说只想看到chrome的请求,按住靶心,打开chrome浏览器,选择chrome,此时在其他浏览器上的请求都不会被捕获到,非常实用
2.2.9 [Find]:查找session会话
可选择颜色进行标识
2.2.10 [Save]:保存session会话
保存session会话,可以保存多个会话,便于清空会话后可从保存的文件中查看
2.2.11 [截图]:默认5秒后截图(电脑全屏)
保存后在fiddler底部出现一条图片会话,点击后右侧出现图片,可进行保存到桌面的操作
截图如下:
2.2.12 [计时器]
点一下,开始计时,再点一下,计时结束。(貌似在接口有延迟时,可以帮助我们统计接口响应时间。)
2.2.13 [Browse]:快速打开浏览器
2.2.14 [Clear Cache]:清除浏览器缓存
2.2.15 [TextWizard]:编码/解码文本内容
编码、解码文本内容,一般包含中文的请求都需要解码才能看到,所以复制url到TextWizard,然后选择URLDecode【常用】
MD5加密:
2.2.16 [Tearoff]:分离面板
点击后单独显示View窗口,点击x关闭分离面板
2.2.17 [MSDN Search]:搜索MSDN(微软开发者网站的一个搜索,国内访问不了)
2.2.18 [Online]:本机的一些在线信息
2.3 Fiddler的会话列表
抓包工具面板功能:
#:HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增
Result: HTTP响应的状态(码)
Protocol:请求使用的协议(如HTTP/HTTPS)
HOST:请求地址的域名 URL:请求的服务器路径和文件名,也包含GET参数
BODY:请求的大小,以byte为单位
Content-Type:请求响应的类型
Caching:请求的缓存过期时间或缓存控制header的值
Process:发出此请求的Windows进程及进程ID
Comments :用户通过脚本或者菜单给此session增加的备注
Custom:用户可以通过脚本设置的自定义值 【重点】
2.3.1 [#]:包含会话图标和会话id编号 (HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增)
监控面板-会话图标:
2.3.2 [Result]:HTTP响应状态
2.3.3 [Protocol]:请求使用的协议 (如 HTTP/HTTPS/FTP)
2.3.4 [HOST]:请求地址的域名
2.3.5 [URL]:请求的服务器路径和文件名,也包括GET参数
2.3.6 [BODY]:请求的大小,以byte为单位
2.3.7 [Caching]:请求的缓存过期时间或缓存控制header的值
2.3.8 [Content-Type]:请求响应的类型
2.3.9 [Process]:发出此请求的Windows进程及进程ID
2.3.10 [Comments]:用户通过脚本或者菜单给此session增加的备注
2.3.11 [Custom]:用户可以通过脚本设置的自定义值
FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP",120,"X-HostIP");
FiddlerObject.UI.lvSessions.AddBoundColumn("对应IP",120,"X-HostIP");
2.4 Fiddler的命令行+状态栏
2.4.1 [QuickExec]:快速执行命令
在命令行输入:help,可跳转打开浏览器的一个帮助文档。https://docs.telerik.com/fiddler/knowledge-base/quickexec
常见命令有:
help : 打开官方的使用页面介绍, 所有的命令都会列出来
cls : 清屏 (Ctrl+x 也可以清屏)
select : 选择会话的命令, 选择所有相应类型select image、select css、select html
?sometext : 查找字符串并高亮显示查找到的会话列表的条目,?qq.com
>size : 选择请求响应大小小于size字节的会话
=status/=method/@host:查找状态、方法、主机相对应的session会话,=504,=get,@www.qq.com
quit:退出fiddler
Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置断点
Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应
Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。
Bpv xxx:中断指定请求方式的全部 session 响应
Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx
Bpu xxx:与bpafter类似。
基础命令:
<4k 筛选响应大小小于4kb大小的会话
<4000 筛选响应大小小于4000字节大小的会话
>4k 筛选响应大小大于4kb大小的会话
>4000 筛选响应大小大于4000字节大小的会话
?searchtext 筛选包含searchtext 内容的请求
=status 筛选响应状态=状态的会话
=method 筛选请求方法=方法的会话
@host 筛选包含host的会话
g、go 恢复所有断点会话
cls、clear 清除会话列表
start 开始监听会话
stop 停止监听会话
quit 退出fiddler
命令行设置断点命令:
bpu str 给包含str的url设置一个请求断点,只拦截请求,不拦截响应
bpu 清除请求断点
bpafter str 给包含str的url设置一个响应断点,只拦截响应,不拦截请求
bpafter 清除响应断点
bps 404 给状态码是404的请求设置一个断点
bps 清除状态码断点
bpm post 给请求方法为post的请求设置一个断点
bpm 清除请求方法断点
bold str 给包含str的url加粗
bold 清除加粗
bpu -- breakpoint url
bpafter -- breakpoint after url
bpu : bpurl的缩写。在命令输入框内输入:bpu 请求的URL, 然后回车 , 则符合url条件的请求就会被中断。
bpm : 相当于bpmethod。在命令输入框输入:bpm 请求方法,然后回车,则符合请求方法的请求就会被中断。
bps : bpstatus的缩写。在命令输入框输入:bps 响应状态码,然后回车,则符合状态码条件的请求就会被中断。
bpafter : 中断修改响应数据 。在命令输入框输入:bpafter url,然后回车,符合条件的url就会被中断。
简单举几个栗子:
①.命令行输入:bpu ningmengban --->> 包含ningmiengban的请求都打了断点(阻塞掉ningmengban的请求)
命令行输入:bpu,回车,结束掉对包含ningmiengban的请求阻塞
②.命令行输入:?searchtext,高亮显示URL中包含searchtext的会话 (蓝底高亮)
③.命令行输入:> 10000,高亮展示body中字节大于10000的会话 (蓝底高亮)
④.命令行输入:cls或者clear,清空当前会话列表 (等同于: Ctrl+X 快捷键)
2.4.2 [Capturing]:标识Fiddler正在处于代理的功能 (正在捕获会话...)
单击,点一下[Capturing],[Capturing]消失后,刷新页面,不会捕获新的会话请求 (原会话请求还在哈)
2.4.3 [All Processes]: 会话的选项,默认选择捕获全部会话
在 Fiddler 中,我们可以通过左下角查看当前 Fiddler 正在抓取哪些进程的 HTTP 数据报文。如下图:
All Processes: 抓取所有进程的报文
Web Browsers: 仅仅抓取浏览器进程的报文
Non-Browser: 仅仅抓取非浏览器进程的报文 (国内的一些非主流浏览器可能不会被当做浏览器进程,如360极速浏览器)
Hide All: 过滤掉所有进程的HTTP报文,和禁用抓包效果一致,即在 Web 会话列表不显示任何会话
2.4.4 [ ]: 点一下,↑ 请求前中断;再点一下,↓ 响应后中断
2.4.5 [2/4]:选中几条会话/当前会话的总数量 (4条会话,选中2条)
2.4.6 [请求地址信息]:当前选中会话的请求地址信息
2.5 Fiddler的辅助标签+工具
2.5.1 [Get Started]: 欢迎页签
左侧 START 快速开始检查数据包、构建请求;
右侧 LEARN 有 Fiddler 官方文档、推荐博客、学习 Video;
右侧 TOP ARTICLES 显示当前热门文章。
2.5.2 [Statistics]: 统计页签 (前端请求的性能分析)
统计HTTP请求的性能信息,比如请求数、发送请求的字节数、接收到的字节数、客户端连接的时间、全部花掉的时间等。
并且一次可选择多条请求数据合并统计,还可以点击 Show Chart 按钮显示统计图形。通过该页签,用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。
选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。
从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化。
单条请求-统计页签-信息展示:
多条请求-统计页签-信息展示:
统计图表-展示:
2.5.3 [Inspectors]:检查页签
Inspectors查看会话相应信息,上半部分是请求的内容,下半部分是响应的内容。 还提供了 Headers、TextView、WebFroms、Raw 等多种查看方式。
双击一条会话请求,可直接打开[Inspectors]页签,
2.5.4 [AutoResponser]:自动响应页签 (Mock测试)
一、配置 AutoResponder 规则拦截满足规则的求情,并返回本地资源或 Fiddler 资源,取代代替服务器响应。
例如①:当请求 URL 中出现 baidu 这个关键字,响应替换成电脑本地某张图片。
具体步骤:
a. 点击 Add Rule 按钮
b. Rule Editor 第一行输入关键字 baidu,第二行输入本地某张图片
c. 点击 Save 按钮
d. 勾上 Enable rules -- 激活规则
e. 勾上 Unmatched requests passthrough -- 对没有匹配的请求进行放行
配置完后再访问含有 baidu 的 URL,在 Fiddler 响应中能看到本地图片。
例如②:当请求访问百度的url,响应替换成电脑本地某张图片。
例如③:当请求访问柠檬班的logo时,接口404,不展示logo。
例如④:当请求访问柠檬班的logo时,logo图片换成我们本地的图片。
例如⑤:当请求访问柠檬班的login.js时,增加一个弹框。(比如生产环境这个login.js出了错,又不好在生产环境调试,就可以重定向到本地站点来进行调试)
例如⑥:当请求访问柠檬班的login.js时,增加一个钓鱼示例。(确定,跳转到柠檬班官网;取消,跳转到百度)
二、自定义响应
例如①:当请求测试派的登录接口时,输入错误的手机号,将提示内容'用户不存在'改成'当前手机号未注册'
2.5.5 [Composer]:设计者,构建页签
Composer允许用户自定义请求,可以手动创建一个新请求,也可以在会话表中拖拽现有的请求。
Fiddler-Composer有两种编辑模式:Parsed 和 Raw
Parsed模式(最常用),把Request分为三个部分:Request line, Request Header, Request Body (Parsed模式中可以选择请求方式、URL、协议版本、Request Body等,很容易创建一个Request)
Raw模式,需要你一行一行手动写一个Request。
1.parsed:被解析的http请求,可见请求头和请求体
● Log Requests:保存HTTP请求记录
● Request Body:POST请求请求体
● Upload file:可上传本地构造的HTTP请求
● Execute:执行重放功能或者执行新编辑请求
2.Raw:原始的HTTP请求,数据没有解析
3.Scratchpad:可以存储已经收集好的HTTP请求,可存储多个不同的请求。
(和raw类型差不多,但raw只能存储一条数据。Scratchpad可以存储多条请求)
使用:
点击进入Scratch -> 在左侧将请求拖入到Scratch区域,可以拖入多个请求
不同请求会以==区分
然后在任意请求处,鼠标左键单击3下,可全选当前请求,选中请求后点击execute,在左侧可见发送的请求
注意①:点击execute执行,需要选中相应的请求信息,否则会提示错误
**注意②:只选中相应请求即可,不应包括划分线,否则会提示request有问题**
4.options:
Request Options:
4.1. Inspect Session: 检查会话
开启情况下会自动进入Inspectors,检查HTTP请求和响应 (没看出来√与不勾的区别)
4.2. Fix Content-Length header: 使用post请求时,没有Content-Length 请求,fiddler会自动给加上
如果有Content-Length但是正文大小不正确,会自动修正,默认为勾选状态
4.3.Follow Redirects :自动重定向301,302的请求
4.4.Automatically Authenticate: 自动进行身份认证,http 401,http 407
4.5.Tear off:将Composer这个功能弹出一个浮动窗口,不使用时直接关闭即可
实例①:模拟测试派的登录
1、将手机号改成:15605819815
2、输入正确的手机号码 + 正确的密码
3、输入正确的手机号码 + 错误的密码
实例②: 模拟京东商城的登录
启动Fiddler, 启动IE, 打开京东,然后输入用户名和密码,登录。 Fiddler 将捕获到这个登录的Request.1.首先找出哪个Request 是用来登录的, 然后把它拖拽到Composer中。
[用来登录的request是这个: https://passport.360buy.com/uc/loginService?uuid=6bc79fbf-e882-49bb-b63a-6fd6ee448944]
2.在Composer可以看到, 登录是使用POST方法, 把用户名和密码发送给服务器。 那么我们可以修改Composer中的request内容, 比如用户名为:[email protected],密码为test1234。
3.Request造好了后, 我们按"Execute" 按钮就可以发送Request了(如果按住Shift键的同时,按"Execute". Fiddler会自动给这个Request下断点)。
4.发送的Request,将出现在左边的Web Session列表中。
[Composer-Scratchpad]
Fiddler Composer比其他工具的优势:
-
能从"Web会话列表"中 拖拽一个先前捕获到的Request, 然后稍微修改一下
-
发送Request后,还能设置断点,继续修改Request.
-
支持在Request中上传文件
-
支持发送多次Request.
同类工具①- Firefox插件Rest Client
Firefox也有一个插件叫Rest Client, 使用起来也很方便
同类工具②: Linux上的Curl
curl是个命令行工具, 功能也很强大
2.5.5 [Fiddler Orchestra Beta]
参考文章:Fiddler插件之Fiddler Orchestra Beta
2.5.6 [Filters]:过滤器
在 Fiddler 中,Filters(过滤器)选项卡提供了非常方便地将简单的过滤规则应用到正在捕捉的数据流上的方法。
在 Filters 选项卡上面的所有操作 FiddlerScript 可以模拟(通常更准确或强大),但是对于简单的任务,Filters 选项一般就足够满足过滤需求。
如下图:
上图中,选中 Filters 选项卡左上方的“Use Filters”复选框后,就可以使用 Filters 给出的过滤器对流量进行过滤了。
选中 Use Filters 复选框后,对于选定的会话,可以对该会话进行如下过滤操作:
-
是否隐藏显示
-
是否在 Web 会话列表中添加标识
-
是否设置断点用于人工调试
-
是否阻断发送
-
是否自动修改其数据头
Fiddler 还会为隐藏的会话提供代理功能,即使在 Web 会话列表中没有显示这些会话。
选项卡右上方的“Actions”按钮支持把当前选中的过滤器作为过滤集,加载之前保存的过滤集,并对之前捕捉到的数据流应用当前过滤规则。如下图:
一、Hosts(主机过滤)
Hosts 框提供根据主机名过滤的功能。如下图:
Hosts 过滤支持:
-
①.按区域进行过滤(Zone Filter):
如下图:
如果选择只显示局域网会话(Show only Interanet Hosts),Fiddler 将只会列出属于局域网的会话。
如果选择只显示互联网的会话(Show only Internet Hosts),Fiddler 将只会列出属于互联网的会话。 -
②.按主机进行过滤(Host Filter):
如下图:
如果选择隐藏以下主机(Hide the following Hosts),Fiddler 将隐藏 Hosts 输入框输入的主机。
如果选择只显示以下主机(Show only the following Hosts),Fiddler 将仅仅显示 Hosts 输入框输入的主机。
如果选择标记以下主机(Flag the following Hosts),Fiddler 将在 Web 会话列表中加粗显示 Hosts 输入框中输入主机的所有会话。
注意: (1)修改过滤器后,需要执行“Actions”的“Run Filterset now”按钮,使修改后的过滤器配置立即生效。 (2)Hosts 文本框不会自动通过通配符匹配子域名。如果你设置了“Show only the following Hosts”并且在列表中只有hxstrive.com,那么将无法看到 www.hxstrive.com 网站下的数据流。为了查看 hxstrive.com 域名下所有的数据流,需要手动添加通配符 *,例如:*.hxstrive.com 。 在通配符方式下就可以包含如 test.hxstrive.com 和 doc.hxstrive.com 这样的网站。如果你想查看根目录 hxstrive.com下的数据流,可以把通配符改成 *hxstrive.com 的形式 —— 这样就可以包含所有域名以 hxstrive.com 结束的数据流,前面不需要加点。如果有多个host,可以使用分号;分隔。
二、Client Process(客户端进程)
进程过滤器用于控制 Fiddler 显示哪个进程的数据流。
应用程序只有和 Fiddler 运行在相同的主机时,Fiddler 才能判断出是哪个进程发出的哪个请求。如下图:
- [Show only traffic from]选项,只显示选中进程下的数据流(注意:下拉列表中包含了系统中当前正在运行的所有进程)。如下图:
- [Show only Internet Explorer]选项,只显示进程名称以 IE 开头或请求的 User-Agent 头包含 compatible; MSIE 的数据流。
- [Hide traffic from Service Host]选项,会隐藏来自进程 svchost.exe的数据流,svchost.exe 进程是个系统进程,会同步 RSS Feeds 以及执行其他后台网络活动。
三、Request Headers(请求头)
可通过下面这些选项,添加或删除 HTTP 请求头,也可以标识包含某些请求头的请求。如下图:
- [Show only if url contains]选项框,支持基于 URL 隐藏某些请求,仅仅显示我们感兴趣的请求。
可使用前缀 EXACT 来限定大小写敏感,如下:
EXACT:hxstrive.com/q=字符串
也可以使用正则表达式:
REGEX:(?insx).*\.(gif|png|jpg)$ # 只显示图片请求
- [Flag requests with header]选项,支持指定某个HTTP请求头名称,如果在 Web 会话列表中存在该请求头,会加粗显示该会话。
- [Delete request header]选项,支持指定某个 HTTP 请求头名称,如果包含该请求头,会删除该请求头。
- [Set request header]选项,支持创建一个指定了名称和取值的 HTTP 请求头,或将 HTTP 请求头更新为指定取值。
四、Breakpoints(断点)
断点选项框支持对包含给定属性的请求或响应设置断点。如下图:
-
[Break request on POST]选项,会为所有 POST 请求设置断点。
-
[Break request on GET with query string]选项,会为所有方法为 GET 且 URL 中包含了查询串的请求设置断点。
-
[Break on XMLHttpRequest]选项,会对所有能够确定是通过[XMLHttpRequest]对象发送的请求设置断点(对ajax请求设置断点)。
由于从数据流上无法判断该请求是否通过[XMLHttpRequest]对象发送,因此该功能是通过查找请求头是否为 X-Requested-With(由jQuery 框架添加)实现的。
它还会检查请求头是否为 X-Download-Initiator,在 IE10 及更高的版本中可以配置在请求头中包含 X-Download-Initiator。 -
[Break response on Content-Type]选项,会为所有响应头 Content-Type 中包含了指定文本的响应设置响应断点。
五、Response Status Code(响应状态码)
通过这些选项,你可以基于响应状态码过滤会话。如下图:
-
[Hide success(2xx)]选项,会隐藏状态码在 200 到 299 之间( 包含 200 和 299)的响应。这些状态码用来表示请求成功。
-
[Hide non-2xx]选项,会隐藏状态码不在 200 到 299 之间的响应。
-
[Hide Authentication demands(401,407)]选项,会隐藏状态码为 401 和 407 的响应,隐藏身份验证要求,这些响应需要用户进一步确认证书。
-
[Hide redirects(300,301,302,303,307)]选项,会隐藏对请求进行重定向的响应。
-
[Hide Not Modified(304)]选项,会隐藏条件状态请求中状态码为 304 的响应,表示客户端缓存的实体是有效的。
六、Response Type and Size(响应类型和大小)
通过这些选项,你可以控制在 Web 会话列表中显示哪些类型的响应,并阻塞符合某些条件的响应。如下图:
-
[Hide smaller than]选项,隐藏响应体小于指定的字节数的响应。
-
[Hide larger than]选项,隐藏响应体大于指定字节数的响应。
-
[Time HeatMap]复选框,会基于服务器返回给定响应所需要的时间为每个会话设置背景颜色。不超过 50 毫秒的响应会以绿色显示;50 毫秒到 300 毫秒之间的响应不着色;300 毫秒到 500 毫秒之间的响应以黄色显示;超出 500 毫秒的响应以红色显示。
-
[Block scriptfile]勾选该选项卡,如果返回的响应头指定的 Content-Type 为脚本,则返回 HTTP/404 响应。
-
[Block imagefile]勾选该选项卡,如果返回的响应头指定的 Content-Type 为图像,返回 404 响应。
-
[Block SWF file]勾选该选项卡,如果返回的响应头指定的 Content-Type 为 Adobe Flash (application/x-shockwave-flash),返回404响应。
-
[Block CSS file]勾选该选项卡,如果返回的响应头指定的 Content-Type 为 CSS,返回 404 响应。
类型下拉框如下图:
其中:
Show all Content-Types 显示所有的响应,不过滤
Show only IMAGE/* 只显示图片类型的响应
Show only HTML 只显示HTML文档响应
Show only TEXT/CSS 只显示CSS层叠样式表响应
Show only SCRIPTS 只显示脚本类型响应
Show only XML 只显示XML类型响应
Show only JSON 只显示JSON类型的响应
Hide IMAGE/* 隐藏图片类型的响应
七、Response Headers(响应头)
通过这些选项,你可以添加或删除 HTTP 响应头,或者为包含特定响应头的响应添加标识。如下图:
-
[Flag responses that set cookies]选项,会以粗体显示所有响应头包含 Set-Cookie 的响应。
-
[Flag responses with header]选项,支持指定 HTTP 响应头名称,如果响应中该 HTTP 头存在,该会话在 Web 会话列表中会以粗体显示。
-
[Delete response header]选项,支持指定 HTTP 响应头名称,如果存在该响应头名称,会从响应头中删去。
-
[Set response header]选项,支持创建或更新 HTTP 响应头,你可以自定义设置取值。
2.5.7 [Timeline]:时间轴页签
时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。
把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。
在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间。
参考文章:Fiddler时间轴选项卡(TimeLine)
3.Fiddler-断点应用
断点分两种,一种是常用的【全局断点】,另一种是【局部断点】。
文章推荐:面试被问到:fiddler 在工作中有哪些应用?阁下又该如何应对?
3.1 全局断点
3.1.1 全局断点的两种方式
【全局断点】有2种方式可以设置,一种是在Rules菜单下:
可以手动选择,也可以在Fiddler面板,执行快捷键:
F11 请求前断点
Alt + F11 响应后断点
Shift + F11 取消断点
另一种方式:
3.1.2 全局断点-实例
实例①.全局断点-请求前断点:在接口发送到服务器之前,对数据篡改,改动后,将请求发送给服务器
实例②.全局断点-响应后断点:
3.2 局部断点
3.2.1 局部断点的实现方式--命令行
【局部断点】:是通过命令行的方式实现的
bpu str 给包含str的url设置一个请求断点,只拦截请求,不拦截响应
bpu 清除请求断点
bpafter str 给包含str的url设置一个响应断点,只拦截响应,不拦截请求
bpafter 清除响应断点
bps 404 给状态码是404的请求设置一个断点
bps 清除状态码断点
bpm post 给请求方法为post的请求设置一个断点
bpm 清除请求方法断点
bpu -- breakpoint url
bpafter -- breakpoint after url
bpu : bpurl的缩写。在命令输入框内输入:bpu 请求的URL, 然后回车 , 则符合url条件的请求就会被中断。
bpm : 相当于bpmethod。在命令输入框输入:bpm 请求方法,然后回车,则符合请求方法的请求就会被中断。
bps : bpstatus的缩写。在命令输入框输入:bps 响应状态码,然后回车,则符合状态码条件的请求就会被中断。
bpafter : 中断修改响应数据 。在命令输入框输入:bpafter url,然后回车,符合条件的url就会被中断。
3.2.2 局部断点-实例
实例①.局部断点-请求断点-命令行输入:bpu + login + 回车
我们手动[Run to Completion]让上面那个1请求断点通过后,给大家演示一下页面上对请求的拦截,刷新柠檬班-登录页面:
那如何取消局部断点-请求断点呢?
取消局部断点-请求断点-命令行输入:bpu -- 清除请求断点
实例②.局部断点-响应断点-命令行输入:bpafter + login + 回车
我们手动[Run to Completion]让上面那个3响应断点通过后,给大家演示一下页面上对响应的拦截,刷新柠檬班-登录页面:
那如何取消局部断点-响应断点呢?
取消局部断点-响应断点-命令行输入:bpafter -- 清除响应断点
[补充]:通过AutoResponder修改响应
这是另外一种断点之外的修改响应数据的方式。在本地文件中配置你想要的的返回结果,请求特定接口时返回你自己配置的资源。例如下面网页请求的logo图片,篡改返回的这个logo文件为本地指定的一个文件。
步骤如下:
重新再请求页面,logo已显示指定到的文件。
4.Fiddler-弱网测试
4.1 Fiddler-菜单栏-开启/关闭弱网测试
Rules->Performace->勾选Simulate Modem Speeds,开启弱网模拟。
另:若想取消弱网设置,选中Rules->Performance->点击Simulate Modem Speeds,取消勾选即可。
取消弱网测试,我们看一下:(视频中,演示差别不大,那我们手动改js代码,将延迟增大)
4.2 Fiddler-编码-修改弱网测试参数
Fiddler中Rules—>Cutomize Rules打开CustomRules.js文档,搜索关键字[m_SimulateModem],找到如下文档位置
oSession[“request-trickle-delay”] = “300”; 看注释:上传1KB需要300ms;转化上传速度:1Kb/0.3s = 3.3(KB/s)。
oSession[“response-trickle-delay”]同理。数值越大,延迟多大。
弱网场景例如2G网络,2G上行/下行速率约为2.7、9.6kbps。每1KB数据,uploaded 约 2962 ms,downloaded 约 833 ms。则按如下设置并保存,模拟2G弱网情况。