当前位置: 首页 > news >正文

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试

1.简介

Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数;在收到应答包,在js解析和浏览器渲染之前,修改返回结果。有了这个功能,开发者就可以修改不同参数测试server,同时也可以修改返回包测试自己的js函数,或测试页面渲染。使用者功能要用到fiddler的命令行。因为这个菜单里面是中断所有的请求

2.为什么要打断点呢?

2.1开发人员

对于一些大厂的程序猿,他们的分工是非常明确的。前端程序员和服务器程序员是分工合作的。前端程序员想要调试Ajax请求的功能,这样便不必等待服务器端程序员开发好所有接口之后再开始开发前端的ajax请求功能,因为通过“模拟”真实的服务器端的响应,便可以保证功能的正确性,而服务器端开发程序员,只要保证最终的响应是符合规定的即可。这大大简化了程序开发的效率,当然也降低了不同业务线程序员联调的难度。

2.2测试人员

构造数据,设置断点可篡改请求和返回的数据包。根据测试的不同场景,有时需要在测试过程中更改请求、或者更改响应内容,从而达到最终的测试目标。这样就不用到处求人修改限制,给别人增加额外工作量。

比如:一个年龄的输入框,输入框前端做了限制1-200,那么我们测试的时候,需要测试小于1的情况下。很显然前端只能输入大于1的。这是我们可以先抓到接口,修改请求参数,绕过前端,传一个小于1的数,检查服务端的功能是否OK。类似的还有金额输入框、分数输入框等等。

3.什么是断点?

断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析。也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时间。

而在Fiddler这里所谓断点功能就是将你的请求或者响应截获下来,但是不发送也不返回,都放到Fiddler这里, 这个时候你可以做很多事情,比如说,把请求报文改了,或 响应报文改了,再发送给服务器 或 客户端.

 如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

4.断点时间点(位置)

Fiddler为Web请求提供了类似的,基于断点的调试功能。会话在执行过程中有两个可能中断的时间点:

(1)从客户端读到请求后,在请求被发送到服务器之前。

(2)在服务器发出响应后,在响应返回给客户端之前。

以上两种断点就是打断点的两种方式:分别是请求断点(request breakpoint)和响应断点(response breakpoint)。

请求断点:对请求的数据进行修改,在请求还没到服务器的时候,我们可以在fiddler中把参数改了,然后再把请求发过去。当程序在请求中断点停止执行时,你可以任意修改该请求,包括URL、headers或body。你还可以选择不发送该请求给服务器,自定义响应返回给客户端。大多数情况下,客户端应用不知道Fiddler修改了它的请求。

响应断点:对响应的数据进行修改,是服务器已经处理完请求了,准备给前端返回数据了,但是fiddler把这里拦下来了,想对响应数据做一些修改。比如前端需要展示今日登录次数,我想看前端展示登录1000000000000000000000次的效果,我不可能真的点这么多次,也不想去数据库跑脚本差这么多没用的数据,那么我就直接改这个接口的返回值就好了。当程序在响应断点停止执行时,你可以任意修改响应的内容,包括headers或body。你还可以自己生成新的响应,取代服务端接收到的响应。在响应断点,你也可以修改任意客户端发送的请求,但是由于该请求已经发送给服务器了,这些修改只在Fiddler中生效-服务器永远都看不到你做的这些修改。

5.断点的位置

断点的位置有两种,如下图所示:

1.Before response:这个是打在request请求的时候,未到达服务器之前。

2.After response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。

6.设置断点的方式

设置断点有两种方式:

(1)全局断点:一种用工具栏中的按钮来设置断点,特点是会拦截所有的请求。

(2)单个断点:一种用命令行的形式来设置断点,特点是拦截某个请求。

(3)Filters:通过Filters里面的断点设置来设置断点

6.1Breakpoint Bar(断点栏)

当会话停止执行时,在Request Inspectors和Response Inspectors之间会出现一个红色Breakpoint Bar。它由两个按钮和一个下拉框组成,如下图所示:

只有当程序在请求的断点处停止时,黄色的Break on Response按钮会处于可点击状态。当点击该按钮,它会为当前的会话设置响应断点,然后使程序恢复执行,向服务器发送(可能修改过的)请求。点击绿色的Run to Completion按钮后,程序会继续执行直至程序结束,不会在接收到响应时中断。

在 Breakpoint Bar右侧的下拉框中,可以选择特定的响应模板或者文件作为该请求的响应,如下图所示:

从下拉框中选中某个文件后,它会马上被加载到想要的Inspectors(观察窗口中),以便在返回客户端之前进一步修改响应的具体内容(但不需要修改磁盘文件)。如果你在请求断点处使用下拉框中选中的内容作为响应,该请求就不会继续发送给服务端,因为Fiddler会返回响应。

6.1全局断点

全局断点就是中断fiddler捕获的所有请求,设置有两种方法。

6.1.1方法一

1.选择Fiddler菜单中Rules->Automatic Breakpoints->Before Requests(请求前断点)/After Responses(响应后断点)/Disabled (禁止断点),设置断点,也可以使用快捷键F11。如下图所示:

2.点击“Before Request”选完后左下方会有一个红底蓝字的大T。如下图所示:

 

3.点击“After Response”选完后左下方会有一个红底绿字的大T。如下图所示:

 

6.1.2方法二

快捷点击指定位置:就是直接可以在状态栏的这个位置直接点出来(前边介绍状态栏的时候提到过)。点一次,红底蓝字:对请求断点;点两次,红底绿字,对响应断点;点三次,取消。如下图所示:

6.2单个断点

局部断点设置在底部命令行处进行,与全局断点不同之处是满足我们设置的条件进行断点。通过命令行输入命令方法,可对部分请求进行拦截。例如:

bpu www.baidu.com --代表只中断www.baidu.com的请求,其他请求不处理
bpafter www.baidu.com --代表只中断www.baidu.com的响应,其他返回不处理
bps xxx 中断响应为指定字符的所有session响应
bpv/bpm xxx 中断指定请求方式的session响应

具体操作步骤如下:

在进行断点调试时,想必之前已经知道了web网站或者接口请求的URL地址,这时候只需要针对这一条请求打断点调试,在命令行中输入指令就可以了。

1.请求前断点(before response):bpu

要打断点的web网站或者接口:https://xxxx/xxxxx

命令行输入:bpu https://xxxx/xxxxx 回车

请求web网站或者接口的时候,就会只拦截这个web网站或者接口了,此时可以修改任意请求参数

 取消断点,在命令行输入:bpu 回车就可以了。如下图所示:

2.响应后断点(after requests):bpafter

要打断点的web网站或者接口:https://xxxx/xxxxx

在命令行输入:bpafter https://xxxx/xxxxx 回车

调用web网站或者接口,会发现已经拦截到调用接口后服务器返回的数据了,此时可以修改任意返回数据。如下图所示:

取消断点,在命令行输入:bpafter 回车就可以了。如下图所示:

 

6.2.1命令行其它相关指令

Bpafter, Bps, bpv, bpm, bpu。这几个命令主要用于批量设置断点,例如:

Bpafter xxx: 中断  URL  包含指定字符的全部  session  响应Bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应Bpv xxx: 中断指定请求方式的全部  session  响应Bpm xxx: 中断指定请求方式的全部  session  响应 、等同于 bpv xxxBpu xxx:与bpafter类似

 

当这些命令没有加参数时,会清空所有设置了断点的HTTP请求。

更多的其他命令可以参考Fiddler官网手册。那么一些常见的断点命令如下表:

命令描述案例解除断点
bpafterbpafter后边跟一个字符串,表示中断所有包含该字符串的请求bpafter baidu输入bpafter解除断点
bpubpafter功能差不多,bpu baidu输入bpu解除断点
bpv只中断HTTP方法的命令,HTTP方法如POST、GETbpv get输入bpv解除断点
bpm只中断HTTP方法的命令,HTTP方法如POST、GETbpm get输入bpm解除断点
go放行中断下来的请求,相当于工具栏上的go按钮go

6.3Filters设置断点

通过Filters里面的断点设置来设置断点,例如:通过Filters设置post请求断点,然后在浏览器提交post请求,会话列表就能看到对应请求被标识为断点,然后选择该会话切换到Inspectors 标签则可以修改请求参数信息和响应结果信息等。如下图所示;

7.小结

这里总共介绍了三种设置断点的方式,一般工作中,我们经常会用到的是前两种方法,第三种方法宏哥一般不建议使用设置断点(特殊情况例外)。

 

 

 

 

相关文章:

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试

1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数&#xff1b…...

Android 13(T) - Media框架(1)- 总览

从事Android Media开发工作三年有余,刚从萌新变成菜鸟,一路上跌跌撞撞学习,看了很多零零碎碎的知识,为了加深对Android Media框架的理解,决定在这里记录下学习过程中想到的一些问题以及一些思考,也希望对初…...

简述vue3(ts)+antdesignvue项目框架搭建基本步骤

目录 项目简介 概念 过程简述 基本步骤 1.创建新项目 2.安装Ant Design Vue 3.配置Ant Design Vue 4.创建页面和组件 5.使用组件 6.运行项目 项目简介 概念 Vue 3(使用TypeScript)和Ant Design Vue项目框架搭建是指在Vue 3框架下,…...

webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1

webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1 1.问题2. 解决办法: 1.问题 使用webpack打包是报错如下: webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1,因为在此系统上禁止运行脚本。有关详细信息&#xff0c…...

GDAL OGR C++ API 学习之路 (5)OGRLayer篇 代码示例

GetStyleTable virtual OGRStyleTable *GetStyleTable () 返回图层样式表 返回: 指向不应由调用方修改或释放的样式表的指针 // 假设图层对象为 poLayer OGRStyleTable* poStyleTable poLayer->GetStyleTable(); if (poStyleTable ! nullptr) {// 处理样式表信息// ..…...

NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍

今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍,方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数:1, 2, 3, 4, 8 安装类型:表面贴装,通孔 可水洗:无 端子类型:PC引脚(只…...

一起学算法(滑动窗口篇)

前言: 对于滑动窗口,有长度固定的窗口,也有长度可变的窗口,一般是基于数组进行求解,对于一个数组中两个相邻的窗口,势必会有一大部分重叠,这部分重叠的内容是不需要重复计算的,所以我…...

HTML <q> 标签

实例 标记短的引用: <q>Here is a short quotation here is a short quotation</q>浏览器支持 元素ChromeIEFirefoxSafariOpera<q>YesYesYesYesYes所有浏览器都支持 <q> 标签。 定义和用法 <q> 标签定义短的引用。 浏览器经常在引用的内容…...

机器学习02-再识K邻近算法(自定义数据集训练及测试)

定义&#xff1a; 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。简单的说就是根据你的“邻居”来推断出你的类别。 用个成语就是物以类聚 思想&#xff1a; 如果一个样本在特征空间中的K个最…...

github使用笔记及git协作常用命令

1.Github有一个主库,每个人自己也有一个库,称为分支。 2.Github的协作流程:先从主库fork出自己的分支, 然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,然后 服务器分支Pull Request到 主库。 3.本地仓库由git维护的三棵“树"组成:第1个…...

iOS - Apple开发者账户添加新测试设备

获取UUID 首先将设备连接XCode&#xff0c;打开Window -> Devices and Simulators&#xff0c;通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] &#xff0c;点击设备 点击加号添加新设备 填写信息之后点击Continue&#xff0c;并一路继续…...

vue 前端 邮箱、密码、手机号码等输入验证规则

最近在写前端表单验证的时候&#xff0c;发现一篇文章质量很好&#xff0c;所以写下这篇文章记录 原文章链接&#xff1a;vue 邮箱、密码、手机号码等输入验证规则 1.手机号 const checkPhone (rule, value, callback) > {const phoneReg /^1[34578]\d{9}$$/;if (!value…...

如何看待前端已死这个问题(大学生篇)

小编刚大学毕业&#xff0c;还记得是大三的时候选择的前端开发方向&#xff0c;那个时候行情其实并没有这么差&#xff0c;最近互联网上讨论这一个很火的话题&#xff0c;叫前端已死。那么我就说说我的看法吧&#xff0c;虽然可能比起行业的大佬会比较短浅&#xff0c;但我想就…...

揭开高级产品经理思维的秘密

我经常被问到产品经理如何晋升到更高级别。事实上&#xff0c;获得晋升往往是一场复杂的游戏。是的&#xff0c;你的技能和成就很重要&#xff0c;但其他因素也很重要&#xff0c;比如你的经理对人才培养的关心程度、你的同事有多优秀、任期有多长、公司的政治氛围如何等等。 所…...

Java 学习路线图

以下是 Java 学习路线图的大致概述&#xff1a; Java 基础语法和面向对象编程&#xff08;OOP&#xff09;&#xff1a;包括数据类型、控制流、数组、类和对象、继承、多态、抽象类和接口等。 Java 集合框架&#xff1a;包括集合和 Map 等常用数据结构的使用和操作。 Java I/…...

在springboot项目中使用策略工厂模式

在springboot项目中使用策略工厂模式 策略接口类 package cn.test.ext;public interface ITestStrategy {void execTestMethod(); }策略实现类 package cn.test.ext.beanlife;import cn.test.ext.ITestStrategy; import cn.test.ext.MyStrategyFactory; import lombok.exter…...

mysql综合练习语法总结

mysql综合练习 用于 小白练手的主要用于以后语法忘了回来看 题目 # 1、创建数据库test01_library # 2、创建表 books&#xff0c;表结构如下&#xff1a;# 3、向books表中插入记录 # 1&#xff09;不指定字段名称&#xff0c;插入第一条记录 # 2&#xff09;指定所有字段名…...

统计神经网络参数量、MAC、FLOPs等信息

0、基础提示 1、FLOPS是用来衡量硬件算力的指标&#xff0c;FLOPs用来衡量模型复杂度。 2、MAC 一般为 FLOPs的2倍 3、并非FLOPs越小在硬件上就一定运行更快&#xff0c;还与模型占用的内存&#xff0c;带宽&#xff0c;等有关 1、FLOPs计算 神经网络参数量。用于衡量模型大…...

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文&#xff1a;Aligning Bag of Regions for Open-Vocabulary Object Detection 代码&#xff1a;https://github.com/wusize/ovdet…...

Ansible 自动化运维

目录 ansible 环境安装部署ansible 命令行模块inventory 主机清单 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…...

别再折腾官方源了!用XianDian-IaaS-v2.2在CentOS7上30分钟搞定OpenStack最小化部署

30分钟极速部署OpenStack&#xff1a;XianDian-IaaS在CentOS7上的实战指南 OpenStack作为开源云计算平台的标杆&#xff0c;其强大的灵活性和模块化设计吸引了大量企业用户。但官方部署流程的复杂性往往让初学者望而却步——依赖项冲突、版本兼容性问题、繁琐的配置步骤&#x…...

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

从“Hello World”到区域赛银牌&#xff1a;我的ACM算法打怪升级全记录 记得大一刚接触编程时&#xff0c;连最简单的冒泡排序都要调试半天。三年后站在领奖台上&#xff0c;回想这段旅程&#xff0c;最珍贵的不是奖牌&#xff0c;而是那些深夜debug的坚持和突破自我的瞬间。这…...

从代码到部署:手把手复现CenterPoint(PyTorch版)在KITTI数据集上的完整流程

从零实现CenterPoint&#xff1a;KITTI数据集3D目标检测全流程实战指南 为什么选择CenterPoint进行3D目标检测&#xff1f; 在自动驾驶和机器人感知领域&#xff0c;3D目标检测一直是核心技术难题。传统基于锚框&#xff08;Anchor-based&#xff09;的方法在处理旋转物体时表现…...

告别文献堆砌!PaperXie AI 文献综述:重构学术写作逻辑,3 步打造导师青睐的深度综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed 在学术写作的漫漫长路上&#xff0c;文献综述宛如横亘在无数本科生、研究生面前的 "天堑"—— …...

AgentCPM-Report研报系统实操:Pixel Epic贤者响应延迟优化教程

AgentCPM-Report研报系统实操&#xff1a;Pixel Epic贤者响应延迟优化教程 1. 认识Pixel Epic智识终端 Pixel Epic是一款基于AgentCPM-Report大模型构建的创新研究报告辅助系统。与传统AI工具不同&#xff0c;它将枯燥的科研过程转化为一场像素风格的RPG冒险。在这个系统中&a…...

P3C黄山版突破式迁移指南:无缝升级Java代码规范检查体系

P3C黄山版突破式迁移指南&#xff1a;无缝升级Java代码规范检查体系 【免费下载链接】p3c Alibaba Java Coding Guidelines pmd implements and IDE plugin 项目地址: https://gitcode.com/gh_mirrors/p3/p3c 在Java开发团队中&#xff0c;代码规范检查工具的升级往往伴…...

系统架构设计师常见高频考点总结之计算机网络

学习这些网络题目时&#xff0c;可以将网络层次结构想象成高速公路系统&#xff1a;核心层是连接城市的大型立交桥和主干道&#xff0c;追求极速转发&#xff1b;汇聚层是出口闸机&#xff0c;负责检查通行证&#xff08;安全过滤&#xff09;和分流&#xff1b;而接入层则是通…...

Mojo加速Python科学计算:如何在72小时内将AI推理速度提升8.6倍(附完整可运行代码)

第一章&#xff1a;Mojo与Python混合编程概述Mojo 是一种为 AI 系统量身打造的现代系统编程语言&#xff0c;兼具 Python 的易用性与 C/C 的执行效率。它原生兼容 Python 生态&#xff0c;允许开发者在同一个项目中无缝调用 Python 模块、复用现有 NumPy/Torch 代码&#xff0c…...

教无人机操控3年,这款仿真软件让我彻底告别“真机实训焦虑”

作为无人机专业实操教师&#xff0c;深耕一线教学3年&#xff0c;最大的痛点莫过于“真机实训难”——相信同行们都有共鸣&#xff0c;无人机操控教学看似是“练手”&#xff0c;实则处处是坑&#xff0c;每一个难题都让人头疼不已&#xff0c;甚至一度让我陷入教学焦虑。整理了…...

Buck电路设计避坑指南:为什么你的小信号模型仿真总是不收敛?

Buck电路小信号模型仿真收敛问题实战解析 在电力电子系统设计中&#xff0c;Buck变换器的小信号模型仿真对于理解系统动态特性至关重要。然而&#xff0c;许多工程师在从理论转向实践时&#xff0c;常常遇到仿真不收敛、波形异常等问题。本文将深入剖析这些问题的根源&#xff…...