zoukankan      html  css  js  c++  java
  • 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的压力测试,在查看结果树的菜单下,可以看到运行的结果。

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

      

  • 相关阅读:
    网络流,再出发!
    2SAT
    并查集
    最大密度子图
    网络流提高专题(洛谷题单)
    JQuery 操作 ListBox间移动和ListBox内移动
    关于多表Update和Delete的应用
    XML格式与DataTable、DataSet、DataView格式的转换
    FCKeditor配置和精简
    点击fileupload后button事件不起作用
  • 原文地址:https://www.cnblogs.com/sycz/p/13665421.html
Copyright © 2011-2022 走看看