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

接口测试——接口协议抓包分析与mock_L2

目录:

  1. 抓包工具charles
  2. 抓包工具fiddler
  3. 抓包工具证书配置
  4. app抓包实战练习
  5. 接口测试实战练习

1.抓包工具charles

工具介绍

  • 支持 SSL 代理
  • 支持流量控制
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获并动态修改
  • 可以自动将 json 或 xml 数据格式化,方便查看

安装

  • Charles 官网:
    • https://www.charlesproxy.com/

 

Charles配置:Charles下载与安装教程(超详细)_不要问我y的博客-CSDN博客

Charles下载安装_choo choo charles下载教程_会飞的咕咕鱼的博客-CSDN博客

2.抓包工具fiddler

 工具介绍

  • 官网:https://www.telerik.com/fiddler/fiddler-classic
  • Fiddler 是位于客户端和服务器端的 HTTP 代理
  • 也是目前最常用的 HTTP 抓包工具之一
  • 功能
    • 监控流量
    • 支持解密 HTTPS
    • 查看分析接口数据
    • 修改请求的数据
    • 修改服务器返回的数据
    • 设置断点

界面简介

  • 菜单栏
  • 工具栏
  • Session 面板
  • 详情和数据统计面板
  • 状态栏

抓取 HTTP 请求

  • 设置:Tools -> Options -> Connections
  • 确认抓包端口:默认为 8888
  • 默认勾选 Act as system proxy on startup

 

抓取 HTTPS 请求

  • Tools -> Fiddler Options -> HTTPS
  • 勾选 Decrypt HTTPS Traffic
  • 弹出安装证书弹窗 -> 选择【Yes】-> 点击 【Yes】安装证书
  • 点击 Actions -> Open Windows Certificate Manager 查看证书

 

抓取移动端请求

  • Tools -> Fiddler Options -> Connections
  • 勾选 Allow remote computers to connect
  • 移动端与电脑处于同一网络下
  • 移动端配置网络代理
    • 代理服务器主机:电脑IP
    • 代理服务器端口:8888
  • 浏览器输入 http://电脑ip:8888 下载 Fiddler 证书进行安装

注意:fiddler,模拟器的端口要一致: 

 

查看接口信息

  • Statistic:性能与统计数据
  • Inspectors:请求和响应数据
  • Filter:制定过滤规则
  • Composer:编辑发出请求

 

AutoResponder

  • 拦截某一请求,并重定向到本地的资源,或者使用 Fiddler 的内置响应
  • 用于调试服务器端代码而无需修改服务器端的代码和配置

 

断点

  • 菜单栏 -> Rules -> Automatic Breakpoints ->选择断点方式
  • 状态栏点击
    • 请求前断点:向上箭头
    • 响应后断点:向下箭头
  • 命令行下输入
    • 请求前断点:bpu xxx
    • 响应后断点:bpafter xxx

 

弱网

  • 菜单栏 -> Rules -> Performance -> Simulate Modem Speeds
  • 修改网络配置参数
    • 菜单栏 -> Rules -> Customize Rules…
    • 搜索关键词 simulate
    • 修改延迟时间

 

3.抓包工具证书配置

Charles 基础设置

电脑证书配置

 Windows 系统安装证书

Charles 端设置 ssl

移动端代理配置

  1. 设备和电脑处于同一 WIFI(模拟器不需要配置)
  2. 移动端网络设置
    • 服务器 ip 地址
    • 设置端口
  3. 安装证书
    • 系统浏览器访问 chls.pro/ssl
    • iOS:描述文件中安装证书
    • iOS:信任证书
  4. 演示使用 mumu 模拟器(Android 6)

注意事项

  • Android 6 以上的系统 app 默认不信任抓包证书
    • 需要开发修改代码
    • 大部分测试 app 安装包默认打开状态
  • iPhone 10 系统以上需要在 设置->通用->关于本机->证书信任设置 中打开信任开关

4.app抓包实战练习

抓包原理

接口抓包分析实战

  • 抓取接口数据
    • Overview:接口的大体情况
    • Content:请求信息和响应信息
      • 上半部分:请求,请求头信息,请求参数,cookie
      • 下半部分:响应,响应头信息,响应体(不同格式)
    • Summary:响应时间
    • Chart:图标形式的资源情况展示
    • Notes:写一些记录

 

过滤

  • Filter
  • Focus
  • Recording Settings – Include

 

重发

  • 简单重发:鼠标右键 – Repeat
  • 简单压力:鼠标右键 – Repeat Advanced

 

修改请求

  • 鼠标右键 – Compose
  • 选择接口 – 点击小钢笔图标

 

断点(BreakPoint)

  • 调整接口的参数信息
  • 鼠标右键 — Breakpoint
    • Proxy – Breakpoint settings 设置断点
    • 确定接口信息,确定是请求断点还是响应断点
    • 重新发送请求 – 进入断点修改状态 – 修改内容 – 点击 Excute

 

5.接口测试实战练习

  1. LiteMall 搜索接口抓包分析
  2. LiteMall 搜索接口测试用例设计
  3. Postman 完成接口测试
  4. 数据驱动
  5. 测试集的导入和导出
  6. 使用 Cookies
  7. 鉴权方式
  8. 参数传递
  9. 设置鉴权
  10. 请求前脚本中获取参数
  11. 导出代码

LiteMall 搜索接口抓包分析

  • LiteMall 商城:https://litemall.hogwarts.ceshiren.com/vue/index.html#/
  • 浏览器开发者工具抓包:Network

 抓包分析:

得出请求地址:https://litemall.hogwarts.ceshiren.com/wx/goods/list 

查看响应:

分析响应内容:并且生成接口文档:Python: 66666666666666

LiteMall 搜索接口测试用例设计 (根据上边的接口文档进行测试用例设计)

编写测试用例:SoftwareTest: 用来存放软件测试的代码或者文档

使用Postman 完成接口测试

  • 保存 har 导入 postman
  • 创建测试集
  • 创建接口测试用例

保存 har 导入 postman 

 

 

根据测试用例,使用postman编写脚本 

导出测试集为json格式:SoftwareTest: 用来存放软件测试的代码或者文档

数据驱动

  • 准备数据:JSON 或者 CSV 格式
  • 修改参数设置
  • 修改断言
  • 在测试集中定义数据变量
  • 运行测试集,选择准备好的数据

准备数据:CSV 格式数据

配置参数 :

使用csv格式的数据: 

配置测试集变量:

运行:

 

运行结果:

准备数据:JSON 格式数据 SoftwareTest: 用来存放软件测试的代码或者文档

直接使用上边csv格式,配置的一些参数,我们只换了个数据格式,直接复用上边csv配置的参数,运行:

运行结果:

测试集的导入和导出

  • 测试集导入
  • 测试集导出

 使用 Cookies

如果登录使用的是cookie这种方式,在postman中只要成功登录一次,登录成功之后的cookie信息就会保存在postman中,之后请求该网站其他接口时候,会自动在header中带上cookie,下面以百度为例:

1.填入url,点击headers查看,没有cookie信息

2.点击send下边的那个cookie,查看现在的cookie信息(什么都没有)

3.发送请求(这个时候cookie信息已经保存在postman中的headers上了)


4. 再次点击send下边的那个cookie,查看现在的cookie信息

5.我们现在访问百度页面的其他接口(这时候headers里边已经有刚才的登录的cookie信息了)

鉴权方式

参数传递

  • 创建登录接口
  • 成功后在 Test 中提取 token
  • 保存 token 到测试集变量
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.data.token;
//把token值设置为测试集变量
pm.collectionVariables.set("token", token);

1.创建登录接口,发起登录请求

2.编写Tests,在Tests中把tocken值设置为测试集变量:再次发起请求:

3.运行结果:(查看测试集中的tocken)

4.在其他接口中使用tocken

设置鉴权

请求前脚本中获取参数(这个用来配置测试集的变量,不在像上边一样,一个请求得添加一回鉴权)

// 构造登录请求
const loginRequest = { url: 'http://litemall.hogwarts.ceshiren.com/wx/auth/login', method: "POST", header: 'Content-Type: application/json',body: { mode: 'raw',raw: JSON.stringify({'username': 'user123', "password": "user123"})} 
}; // 发送请求 
pm.sendRequest(loginRequest, function (err, response) {if (err) {console.log(err);} else {console.log(response.json());pm.collectionVariables.set("token", response.json().data.token);}
});

导出代码

  • 点击右侧边栏的 </>

相关文章:

接口测试——接口协议抓包分析与mock_L2

目录&#xff1a; 抓包工具charles抓包工具fiddler抓包工具证书配置app抓包实战练习接口测试实战练习 1.抓包工具charles 工具介绍 支持 SSL 代理支持流量控制支持重发网络请求&#xff0c;方便后端调试支持修改网络请求参数支持网络请求的截获并动态修改可以自动将 json 或…...

Seata入门系列【1】安装seata 1.7.1+nacos 2.1.1

1 介绍 Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案。 Github: https://github.com/seata/seata 官方文档&#xff1a;h…...

2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题

2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题 模块一&#xff1a;数据库系统运维&#xff08;25分&#xff09;任务一&#xff1a;数据库系统搭建&#xff08;10分&#xff09;任务二&#xff1a;房源数据库系统运维&#xff08;15分&#xff09; 模块二&a…...

产品经理的职业前景怎么样?一文为你全面解答!

随着科技的迅速发展和市场竞争的日益激烈&#xff0c;产品经理这个职业变得越来越炙手可热。产品经理负责一款产品的全生命周期管理&#xff0c;从需求收集到设计、开发、测试、发布&#xff0c;再到市场推广和用户反馈&#xff0c;都需要产品经理参与决策。因此&#xff0c;这…...

【深度学习】图像去噪(2)——常见网络学习

【深度学习】图像去噪 是在 【深度学习】计算机视觉 系列文章的基础上&#xff0c;再次针对深度学习&#xff08;尤其是图像去噪方面&#xff09;的基础知识有更深入学习和巩固。 1 DnCNN 1.1 网络结构 1.1.1 残差学习 1.1.2 Batch Normalization (BN) 1.1.2.1 背景和目标…...

八大排序详解

目录 1.排序的概念及应用 1.1 排序的概念 1.2 排序的应用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 直接插入排序 2.1.1 基本思想 2.1.2 动图解析 2.1.3 排序步骤&#xff08;默认升序&#xff09; 2.1.4 代码实现 2.1.5 特性总结 2.2 希尔排序 2.2.1 基本思…...

自定义热加载:如何不停机实现核心代码更新

文章目录 1. 常见的几种实现代码热更新的几种方式对于开发环境我们可以使用部署环境1. 使用 Arthas 的 redefine 命令来加载新的 class 文件2. 利用 URLClassLoader 动态加载3. 通过Java的Instrumentation API 也是可以实现的 2. 实现1. ClassScanner扫描目录和加载类2. 定时任…...

Spring Cloud Alibaba Nacos 2.2.3 (2) - 单机版启动 (winodows 和 linux )

Nacos 2.2.3 (1) - 下载与数据库配置 参考下载与数据库配置 启动服务器 执行 nacos-server-2.2.3\bin 下的startup.sh或者startup.cmd &#xff08;根据不同系统&#xff09; windows 下nacos 单机启动 方式一&#xff1a; 1&#xff0c;打开cmd 2&#xff0c;cd 到nacos-s…...

VB从资源文件中播放wav音乐文件

Private Const SND_SYNC &H0 Private Const SND_MEMORY &H4 API函数 Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long 音乐效果请“单击” Pr…...

web:[HCTF 2018]WarmUp

题目 点进页面&#xff0c;页面只有一张滑稽脸&#xff0c;没有其他的提示信息 查看网页源代码&#xff0c;发现source.php&#xff0c;尝试访问一下 跳转至该页面&#xff0c;页面显示为一段php代码&#xff0c;需要进行代码审计 <?phphighlight_file(__FILE__);class emm…...

程序开发常用在线工具汇总

菜鸟工具# https://c.runoob.com/ 编码# ASCII码# https://www.habaijian.com/ 在线转换# https://www.107000.com/T-Ascii/http://www.ab126.com/goju/1711.html Base64# 在线转换# https://www.qqxiuzi.cn/bianma/base64.htmhttp://www.mxcz.net/tools/Unicode.aspx …...

crypto:丢失的MD5

题目 得到一个md5.py 运行一下&#xff0c;发现报错&#xff0c;修改一下 运行之后又报错 报错原因是算法之前编码 正确的代码为 import hashlib for i in range(32,127):for j in range(32,127):for k in range(32,127):mhashlib.md5()m.update((TASC chr(i) O3RJMV c…...

气传导和骨传导耳机哪个好?气传导耳机好用吗?气传导耳机推荐

​气传导和骨传导耳机都是不入耳设计&#xff0c;骨传导是通过振动颅骨传达声音信号 骨传导耳机是一种能够通过振动颅骨来传达声音信号的耳机&#xff0c;其原理是利用骨传导技术&#xff0c;将声音信号通过颅骨传达到内耳&#xff0c;从而实现听觉效果&#xff0c;不过长时间佩…...

Spring 的代理开发设计

目录 ​编辑一、静态代理设计模式 1、为什么需要代理设计模式 2、代理设计模式 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;名词解释 &#xff08;3&#xff09;代理开发的核心要素 &#xff08;4&#xff09;编码 &#xff08;5&#xff09;静态代理存在…...

实现注册手机号用户

1、使用Post异步发送请求&#xff08;发送短信&#xff09;&#xff0c;离焦事件触发时判断 <script src"layer/layer.js"></script><!--离焦事件--><script type"text/javascript" th:inline"javascript">$("#use…...

【2023年11月第四版教材】第15章《风险管理》(第三部分)

第15章《风险管理》&#xff08;第三部分&#xff09; 5 过程1-规划风险管理6 过程2-识别风险6.1 识别风险★★★6.2 数据收集★★★6.3 数据分析★★★ 7 过程3-实施定性风险分析7.1 实施定性风险分析7.2 数据分析★★★7.3 数据表现★★★7.4 项目文件&#xff08;更新&#…...

datart导入hive连接包

datart读取hive数据时&#xff0c;需要先在datart的lib目录下导入hive jdbc相关的包&#xff0c;这里面有几个坑记录下&#xff1a; 1.和springboot中commons-lang3冲突 2.hive中带的jetty和springboot冲突 3.hive jdbc的包的版本号一定要小于登录hive服务端的版本&#xff…...

2023美团秋招一面面经-已过

批处理批处理一个sql下的若干条sql&#xff0c;如何提高速度&#xff0c;如果要分片的话如何分片 1.使用数据库的批处理功能来执行多个 SQL 语句。这可以减少每个 SQL 语句的通信开销。JDBC 中的 addBatch() 和 executeBatch() 方法可以用来执行批处理操作。 在程序开始时候设…...

ARM Day2

目录 实现1-100的累加 思维导图 实现1-100的累加 .text .globl _start _start:mov r1,#0x64mov r2,#0x1mov r4,#0x1 going:cmp r1,r4bcc endleaddcs r3,r3,r4add r4,r4,r2b going endle:stop:b stop .end思维导图...

手把手教你制作独特优惠促销微传单

您是否曾经想要为自己的业务或活动制作一张吸引人的微传单&#xff1f;以下是一份简单易懂的微传单制作教程&#xff0c;帮助您在短短四步内打造出精美的宣传海报。 1. 登录乔拓云&#xff0c;点击【微传单】 首先&#xff0c;打开乔拓云网站并点击【微传单】选项。您将进入一个…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...