当前位置: 首页 > 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;打开乔拓云网站并点击【微传单】选项。您将进入一个…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...