Jmeter 识别验证码处理

先把别人的解决方法粘贴过来,就是还没有琢磨出来,如果有哪位大神会处理验证码,求指教~

1.首先网上找各种解决方法,看看大神们都是怎样搞定的验证码登录的,别说,还真让我找到了,一看大神17年发布的,不禁感叹了下,大神就是大神啊!网上大神链接如下

https://www.cnblogs.com/qzsong0214/p/6907075.html

大家先看评论啊,大佬为了我们这群菜鸟也是用心良苦,生生没贴源码,苦了我们这些菜鸟,继续往下翻你会看到有人贴了源码,没错这个人就是我,最后还是要谢谢大佬提供的思路!

2.要准备的东西:Jmeter 大家应该都有,需要准备的其实就是下面这个东东,网址:https://sourceforge.net/projects/tess4j/,这个网址真的很不错,建议大家收藏!

3.完事具备后,接下来我们要把tess4j里的jar包全扔到Jmeter的lib文件夹下,其实只需要几个jar包就够,但是时间有限,技术有限就不去找具体要那几个,全扔过去省事,闭着眼睛扔就对了!

4.配置jmeter

4.1打开jmeter,在测试计划下添加线程组

4.2添加获取验证码的采样器

 4.3新建一个监听器

 4.4新建一个用户自定义变量,用于存解析出来的验证码的值

 备注:新建一个存验证码的变量regCode,为了判断是否已解析出验证码,设定一个默认值-1

 4.5给获取验证码的采样器加一个后置处理器BeanShell PosProcessor,用于解析验证码的值,并将其存入上一步的用户变量中

 Bean Shell源码如下(大神源码):

import java.io.*;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;

String imgPath="D://yanzhengma.jpg";//将验证码保存到本地文件中
byte[] responseBody = prev.getResponseData();
File imageFile = new File(imgPath);
OutputStream out = new FileOutputStream(imageFile);
out.write(responseBody);
out.flush();
out.close();

File imageFile1 = new File(imgPath);//读取图片数字
ITesseract instance = new Tesseract();
instance.setDatapath("C:\Users\dfitc_lgx\Desktop\xiagao\Tess4J\tessdata"); //Tess4j 文件里的 tessdata 目录下
instance.setLanguage("eng");//英文库识别数字比较准确
content = instance.doOCR(imageFile1).replace(" ", "");
vars.put("aaaaaa",content);

4.6在采集器上新建一个后置处理器Debug PostProcessor,便于调试

 4.7验证之前的设置是否正确,启用jmeter的压力测试,在查看结果树的菜单下,可以看到运行的结果。

注意:我用的这个验证码,背景有干扰,所以识别出来的验证码有偏差,理应对存在本地的图片做一下降噪处理的,这留着以后研究吧。

  

原文地址:https://www.cnblogs.com/sycz/p/13665421.html