• Jmeter利用正则表达式提取器提取登录cookie供下一步使用


    最近在学Jmeter,遇到需要登录之后才能进行下一步操作的场景,网上查了各位大神的资料,东拼西凑总算是做好满足需求了,写一下经过和步骤吧。

    一、正常调用

    按正常流程添加线程组、HTTP请求(登录和添加)、HTTP请求默认值、HTTP信息头管理器等,然后跑看看能不能通过。

     

     

    添加失败,试着在同一个线程组下添加HTTP Cookie 管理器,看看能不能成功:

     

     通过了。但是现在线程数是和循环次数都是1,如果循环次数是1000次,那也登录接口也要调用1000次,影响性能测试结果,这个时候可以把登录单独放到另一个线程组中,然后在添加的接口中调用登录的Cookie。

      

      

    报401(鉴权失败)了,没法调用上一个线程组登录的Cookie。下一步就看看怎么获取上一个线程组的返回数据,供别的线程组调用。

     

    二、提取登录接口返回的cookie。

    1、在登录的HTTP请求下添加正则表达式提取器

     

     2、然后通过页面调用登录的接口,拿到登陆后获取的Cookie和添加需要用到的cookie值

    登陆后获取的Cookie:

      

    添加需要用到的cookie值:

     

    3、按下图设置好正则表达式提取器

      

     

    填写说明:

    要检查的响应字段:现在是需要从信息头中获取数据,所以现在选中“信息头”

    引用名称:下一个请求要引用的参数名称,如填写logincookie,则可用${logincookie}引用它。

    正则表达式:

        ():括起来的部分就是要提取的。

        .:匹配任何字符串。
        +:一次或多次。
        ?:在找到第一个匹配项后停止。
        这里用到的是Cookie后面的值,所以只需要拿到登录接口返回的cookie中SESSIONID=E19055FDC13C1677B05AAE6C736A4A6E的值就好了

    模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

    匹配数字:0代表随机取值,1代表全部取值,通常情况下填0

    缺省值:如果参数没有取得到值,那默认给一个值让它取。

     

     这个时候就把正则表达式提取器设置好了,但是经测试,不能跨线程组调用参数,所以还需要在登录HTTP请求下添加BeanShell PostProcessor关于这个组件的介绍可以自行查一下

     

    三、设置跨线程组调用参数

    1、在登录HTTP请求下添加BeanShell PostProcessor

     

     

     2、设置参数如下图所示,填入参数名${logincookie}和脚本${__setProperty(logincookie,${logincookie})}

     

     3、在登录HTTP请求下添加HTTP信息头管理器,加一行,名称填抓包抓到的信息头中的键(Cookie),值填BeanShell PostProcessor中往下传的参数(${__P(变量名)})

       

     4、跑一下请求 

     

     

     已经可以成功添加了。

    参考的博文或来源:

    Jmeter关联,正则表达式提取器使用

     Jmeter跨线程组调用变量

     

     

  • 相关阅读:
    Linux官方源、镜像源汇总
    python3 pip报错 TypeError: 'module' object is not callable
    2019-11-27:kali 2019-4中文乱码解决方法
    2019-11-26:密码学基础知识,csrf防御
    2019-11-25:信息收集,笔记
    2019-11-24:postgresql数据库安装,最后报错failed to load SQLModule 问题的解决方案
    2019-11-22:xss绕过笔记
    2019-11-20:xss学习笔记
    2019-11-19:无返回的盲型xxe,使用带外读取数据
    2019-11-19:xxe漏洞利用,笔记
  • 原文地址:https://www.cnblogs.com/liuzhzhao/p/10787502.html
Copyright © 2020-2023  润新知