Jmeter 测试脚本录制器-HTTP 代理服务器

Jmeter 测试脚本录制器-HTTP 代理服务器

  • Jmeter 配置代理服务器
    • 代理服务器获取请求地址示例图
    • 配置步骤
  • 浏览器配置代理
    • Google 浏览器插件配置代理
    • windows 本地网络配置代理
  • 启动录制,生成证书
    • 生成证书
    • 导入证书
    • Jmeter 配置证书
  • 浏览器点击页面,录制请求地址
  • 过滤配置源码解析

使用Jmeter 代理服务器可以录制测试脚本,只需要在浏览器中访问相关的页面,配置相关的过滤规则,即可获取对应的接口请求地址、入参,非常方便。

Jmeter 配置代理服务器

代理服务器获取请求地址示例图

在这里插入图片描述
Jmeter配置代理服务器之后,所有的请求都会经过Jmeter,这样就能录制相关的请求地址、参数。

配置步骤

  1. 添加代理服务器
    测试计划 -> 添加 -> 非测试元件 -> HTTP 代理服务器
    在这里插入图片描述
    配置端口 7000
    在这里插入图片描述

  2. 添加线程组,用来存放录制的请求地址
    测试计划 -> 添加 -> 线程(用户)-> 线程组
    在这里插入图片描述

  3. 代理服务器绑定对应的线程组
    在代理服务器对应的配置栏 Test plan content 选择第2步配置的线程组
    在这里插入图片描述

浏览器配置代理

本地需要配置代理,是相关的请求都经过Jmeter服务器。配置代理的方式有多种,这里列举2种:

  1. 浏览器插件配置
  2. windows网络设置配置

Google 浏览器插件配置代理

安装 FoxyProxy, 如果无法在线安装,可以使用离线安装包,地址
链接: https://pan.baidu.com/s/1NIe2pTISyzTX_0qJHJ8qew?pwd=96c2
提取码: 96c2

安装好插件之后,配置FoxyProxy
在这里插入图片描述
选择 Options
在这里插入图片描述
选择对应的选项
在这里插入图片描述
Edit Selection
在这里插入图片描述
注意,代理的端口地址需要和Jmeter代理服务器的一致,不然不会经过Jmeter代理服务器,录制不了脚本

windows 本地网络配置代理

在网络设置这里配置代理
在这里插入图片描述

启动录制,生成证书

生成证书

代理服务器哪里点击启动,就会弹出生成证书的提示
在这里插入图片描述
证书的路径在Jmeter 的安装目录的 bin 文件夹下生成,如图,
ApacheJMeterTemporaryRootCA.crt 文件
在这里插入图片描述

导入证书

Google浏览器安装证书, 隐私和安全,管理证书
在这里插入图片描述
在这里插入图片描述
导入证书
在这里插入图片描述

Jmeter 配置证书

在这里插入图片描述

选项 -> SSL管理器
在这里插入图片描述
选择对应的证书 ApacheJMeterTemporaryRootCA.crt,点击Open

浏览器点击页面,录制请求地址

可以看到对用的请求地址都记录下来了
在这里插入图片描述

过滤配置源码解析

过滤配置分为包含模式、排除模式
在这里插入图片描述
匹配的源码如下:
org.apache.jmeter.protocol.http.proxy.ProxyControl#filterUrl

boolean filterUrl(HTTPSamplerBase sampler) {
        String domain = sampler.getDomain();
        if (domain == null || domain.isEmpty()) {
            return false;
        }

        String url = generateMatchUrl(sampler);
        CollectionProperty includePatterns = getIncludePatterns();
        if (!includePatterns.isEmpty() && !matchesPatterns(url, includePatterns)) {
            return false;
        }

        CollectionProperty excludePatterns = getExcludePatterns();
        if (!excludePatterns.isEmpty() && matchesPatterns(url, excludePatterns)) {
            return false;
        }

        return true;
    }

    private static String generateMatchUrl(HTTPSamplerBase sampler) {
        StringBuilder buf = new StringBuilder(sampler.getDomain());
        buf.append(':'); // $NON-NLS-1$
        buf.append(sampler.getPort());
        buf.append(sampler.getPath());
        if (!sampler.getQueryString().isEmpty()) {
            buf.append('?'); // $NON-NLS-1$
            buf.append(sampler.getQueryString());
        }
        return buf.toString();
    }

    private static boolean matchesPatterns(String url, CollectionProperty patterns) {
        if (USE_JAVA_REGEX) {
            return matchesPatternsWithJavaRegex(url, patterns);
        }
        return matchesPatternsWithOroRegex(url, patterns);
    }

返回 true 的地址就会记录下来。默认使用的是正则表达式匹配的。整理出如下的测试方法,验证URL 是否被记录或者配置

import org.junit.jupiter.api.Test;

import java.util.regex.Pattern;

public class JmeterProxyTest {

    @Test
    public void testInclude() {
        String regex = "admin-api\\.macrozheng\\.com.*";
        Pattern pattern = Pattern.compile(regex);
        String[] testUrls = new String[]{
                "admin-api.macrozheng.com/order/list?pageNum=1&pageSize=10",
                "https://hm.baidu.com"
        };
        for (String url : testUrls) {
            if (pattern.matcher(url).matches()) {
                System.out.println("matche url " + url);
            }
        }
    }

    @Test
    public void testExclude() {
        String regex = ".*(.html|.js|.css|.png|.gif).*";
        Pattern pattern = Pattern.compile(regex);
        String[] testUrls = new String[]{
                "https://www.googletagmanager.com/gtag/js?id=G-73YJPXJTLX",
                "https://hm.baidu.com/hm.gif?cc=1&ck=1&cl=24-bit&ds=1536x864&vl=382&et=0&ja=0&ln=zh-cn&lo=0&lt=1705326161&rnd=1568321180&si=8b02a318fde5831da10426656a43d03c&v=1.3.0&lv=2&sn=39926&r=0&ww=1536&u=https%3A%2F%2Fwww.macrozheng.com%2Fadmin%2Findex.html%23%2Foms%2Forder&tt=mall-admin-web"
        };
        for (String url : testUrls) {
            if (pattern.matcher(url).matches()) {
                System.out.println("matche url " + url);
            }
        }
    }
}

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

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

相关文章

基于Springboot的善筹网(众筹网-有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的善筹网(众筹网-有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring S…

5 - 声明式事务

传统事务流程: Connection connection JdbcUtils.getConnection(); try {//1. 先设置事务不要自动提交connection.setAutoCommit(false);//2. 进行各种 crud//多个表的修改,添加 ,删除select from 商品表 > 获取价格//修改用户余额updat…

Jetbrains ai assistant激活后仍无法使用,怎么回事?

用正式的ai assistant激活码激活后仍然无法使用 首先获取了ai assistant激活码,激活后如下 地址:https://web.52shizhan.cn 上图是已经激活成功了,但是在右侧这里打开ai assistant不可用 点击开始使用ai assistant 出错 以上是用了ai as…

排序——归并排序

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 特性结果演示 基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子…

智能合约介绍

莫道儒冠误此生,从来诗书不负人 目录 一、什么是区块链智能合约? 二、智能合约的发展背景 三、智能合约的优势 四、智能合约的劣势 五、一些关于智能合约的应用 总结 一、什么是区块链智能合约? 智能合约,是一段写在区块链上的代码,一…

HNU-算法设计与分析-实验2

算法设计与分析实验2 计科210X 甘晴void 202108010XXX 目录 文章目录 算法设计与分析<br>实验21 用动态规划法实现0-1背包问题重述想法代码验证算法分析 2 用贪心算法求解背包问题问题重述想法代码验证算法分析 3 半数集问题&#xff08;实现题2-3&#xff09;问题重述…

【详解】Java集合框架

文章目录 集合1、Collection1.1、List1.2、Queue & Deque1.2.1、Stack 1.3、Set 集合 Java 集合&#xff0c;也称为容器&#xff0c;主要由两大接口&#xff08;Interface&#xff09;派生出来的&#xff0c;Collection 和 Map Collection 用来存放单一元素&#xff08;单…

非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (II, Python 简单实例)

Title: 非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (II, Python 简单实例) 姊妹博文 非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I) 文章目录 0.前言1. 最优问题实例2. 列文伯格-马夸尔特法 (Levenberg-Marquardt Me…

Mindspore 公开课 - CodeGeeX

CodeGeeX: 多语言代码生成模型 CodeGeeX 是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现&#xff0c;在鹏城实验室“鹏城云脑II”中的192个节点&#xff08;共1536个国产昇腾910 AI处理器&#xff09;上训练而成。截至2022年6月22日&…

非常好用的Mac清理工具CleanMyMac X 4.14.7 如何取消您对CleanMyMac X的年度订购

CleanMyMac X 4.14.7是Mac平台上的一款非常著名同时非常好用的Mac清理工具。全方位扫描您的Mac系统&#xff0c;让垃圾无处藏身&#xff0c;您只需要轻松单击2次鼠标左键即可清理数G的垃圾&#xff0c;就这么简单。瞬间提升您Mac速度。 CleanMyMac X 4.14.7下载地址&#xff1a…

WEB 3D技术 three.js 3D贺卡(1) 搭建基本项目环境

好 今天 我也是在网上学的 带着大家一起来做个3D贺卡 首先 我们要创建一个vue3的项目、 先创建一个文件夹 装我们的项目 终端执行 vue create 项目名称 例如 我的名字想叫 greetingCards 就是 vue create greetingcards因为这个名录 里面是全部都小写的 然后 下面选择 vue3 …

CSS实现平行四边形

1、为什么实现平行四边形 在日常开发过程中&#xff0c;有些时候我们可以会遇到一种情况&#xff0c;如可视化大屏中要求我们横线实现对应的进度条&#xff0c;但进度条的内容是由无数个平行四边形组装类似于进度条的形式&#xff0c;那么我们就需要使用CSS来进行对应的实现。 …

Python: vars()详细解释

vars() 是一个内置函数&#xff0c;用于返回一个对象的 __dict__ 属性。它接受一个对象作为参数&#xff0c;如果省略参数&#xff0c;它返回当前局部作用域的字典。 具体而言&#xff0c;vars() 的行为取决于参数的类型&#xff1a; 1. 没有参数&#xff1a; 如果没有提供参…

【MATLAB】EEMD+FFT+HHT组合算法

代码原理 EEMD&#xff08;经验模态分解&#xff09;FFT&#xff08;快速傅里叶变换&#xff09;HHT&#xff08;希尔伯特-黄变换&#xff09;组合算法是一种常用的信号处理和分析方法。这个组合算法包含了EEMD、FFT和HHT三个步骤&#xff0c;可以用于处理非线性和非平稳信号。…

【网络取证篇】Windows终端无法使用ping命令解决方法

【网络取证篇】Windows终端无法使用ping命令解决方法 以Ping命令为例&#xff0c;最近遇到ping命令无法使用的情况&#xff0c;很多情况都是操作系统"环境变量"被改变或没有正确配置导致—【蘇小沐】 目录 1、实验环境&#xff08;一&#xff09;无法ping命令 &a…

嵌入式学习-网络编程-Day2

思维导图 tcp通信流程 udp通信流程 作业1 写一个基于TCP协议的客户端来控制RobArm机械臂 代码 #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.122.71" #define CLI_PORT 6666 #define CLI_IP "192.168.122.36"int main(int…

FPN网络的实现原理详解

1 前言 FPN网络是一种常见的特征融合模块&#xff0c;在很多模型中都有运用&#xff0c;今天我们就结合代码和论文详细的搞清楚它到底是怎么一回事。 2 原理 原理直接看这一张图就可以了&#xff0c;很直观主要就是把对不同层的特征进行融合&#xff0c;重点还是在于代码的理…

MOS管驱动电流计算以及分立器件驱动电路

自记&#xff1a; 1.先根据mos数据手册查找参数&#xff0c;计算电流&#xff1b; 2.分立器件驱动电路图&#xff1b; 3.分立器件选择 仔细学&#xff0c;能看懂&#xff01; 1.计算电流&#xff1a; 2.分立器件驱动电流&#xff1a;两种&#xff0c;第一种反向&#xff0c…

实践学习PaddleScience飞桨科学工具包

实践学习PaddleScience飞桨科学工具包 动手实践&#xff0c;在实践中学习&#xff01;本项目可以在AIStudio平台一键运行&#xff01;地址&#xff1a;https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错&#xff0c;再执行一次即可。若碰到莫名其妙的…

Linux操作系统——重定向与缓冲区

1.理解一下struct file内核对象 上一篇文章&#xff08;文件详解&#xff09;我们一直在谈&#xff0c;一个文件要被访问就必须要先被打开&#xff0c;打开之前就必须要先把文件加载到内存&#xff0c;同时呢我们的操作系统为了管理文件也会为我们的文件创建相对应的struct fi…