接口自动化测试之Fiddler使用教程

news2024/11/23 22:34:14

一、Fiddler 简介

Fiddler工具介绍

Fiddler是一个通过代理的方式来进行抓包工具,运行时会在本地建立一个代理服务,默认地址:127.0.0.1:8888。Fiddler开启之后,配置本机代理,再打开IE浏览器,IE的PROXY会自动变成127.0.0.1:8888,通过其来抓取IE浏览器与服务器之间的所有HTTP(s)请求,但是火狐、chrome需要手动设置代理。

配置本机代理,IE 的 代理 自动变成 刚刚配置的, 谷歌和火狐则需要 手动 设置 代理。 具体原因:浏览器人家厂商自己设置的。

二、fiddler 抓包原理

客户端(浏览器)与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器。而Fiddler是c#开发的http代理服务器,fiddler工作于七层·中的应用层,能够捕获到通过的http(s)请求。fiddler启动后会自动将代理服务器设置为本机,端口8888。 启动之后,会看到:

抓包其中涉及三个角色: 客户端 、 代理、 目标服务器

原本正常访问网页或App路径是:

         客户端 ---> 目标服务器

         抓包,其实就加入了一个代理,即:客户端 ---> 媒人(代理)-->目标服务器

 只有这三者产生一定的联系,才能进行拦截/抓取一些东西,客户端先访问媒人,媒人把客户端的信息记录下来,媒人再去联系目标服务器,进而返回给客户端。

Fiddler 抓取https 报文过程:

详细过程解析:

+ 客户端请求建立HTTPS连接,发送客户端支持的加密协议和版本列表等信息给服务器;
+ Fiddler接受客户端的请求并伪装成客户端发送相同的请求给Web服务器;
+ Web服务器收到Fiddler的请求后,从请求中筛选出合适的加密协议并返回服务器CA证书,证书中包含公钥信息;
+ Fiddler收到服务器响应之后,保存服务器证书并自签名一个证书,伪装成服务器将该证书下发给客户端;
+ 客户端验证证书的合法性(Fiddler能否抓取到HTTPS报文关键就看这一步了)(证书都是由CA组织下认可的根证书Root签发的);
+ 客户端生产对称密钥并使用自签名证书的公钥进行加密,发送给服务器;
+ Fiddler拦截客户端的请求之后,使用私钥解密该报文,获取对称密钥并使用CA证书的公钥加密,再发送给Web服务器;
+ Web服务器接收到客户端加密后的对称密钥,采用私钥解密,并使用对称密钥解密测试数据传给客户端;
+ Fiddler使用前面获取的对称密钥解密报文;
+ 客户端验证数据无误后,HTTPS连接建立完成,此时客户端开始向服务器发送使用对称密钥加密的业务数据;
+ Fiddler使用前面获取的对称密钥解密客户端发送的数据并重新加密转发给客户端。

 

https基本原理,是用非对称密钥协商出对称密钥,再用对称密钥来加密业务数据。

简述密钥协商、握手步骤。

客户端请求连接服务器,发送客户端支持的加密协议和版本列表等信息给服务器

服务端确认加密方法,并发送CA证书(证书中包含公钥)给客户端

客户端验证证书的可靠性(是否有效?是否合法?),并从CA证书中取出公钥,然后生成一个随机密钥K, 并用公钥加密得到K'发送给服务端。

服务端收到 k' 后用自己的私钥解密得到 k。

此时双方都得到了密钥 k,接下来就用密钥k数据传输,协商完成。

软件下载:

Fiddler官方下载地址:(Fiddler安装包 → FiddlerSetup.exe)

Willow插件官方下载地址:(Willow插件安装包 → WillowSetup-1.5.2.zip)

nginx 正向代理、反向代理解释

正向代理最大的特点:

客户端非常清楚明确要访问的服务器地址

服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端

正向代理模式屏蔽或者隐藏了真实客户端信息

 

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

明白了fiddler 的原理,其实就清楚了。

tips: node 做中间代理服务器的时候,会遇到 fiddler,whistle,charles 之类的软件抓不到(fiddler的原理就是一个代理服务器,说明node的请求没有经过Fiddler代理服务器)

 

三、pc端浏览器、window软件 进行抓包

打开Fiddler(媒人/代理),Fiddler其实就是 古代的 “媒人” ,即 代理

寻到 Fiddler options 路径, Tools---> Options, 配置 Options,主要配置 HTTPSConnections 信息. 第一次配置会出现安装证书的请求,一路点击 就对了, 配置完毕一定要记得重启Fiddler,否则失效 

 Connections 配置,主要是 让手机 或电脑 链接 Fiddler(媒人),默认端口号为:8888

Fiddler(媒人)配置完毕,接着配置 客户端, 不择手段让 客户端 链接媒人,和媒人产生联系。

        打开windows 代理设置,代理配置路径,亲们自个百度

 

客户端已经和 Fiddler(媒人)产生一定联系了,已经可以抓取 windows软件 和 IE 了, 不信 上图给您看。

IE 抓包。 直接访问IE,Fiddler自动运行且拦截数据

 在这解释 下 IE 代理 自动变成 配置完的代理 ,打开IE 代理看看 

  windows 软件抓包,即 windows微信中 的小程序当然也可以抓取!如果是抓取小程序包的,就不用配置app的了,直接在电脑抓取即可,省事

接着说 谷歌 和 火狐浏览器的,他们的代理不像IE自动,需要手动配置他们的代理,这里 我以 谷歌为例。

第一种方式:寻到谷歌 代理配置路径(路径自己百度),配置:127.0.0.1:8888

 第二种方式:以上是简单做法,这种需要 翻墙 下载扩展程序(Proxy SwitchyOmega) ,进行配置

 

 

 可以进行愉快的抓包了

四、手机抓包

下面是如何使用fiddler对手机APP进行抓包:

安装后打开界面效果图如下:

 

每一个标签的说明这里不细说了,只说下需要抓包进行的操作:

1、因为fiddler抓包的原理就是通过代理,所以被测终端需要和安装fiddler的电脑在同一个局域网中。

2、开启Fiddler的远程连接,Fiddler 主菜单 Tools -> Fiddler Options…-> Connections页签,选中Allowremote computers to connect,并记住端口号为8888,等会设置手机代理时需要。设置好后重启fiddler保证设置生效。设置如下:

3、  查看电脑IP,在CMD中输入ipconfig:

4、在手机侧设置代理

设置-WLAN,找到连接的wifi长按,选择修改网络:

 

然后勾选高级选项,选择代理为手动,填入代理服务器为自己电脑IP,端口填入刚刚记住的8888:

这里是以Android手机举例的,如果是iPhone则可以在对应wifi的设置中直接配置HTTP代理。

5、现在就可以开始抓包了:

在手机上对APP进行操作,从fiddler上即可看到对应的网络请求信息:

 6.在右边的Composer标签页中可以定义并发送网络请求:

 

我们也可以直接将左侧抓到的网络请求直接拖到composer中然后进行相应修改即可测试不同参数下该接口的功能是否正常。

7、在filter标签中我们可以设置不同的过滤规则对抓取的包进行过滤:

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言与C++的区别和联系

C语言和C到底是什么关系? 首先C和C语言本来就是两种不同的编程语言,但C确实是对C语言的扩充和延伸,并且对C语言提供后向兼容的能力。对于有些人说的“C完全就包含了C语言”的说法也并没有错。 C一开始被本贾尼斯特劳斯特卢普(Bja…

身份证读取器手持机 二代证核验手持终端 身份证核查手持机

身份证手持机外观比较小巧,方便携带,支持条码识别、人脸识别、NFC卡刷卡、内置二代证加密模块,可离线采集和识别二代身份证,进行身份识别。信息读取更便捷、安全高效。采用IP65高防护等级,1.5M防摔,可以适应…

SmartBear正式收购Stoplight,并计划在核心API设计、文档和门户产品中集成其功能

不久前,软件开发和可视化工具提供商SmartBear正式宣布收购全球领先的API设计公司Stoplight。这一收购是为了打造业内最全面的API开发平台,为寻求现代化API实践的开发团队提供更好的透明度、自动化与生产力。将Stoplight在API方面的优势(包括治…

Linux驱动应用层与内核层之间的数据传递

摘要 本文将深入探讨在Linux驱动中,应用层与内核层之间数据传递的机制和优化策略。我们将详细解析这一过程中的各个步骤,包括数据从应用层到内核层的传输,以及从内核层返回应用层的过程。此外,我们将提出并评估一系列可能的优化策…

Docker+K8s基础(重要知识点总结)

目录 一、Docker的核心1,Docker引擎2,Docker基础命令3,单个容器运行多个服务进程4,多个容器运行多个服务进程5,备份在容器中运行的数据库6,在宿主机和容器之间共享数据7,在容器之间共享数据8&am…

已解决:TypeError: ‘NoneType‘ object is not callable 问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

GC5958低压三相无刷直流驱动芯片,无感,正弦,低压,PWM调速可替代APX9358/茂达

GC5958提供了无传感器的三相无刷直流电机的速度控制的所有电路。正弦波驱动器的方法将是更好的低噪声。控制器功能包括启动电路、反电动势换向控制。脉宽调制) 速度控制。锁定保护和热关断电路GC5958既适合游戏机器,也适用于需要无声驱动的CPU冷却器。它以DFN3x3-10…

一篇文章教会你写一个贪吃蛇小游戏(纯C语言)

一篇文章教会你写一个贪吃蛇小游戏 1、游戏展示2、游戏功能3、Win32 API3.1 控制台程序3.2 控制台屏幕上的坐标COORD3.3 GetStdHandle函数3.4 GetConsoleCursorInfo函数3.4.1 CONSOLE_CURSOR_INFO结构体 3.5 SetConsoleCursorInfo函数3.6 SetConsoleCursorPosition函数3.7 GetA…

自动私信引流软件的运行分享,与开发需要到的技术分析

先来看实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着移动互联网的普及和人们对便捷生活的追求,引流APP已成为越来越多企业的必备工具。本文将为大家详细介绍开发引流APP需要用到的技术和流程,帮…

CSS3渐变颜色

CSS3 渐变可以让你在两个或多个指定的颜色之间显示平稳的过渡。 CSS3渐变有两种类型:线性渐变(Linear Gradients)和径向渐变(Radial Gradients)。 线性渐变(Linear Gradients): 线性…

阻塞队列+定时器+常见的锁策略

1)阻塞队列:是一个线程安全的队列,是可以保证线程安全的 1.1)如果当前队列为空,尝试出队列,进入阻塞状态,一直阻塞到队列里面的元素不为空 1.2)如果当前队列满了,尝试入队列,也会产生阻塞,一直阻…

Ionic 组件 ion-item-divider ion-item-group ion-item-sliding ion-label ion-note

1 ion-item-divider Item dividers是块元素&#xff0c;可用于分隔列表中的items 。它们类似于列表标题&#xff0c;但它们不应该只放在列表的顶部&#xff0c;而应该放在items之间。 <ion-list><ion-item-group><ion-item-divider><ion-label> Secti…

javascript 操作mysql数据库

目录 一&#xff1a;Javascript访问MYSQL 二&#xff1a;JavaScript中操作Mysql数据库实例 一&#xff1a;Javascript访问MYSQL 1、下载MYSQL的ODBC连接 2、在JS中建立ODBC连接如下&#xff1a; var con new ActiveXObject("ADODB.Connection"); con.Connection…

Linux软件包(源码包和二进制包)

Linux下的软件包众多&#xff0c;且几乎都是经 GPL 授权、免费开源&#xff08;无偿公开源代码&#xff09;的。这意味着如果你具备修改软件源代码的能力&#xff0c;只要你愿意&#xff0c;可以随意修改。 GPL&#xff0c;全称 General Public License&#xff0c;中文名称“通…

jbase代码生成器(成型篇)

上一篇说到通用码表可以解决百分之八十的基础维护功能&#xff0c;剩下的百分二十的需要级联维护的界面可以用代码生成器生成代码&#xff0c;基于生成的代码拷贝再组装界面&#xff0c;来解决这百分之二十的工作量里的百分之八十工作量。 首先实现代码生成器 Class Jbase.Ma…

C语言实现给出一位数不大于7位的整型数字,取整数从右端开始的4~7位数字

完整代码&#xff1a; // 给出一位数不大于7位的整型数字&#xff0c;取整数从右端开始的4&#xff5e;7位数字 //就是一个数为abcdefg&#xff0c;取它从右端开始的4&#xff5e;7位数字&#xff0c;就为dcba //如果位数不足7位时&#xff0c;会在数字高位补0 //例如一个数为…

leetcode 62

leetcode 62 题目 解题思路 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> f(m, vector<int>(n));for(int i0; i<m; i){f[i][0] 1;}for(int j0; j<n; j){f[0][j] 1;}for(int i1; i<m; i){for(int j1; j<n; j){…

如何记录血压的波动情况

import pandas as pd from plotnine import * import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [Microsoft YaHei] 记录时间(time)、收缩压(SBP)、舒张压(DBP)&#xff1a; df pd.DataFrame({ time: [2023-11-01 08:30, 2023-11-02 21:00, 2023-11-0…

【星海随笔】SDN neutron (一)

一、SDN的原理&#xff1a; 控制平面与数据平面分离&#xff1a;传统网络中&#xff0c;网络设备同时承担控制和数据转发功能&#xff0c;而SDN将这两个功能分离&#xff0c;使得网络控制集中在一个中心控制器上。 中心控制器&#xff1a;SDN架构中的中心控制器负责网络的全局…

【小黑送书—第五期】>>《MATLAB科学计算从入门到精通》

从代码到函数&#xff0c;从算法到实战&#xff0c;从问题到应用&#xff0c;由浅入深掌握科学计算方法&#xff0c;高效解决实际问题。 从代码到函数&#xff0c;掌握多种经典算法 跨越多个领域&#xff0c;精通各类科学计算 多种应用实例&#xff0c;高效解决实际问题 今天给…