全网最牛最“刑”的Fiddler移动端抓包

本篇文章,博主想使用通俗易懂的话语,让大家明白以下内容:

  1. 什么是抓包
  2. 哪些场景需要用到抓包
  3. Fiddler抓包的原理
  4. 怎样使用Fiddler进行移动端抓包

抓包

包 (Packet) 是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。

我们平常测试过程中所说的数据包其实就是接口请求的数据,在HTTP请求中,包括请求头信息、请求内容、响应头信息、响应内容。

什么是抓包

用特定的工具获取客户端与服务端之间发送和返回的数据包。目的是分析数据包的协议、内容等,从而判断接口的设计是否符合要求,比如抓包某次请求的请求参数与响应参数,查看参数是否正确。

哪些场景下需要抓包

对于初学者或者没有接触过接口测试的同学而言,可能不太明白做接口测试或者接口自动化测试为什么一定要学会对接口数据进行抓包。

那么在哪些场景下需要抓包获取请求数据呢?

  1. 重现bug,需要截取数据定位问题时;

  2. 判断问题是前端bug还是后端bug时;

  3. 做接口测试,但开发没有提供接口文档时,需要抓包才能获取接口信息;

  4. 某个功能场景或者某些功能场景我们不知道调用了哪些接口,或者不知道接口调用的先后顺序时;

  5. 需要修改返回参数时(用于mock或者别的场景)

在实际测试过程中,用的最多的场景是1、2、3、4。

Fiddler

抓包工具有很多种,如Wireshark、Fiddler、Charlse、Tcpdump、浏览器工具(F12)等,但在软件测试工作中抓包对象一般是HTTP协议的接口,所以最多的是浏览器工具、Fiddler/Charlse。

Fiddler特点简单归纳如下:

  1. Fiddler能抓取客户端和服务器之间的HTTP/HTTPS请求,可以对接口请求设置断点,甚至修改输入输出数据

  2. Fiddler只能抓取HTTP/HTTPS协议

  3. Fiddler除能对PC端浏览器抓包外,还支持对移动端进行抓包

Fiddler抓包原理

通常,我们使用浏览器浏览网页,或者使用手机上的APP,交互可以使用以下简化的流程图表示:

客户端(PC端或移动端) 向服务端通过发送HTTP请求进行数据交互,而我们的需求是,抓取这个交互过程中的数据。

我们只需要在客户端与服务端之间加上一个中介,让它们之间交互的数据都通过这个中介,中介记录这些通过自身的数据,就能获取到客户端与服务端之间具体的交互数据了。

Fiddler便可以充当这个中介角色,交互流程如下:

启动Fiddler其实就是启动了一台代理web服务器(Proxy),代理地址为127.0.0.1,端口为8888。只要HTTP请求通过127.0.0.1:8888 (即Fiddler) 进行代理发送与接收,Fiddler就会记录经过自身的HTTP请求数据,便抓取到了HTTP请求的相关数据。

而怎样才能使得HTTP请求都通过127.0.0.1:8888进行代理?Fiddler启动时IE浏览器的代理会自动设置127.0.0.1:8888为代理地址,Chrome、Firefox需要在浏览器中手动修改,移动端则需要在手机里设置。

安装

进入官网下载,地址为:Download Fiddler Web Debugging Tool for Free by Telerik

需填写内容可填写如下,Windows系统点击【Download for Windows】,点击后会跳转页面并开始下载 (没有的话可以多尝试两次) ,如果没有下载可根据跳转页面提示进行点击。

下载后得到安装文件FiddlerSetup.exe,一路傻瓜式安装即可。目前下载的版本为Progress Telerik Fiddler Classic

安装完成后,打开Fiddler,主界面如下:

  • 如图所示,切换至Inspectors可查看对应请求的请求参数和返回参数

  • 请求参数、返回参数不同内容及格式的展示,可以切换图中对应展示窗口顶部的Tab按钮,如Headers、WebForms、Raw、Json等。

  • 会话窗口图标说明见文章末说明。

接下来介绍怎样使用Fiddler进行手机移动端抓包。

Fiddler移动端抓包

我们先来屡一下移动端抓包的大概思路:

  1. Fiddler需要设置允许远程计算机连接,即允许手机移动端抓包;

  2. 设置手机代理网络代理,使手机通过Fiddler代理发送HTTP请求 (即Fiddler充当数据发送接收的中介);

  3. https请求抓包设置(如果只抓取http请求,以上两步设置就可以了,但实际工作中经常需要抓取https请求数据)。

按照如上思路我们开始进行具体设置。

第一步:允许远程计算机连接

设置步骤:Tools-->Options-->Connections-->勾选Allow remote computers to connect-->再点击OK,其他默认即可,如下图所示:

勾选后如果有弹窗确认页面,点击【确定】即可。顺便说一下,上图勾选页面中的8888为默认的端口号,在第二步设置时需要使用。

第二步,设置手机网络代理

首先,需要先获取到安装Fiddler的电脑的IPv4地址,在cmd中输入ipconfig,如下图所示:

然后,在手机上找到对应的WLAN网络,进行该网络代理的设置,以荣耀V20手机为例,操作步骤如下图所示:

手机系统设置-->WLAN-->修改网络-->高级选项-->代理-->选择手动-->主机名填入上一步IPv4-->端口填入默认的8888-->保存

注意:

  • 手机必须与电脑连接的是同一个网络,即连同一个WIFI或手机直接连电脑的热点,再对这个网络进行代理设置,否则无法抓取数据。

  • 第2步选择修改网络时,手机型号不同可能需要不一样的操作才能进入到修改网络页面。

到这一步,重启Fiddler后,便可以对手机上的http请求进行抓包了。如果不能抓取的话,可以在手机里重新保存上图中的代理设置,再进行请求。到这一步后,手机上打开APP操作,抓包的http请求,如下图所示:

可以看到,这里面只抓取了http请求,如果要对https请求进行抓包,则还需要进行下面的操作

第三步,允许捕获HTTPS连接

设置步骤:Tools-->Options-->HTTPS-->勾选Decrypt HTTPS traffic-->再勾选Ignore server certificate errors-->点击OK

注意,保存设置后需要重启Fiddler才会生效

第四步,手机安装证书

步骤如下:

  1. 在手机上选择任意浏览器,输入第二步中的设置的代理地址,host为即Fiddler安装电脑的IPv4地址,端口号即为默认的8888
  2. 1打开的网页中点击FiddlerRoot certificate下载证书

Android手机到这一步就可以了,苹果手机还需要在手机设置里去信任下载的证书,信任证书的操作步骤这里不做过多说明。

完成这两步后,我们即可以抓取手机发出的http请求,又可以抓取手机发出的https请求。在手机上打开今日头条APP,验证如下:

至此,Fiddler移动端抓包设置便完成。

附上会话窗口图标说明,如下:

 

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/216651.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创建Vue项目

安装node 官网: https://nodejs.org/en/download/ 安装的过程没有什么需要注意的,可以把安装路径调整一下。 使用以下命令查看 node 的版本 v20.10.0 ,验证是否安装成功。 node -v 创建Vue项目 在存放项目的目录下打开cmd,输入以…

Linux exit命令教程:如何优雅地退出你的Shell(附案例详解和注意事项)

Linux exit命令介绍 Linux的exit命令用于退出当前运行的shell。它可以接受一个参数[N],并以状态N退出shell。如果没有提供n,则它只返回最后执行的命令的状态。 Linux exit命令适用的Linux版本 exit命令是内置在所有Linux发行版中的,包括但…

【STM32】STM32学习笔记-GPIO输出(05)

00. 目录 文章目录 00. 目录01. GPIO简介02. GPIO基本结构03. GPIO位结构04. GPIO模式4.1 输入浮空4.2 输入上拉4.3 输入下拉4.4 模拟输入4.5 开漏输出4.6 开漏复用功能4.7 推挽式输出4.8 推挽式复用功能 05. LED和蜂鸣器简介06. 面包板07. 附录 01. GPIO简介 GPIO&#xff08…

大家口口声声谈私域,到底是什么?

大家口口声声说的私域到底是什么? 私域不是流量,是留量。 那首先得知道私域和私域留量的概念。 私域是指企业或个人在自有平台上建立的用户群体和资源,如自己的网站、APP、微信公众号、微博账号等。这些用户群体和资源不受外部平台的控制和限…

表达式二叉树的中序遍历:2017年408算法题

算法思想 表达式二叉树的中序遍历即中缀表达式除了根节点和叶结点,遍历到其他结点时在遍历其左子树前加上左括号,在遍历完右子树后加上右括号 算法实现 //中序遍历,deep从1开始,即根节点的深度为1 void midOrder(BTree T,int …

GO基础之运算符

运算符 Go 语言内置的运算符有: 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值运算符 算术运算符 注意: (自增)和–(自减)在Go语言中是单独的语句,并不是运算符。 关系运算符 …

分布式追踪

目录 文章目录 目录自定义指标1.删除标签2.添加指标3.禁用指标 分布式追踪上下文传递Jaeger 关于我最后最后 自定义指标 除了 Istio 自带的指标外,我们还可以自定义指标,要自定指标需要用到 Istio 提供的 Telemetry API,该 API 能够灵活地配…

【小程序】02-项目的基本组成

pages:用来存放所有小程序的页面utils:用来存放工具性质的模块(例如:格式化时间的自定义模块)app.js:小程序项目的入口文件app.json:小程序项目的全局配置文件app.wxss:小程序项目的…

selenium中元素定位正确但是操作失败,6种解决办法全搞定

selenium中元素定位正确但是操作失败的原因无外乎以下4种: 01 页面没加载好 解决方法:添加等待方法,如:time.sleep() 02 页面提交需要等待给数据后台 解决方法:添加等待方法,如:time.sleep(…

DSShop移动商城网店系统 反序列化RCE漏洞复现

0x01 产品简介 DSShop是长沙德尚网络科技有限公司推出的一款单店铺移动商城网店系统,能够帮助企业和个人快速构建手机移动商城,并减少二次开发带来的成本。 以其丰富的营销功能,精细化的用户运营,解决电商引流、推广难题,帮助企业打造生态级B2C盈利模式商业平台。完备的电商…

线程变量引发的session混乱问题

最近不是在救火,就是在救火的路上。 也没什么特别可写的,今天记录下最近遇到的一个问题,个人觉得挺有意思, 待有缘人阅读 言归正传,售后反馈: 营业查询中付款方式为第三方支付的几条银行缴费,创…

信息化系列——企业信息化建设(2)

企业信息化建设常见问题 1、信息化意识薄弱 目前,仍有许多企业的管理者在信息化方面表现出薄弱的认识,他们对信息化建设的重视程度显得捉襟见肘。结果,企业在信息化建设的人力、物力支持方面投入甚微,导致信息化建设难以完成顶层…

HDFS客户端及API操作实验

实验二 HDFS客户端及API操作 实验目的: 1.掌握HDFS的客户端操作,包括上传文件、下载文件、重命名、查看目录等; 2.掌握HDFS的Java API使用,能够利用Java API实现上传、下载等常用操作; 实验内容: HDF…

go写文件后出现大量NUL字符问题记录

目录 背景 看看修改前 修改后 原因 背景 写文件完成后发现: size明显也和正常的不相等。 看看修改前 buf : make([]byte, 64) buffer : bytes.NewBuffer(buf)// ...其它逻辑使得buffer有值// 打开即将要写入的文件,不存在则创建 f, err : os.Open…

Java中线程池相关的七个参数

在Java中,线程池的七个参数是指线程池的相关配置参数,用来控制线程池的行为和性能。这些参数包括: 1. 核心线程数(corePoolSize):线程池中保持的最小线程数,即使线程处于空闲状态,也…

C++进阶篇6---lambda表达式

目录 一、lambda表达式 1.引入 2、lambda表达式语法 二、包装器---function 1.引入 2.包装器介绍 三、bind 一、lambda表达式 1.引入 class Person { public:Person(int age,string name):_age(age),_name(name){} //private://方便后面的举例int _age;string _name…

ROS话题通信基本操作(python)

目录 一、发布 1、实现步骤 2、代码实例 二、接收 1、实现步骤 2、代码实例 三、配置运行 1、修改CMakeLists.txt 2、修改可执行权限 3、运行结果 一、发布 1、实现步骤 1.导包 2.初始化 ROS 节点:命名(唯一) 3.实例化 发布者 对象 4.组织被发布的数据,…

浅谈Django之单元测试

一、什么是单元测试 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。如果测试通过则说明我们这个函数或功能能够正常工作,如果失败要么测试用例不正确,要么函数有bug需要修复。 二、如何使用单元测试 from django.test imp…

Spring Cloud + Vue前后端分离-第2章 使用Maven搭建SpringCloud项目

第2章 使用Maven搭建SpringCloud项目 Maven两大核心功能: 依赖管理(Jar包管理) 构建项目(项目打包) 使用Eureka搭建注册中心 使用spring initializr创建spring cloud项目 SpringCloud和Maven简介 SpringBoot和Spr…

[ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup

前言 由于懒我直接把上交的wp稍加修改拉上来了,凑活看 文章目录 前言Pwntest_ncnc_shell ReverseCreakmeEasyRebabyReeasy_z3mix_reeasy_flower_tea Webwhere_is_the_flag圣杯战争!!!绕进你的心里easy_websitewafrez_ini1z_Ssqldouble_picklewebincludefuzz!恐怖G…