Fiddler抓包常用功能

简介: 通过上一篇文章Fiddler移动端抓包,我们知道了Fiddler抓包原理以及怎样进行移动端抓包,接下来介绍Fiddler中常用的功能。Fiddler中常用的功能如下:• 停止抓包• 清空会话窗内容• 过滤请求• 解码• 设置断点

一. 停止抓包

微信图片_20220425203015.png


二. 清空会话窗


方法一,工具栏工具:

微信图片_20220425203018.png

方法二,命令行形式:

微信图片_20220425203022.png

当然,命令行工具也还支持其他命令的输入,这里不做过多说明。


三. 过滤请求


打开Fiddler抓包时,会话窗口会显示很多的请求,但我们只需要抓取到目标请求数据,这时就可以设置过滤。

过滤可以分为两种方式:只显示目标请求,只抓取目标端的请求。区别在于,前者是抓取所有请求但只显示目标请求数目,后者是只抓取某个端的请求数据。


只显示目标请求

操作步骤如下:

微信图片_20220425203026.png

如界面右侧下方所示,还可以勾选更多的条件进行过滤展示,这里不做过多说明,有兴趣的可以自行尝试。


只抓取目标端的请求

例如,我们只想对移动端抓包时,我们可以设置只抓取移动端的请求,进行如下设置:

微信图片_20220425203029.png


四. 解码


在抓取某些请求的时候,会发现返回的内容中出现了乱码,如下图所示

微信图片_20220425203032.png

这是HTML被压缩了的原因, 我们可以通过一下两种方式去解压缩。

方法一,点击Responsebody is encoded.Click to decode.,如下:

微信图片_20220425203036.png

方法二,先选中工具栏中的Decode,再请求抓包,这样显示的请求结果便是解码后的结果。如下:

微信图片_20220425203355.png

解码后结果如下图所示:

微信图片_20220425203040.png


五. 设置断点


有时进行调试时,我们需要伪造客户端请求和服务器响应,那么这个时候就需要设置断点。


伪造客户端请求

伪造客户端请求,即在客户端点击请求后、正式向服务器发送请求之前,修改原来的请求参数再发送请求,这需要设置断点为Before Requests,步骤说明如下:

  1. 通过菜单选项或快捷键F11进行设置,如下图步骤,点击选择Before Requests
    微信图片_20220425203044.png
    经过第一步的设置,我们再次去抓包,会发现在左侧会话窗口中,所有请求都标记成了中断,请求未发送成功而是被Fiddler中断了,且此时客户端可以看到数据加载异常。
    会话窗口中找到对应的请求,点击选择,右侧选择Inspectors,会显示一行操作栏,点击Run to Completion便可继续发送被中断的请求。
    微信图片_20220425203047.png
    但我们的目的是断点后修改请求数据再发送请求。
  2. 找到对应的请求,修改请求数据
    以登录Testerhome为例,先将设置断点为Before Requests,在浏览器中输入正确的账号和密码,点击登录,然后在Fiddler中找到该请求,将密码清空,再点击Run to Completion继续发送请求,服务器会返回什么样的结果,下面我们来验证。
    微信图片_20220425203050.png
    可以看到,浏览器输入正确的账号密码应该是要登录成功的,但我们通过Fiddler打断点后,对该登录接口的请求参数做了修改之后再请求,返回错误:账号或密码错误,请重试。


伪造服务器响应

伪造服务器响应,即在响应返回给客户端之前,将响应内容修改再返回,这需要设置断点为After Responses。接下来还是以TestHome网站登录接口为例,修改它的响应内容。步骤如下:

  1. 先将断点规则设置为After Responses,如下:
    微信图片_20220425203054.png
  2. 正常登录后会跳转至TesterHome网站首页,但此时我们可以修改返回参数,让其登录后跳转至百度页面,设置如下:
    微信图片_20220425203057.png
    如上图所示,将图中返回参数改成百度地址 (TextView形式下可对返回参数进行修改),再点击Run to Completion,我们会看到登录成功后跳转到了百度页面,而不是TestHome首页。


注意事项

设置断点的功能应有如下注意:

  • Inspectors中,在请求参数显示窗口WebForms中可以修改请求参数,在响应参数显示窗口TextView中可以修改返回参数。
  • 通过菜单选项或快捷键F11进行断点设置,是全局有效的,即会对所有的HTTP请求都打上断点
  • 如果只需要对某个服务器发出的请求设置断点,可使用Fiddler的命令行工具输入命令,Before Requests命令为bpu 服务器地址After Response命令为bpafter 服务器地址,如下图所示:
    微信图片_20220425203101.png
  • 设置断点后,需要取消断点设置,需要将断点设置成Disabled,操作如下:
    微信图片_20220425203105.png
  • 也可使用快捷工具进行断点设置,如下图所示位置,点击切换即可:
    微信图片_20220425203108.png


六. 总结


Fiddler除了以上介绍的功能外,还有其他功能,如:

  • 限制网速,用于模拟弱网测试
  • 简单的接口测试
  • mock
  • 结合第三方插件实现更多功能
相关文章
|
5月前
|
存储 数据可视化 Android开发
RPA文件怎么安装?2025全场景安装指南(含主流工具教程+避坑技巧+实在Agent实操)
本文系统解析RPA文件安装全流程,涵盖基础概念、环境配置、主流工具实操(如实在Agent、UiPath、TagUI)、多场景部署及常见问题排查。结合行业趋势与实案,助力用户高效掌握RPA自动化技能,一键解决安装难题。(238字)
1293 14
|
JSON API 数据安全/隐私保护
python小知识-数据验证和解析神器pydantic
Pydantic是一个Python库,用于数据验证和设置管理,基于类型提示提供数据模型验证。它可以用于用户输入验证、JSON序列化和解析,以及API交互中的数据校验。安装Pydantic可使用`pip install -U pydantic`或`conda install pydantic -c conda-forge`。通过定义BaseModel子类并使用Field进行约束,可以创建数据模型并进行验证。例如,定义User模型验证用户名、邮箱和年龄。Pydantic还支持自定义验证器,允许在字段赋值时执行特定逻辑,如密码强度检查和哈希处理。5月更文挑战第19天
1711 1
|
测试技术 数据安全/隐私保护 Python
python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行。
python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
|
存储 应用服务中间件 测试技术
python+pytest接口自动化(10)-session会话保持
在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能请求,否则会提示请登录,那么怎样解决呢? 上一篇文章我们介绍了Cookie绕过登录,其实这就是保持登录状态的方法之一。 另外一种方式则是通过session进行会话保持。
python+pytest接口自动化(10)-session会话保持
|
Java 测试技术 Python
python+pytest接口自动化(3)-接口测试一般流程及方法
首先我们要明确,通常所接口测试其实就属于功能测试,主要校验接口是否实现预定的功能,虽然有些情况下可能还需要对接口进行性能测试、安全性测试。 在学习接口自动化测试之前,我们先来了解手工接口测试怎样进行。
python+pytest接口自动化(3)-接口测试一般流程及方法
|
XML JSON 编解码
python+pytest接口自动化(6)-请求参数格式的确定(一)
我们在做接口测试之前,先需要根据接口文档或抓包接口数据,搞清楚被测接口的详细内容,其中就包含请求参数的编码格式,从而使用对应的参数格式发送请求。例如某个接口规定的请求主体的编码方式为 application/json,那么在请求该接口时,请求参数格式必须是 json 格式,使用其他的编码方式请求不会成功。 那么,在http请求中,请求主体常用的编码方式有哪些?每种编码方式在python中需要对应使用什么样格式的请求参数?这便是咱们在本篇博客要弄明白的地方。
python+pytest接口自动化(6)-请求参数格式的确定(一)
|
测试技术
python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路。
python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
|
数据采集 存储 测试技术
python+pytest接口自动化(9)-cookie绕过登录(保持登录状态)
在编写接口自动化测试用例或其他脚本的过程中,经常会遇到需要绕过用户名/密码或验证码登录,去请求接口的情况,一是因为有时验证码会比较复杂,比如有些图形验证码,难以通过接口的方式去处理;再者,每次请求接口前如果都需要先去登录一次,这样不仅效率低,还耗费资源。 有些网站是使用cookie辨别用户身份的,此时我们便可以先登录一次,拿到登录成功后的cookie,后续请求时在请求头中加入该cookie,便可保持登录状态直接请求。
python+pytest接口自动化(9)-cookie绕过登录(保持登录状态)
|
数据采集 缓存 JSON
python+pytest接口自动化(2)-HTTP协议基础
HTTP 即 HyperText Transfer Protocol(超文本传输协议),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型中属于应用层协议,应用层协议除了 HTTP 还有 FTP、SMTP、DNS、RIP、Telnet 等。
python+pytest接口自动化(2)-HTTP协议基础
|
JSON 数据格式 Python
python+pytest接口自动化(5)-requests发送post请求
在HTTP协议中,与get请求把请求参数直接放在url中不同,post请求的请求数据需通过消息主体(request body)中传递。 且协议中并没有规定post请求的请求数据必须使用什么样的编码方式,所以其请求数据可以有不同的编码方式,服务端通过请求头中的 Content-Type 字段来获知请求中的消息主体是何种编码方式,再以对应方式对消息主体进行解析。
python+pytest接口自动化(5)-requests发送post请求