首页 > 其他分享 >Jmeter接口测试-图片验证码的识别

Jmeter接口测试-图片验证码的识别

时间:2024-12-15 13:21:01浏览次数:3  
标签:Base64 imageData base64 验证码 接口 encodedImage Jmeter data

Jmeter接口测试-对图片验证码的识别Jmeter接口测试-对验证码的识别

## 大概说一下思路,以及方法,我的接口接口的返回值是img/base64编码的,我采用的是OCR Server识别,获取返回值,图片保存到本地,再图片转码base64,之后携带数据请求OCR识别。(网上的办法是接口这种base64位的编码,可以直接请求OCR服务,我也试了试这个办法,请求时候,图片识别错误,就多了一步保存到本地)

1.获取接口数据(创建线程组- HTTP请求-输入IP地址、端口号、请求方式、路径、编码)
image
2.在HTTP请求下添加JSON提取器,提取imgUid、imgCode
image
中间采用“;”分号连接
3.接下来处理验证码,保存到本地,采用BeanShell后置处理
添加如下代码

点击查看代码
// 获取 Base64 编码字符串
String imageData = vars.get("imgcode");
// 判断并去掉前缀
if (imageData.startsWith("data:image/jpeg;base64,")) {
    imageData = imageData.substring("data:image/jpeg;base64,".length());
} else if (imageData.startsWith("data:image/jpg;base64,")) {
    imageData = imageData.substring("data:image/jpg;base64,".length());
}
// 现在 imageData 就是没有前缀的 Base64 字符串
// 继续进行解码等操作
import java.util.Base64;
import java.io.*;
byte[] data = Base64.getDecoder().decode(imageData);
// 保存文件
String fileName = "D://imgcode/code.jpg";
//保存的文件路径,可以自定义,换成你自己的
FileOutputStream out = new FileOutputStream(fileName);
out.write(data);
out.close();
// 设置文件路径变量
vars.put("file_name", fileName);

4.成功保存到本地后,进行下一步操作,读取图片,再次转码为base64
点击查看代码
import java.nio.file.Files
import java.nio.file.Paths
import java.util.Base64

// 设置图片文件路径
String filePath = "D://imgcode/code.jpg"  // 替换为你本地图片的路径
// 读取图片文件的字节数组
byte[] imageBytes = Files.readAllBytes(Paths.get(filePath))
// 将字节数组转换为 Base64 编码
String encodedImage = Base64.getEncoder().encodeToString(imageBytes)
// 输出 Base64 编码结果到 JMeter 变量
vars.put("encodedImage", encodedImage)
// 可选:打印 Base64 编码到 JMeter 日志
log.info("Encoded Image: " + encodedImage)
5.最后一步,是使用HTTP请求,请求下载好的OCR Server服务(IP为:127.0.0.1,端口默认为:12349,请求方式为POST)携带上一步骤中的encodedImage变量,使用${encodedImage}引用 6.添加查看结果树,执行后查看接口,验证码获取成功 { "code": "I7EX" }

标签:Base64,imageData,base64,验证码,接口,encodedImage,Jmeter,data
From: https://www.cnblogs.com/shynote/p/18607882

相关文章

  • Z-BlogPHP 升级 1.7.3.3260 后后台登录提示非法访问,验证码不显示,如何解决?
    升级Z-BlogPHP到1.7.3.3260版本后,您可能会遇到后台登录时提示“非法访问”、验证码不显示或验证码报错的问题。这是由于新版本增加了对后台登录的两个保护功能:CSRF保护功能和验证码功能。这些功能可能会因为主题插件的兼容性问题或其他原因导致无法正常工作。以下是解决这些......
  • 【Java学习笔记】Set 接口实现类-HashSet
    一、HashSet的全面说明HashSet实现了Set接口HashSet实际上是HashMap,看下源码.(图)可存放null,只能有一个null无序且不重复无序:不保证存放元素的顺序和取出顺序一致不重复:不能有重复元素/对象二、案例说明(仔细认真看看)packagecom.hspedu.set_;importjava.util.Has......
  • 【Java学习笔记】Map 接口实现类-HashMap
    一、HashMap小结二、HashMap底层机制及源码剖析packagecom.hspedu.map_;importjava.util.HashMap;/***@author韩顺平*@version1.0*/@SuppressWarnings({"all"})publicclassHashMapSource1{publicstaticvoidmain(String[]args){HashMapmap......
  • 【如何获取股票数据02】Python、Java等多种主流语言实例演示获取股票行情api接口之沪
    最近一两年内,股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步,就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任务是从这些数据中提炼出有价值的信......
  • 冷门但必备的知识:接口文档中如何正确写“说明”
    冷门但必备的知识:接口文档中如何正确写“说明”       清晰准确的“说明”不仅为开发者提供高效的使用指南,还能促进团队沟通,减少不必要的误解与开发成本。1.聚焦接口功能,避免过多技术细节       接口文档的重点是描述接口的功能,而不是后台的实现细节......
  • Vue2 - 最新详细实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持
    前言如果您需要Vue3版本,请访问。在vue2|nuxt2项目开发中,详解实现预览excel表格功能,在浏览器中直接打开xls/xlsx文件并渲染效果,文件来源可以是在线url地址、前端调用api接口获取文件流(先下载)等,预览方式可以新开浏览器页签或者自定义弹框等方式,兼容任意高低版本浏......
  • 注解:@FunctionalInterface函数式接口
    @FunctionalInterface是Java8引入的一个标记型注解,用于声明一个接口是函数式接口(FunctionalInterface)。函数式接口是指只有一个抽象方法的接口,这样的接口可以被用作Lambda表达式的类型。使用@FunctionalInterface注解有助于确保接口符合函数式接口的定义,并且在编译时......
  • Pytest接口自动化测试框架Python自动化测试开发
    一、引言在软件开发过程中,接口测试是确保软件各个组件之间数据传输和功能交互正常工作的重要环节。通过接口测试,可以提高软件的整体质量和稳定性。Pytest是一个流行的Python自动化测试框架,提供了丰富的断言方法和灵活的测试组织结构,使得编写接口测试用例变得简单而高效。本文将详......
  • 谈谈Python中的接口与抽象基类
    接触Python比较早的朋友可能都有这样的体会,Python语言虽然也支持面向对象的编程方式,但是,不像那些纯面向对象的语言(比如Java和.NET)那样严格和规范。随着项目的规模逐步扩大之后,想要以一种清晰、可维护和可扩展的方式定义和实施对象的行为就变得越来越困难。今天介绍的Python中两......
  • BurpSuite工具-暴力破解模块与验证码识别
    一、暴力破解-Intruder1.1.攻击目标(Target)1.2.有效负载位置(Positions)1.2.1.狙击手(Sniper)1.2.2.破城槌(Batteringram)1.2.3.音叉(Pitchfork)1.2.4.集束炸弹(Clusterbomb)1.3.有效载荷(Payloads)1.4.资源池(ResourcePool)1.5.选项(Options)二、验证码识别2......