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

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" }
posted @ 2024-12-15 13:14  流浪牛马  阅读(570)  评论(0)    收藏  举报