Jmeter模拟登陆通过csrftoken验证
2019-11-22 本文已影响0人
Kingtester
最近想做一个接口测试的教案,随手想用我们公司自己的系统做案例,于是乎,简单的做了一个我们自己的系统登录请求,却发现如图所示,登录报错了。

接下来就开始找问题了,使用浏览器进行登录,同时打开F12查看,发现还有一个参数:

CSRFtoken是什么鬼?百度一下:

原来这个是为了安全的一个东西。
只不过没有存在cookie里面,和之前我遇到的不一样,记得之前,在response header的cookie中有一个set cookie,但是这次并不是!既然不在cookie中,那么一定请求后,服务器返回的,不是在JS文件中生成,一定是在返回报文中。
于是,接下来先看所有的返回JS文件,查找里面csrftoken,看是否前端JS生成该值。

查看了返回的JS文件,复制到记事本,搜索csrftoken,发现都没有。
那说明,这个值一定在返回报文中。
继续找返回报文。
功夫不负有心人,在刷新登录页面的报文中,我们惊奇的发现了这个。这不是我们要找的吗?

我们点击登录,点击F12,查看一下登录接口是不是使用的这个参数。

发现是不是神奇的一样?
我们知道这个参数值是怎么来的,接下来只需要使用正则表达式把他提取出来放在一个变量里,然后再登录的请求参数中调用就好了。接下来,咱们在请求中加入加入一个正则表达式,这里,小编再带大家一起温习一下:

我们添加一个debug 取值器,运行查看结果树。

接下来,咱们再在登录的接口中调用这个CSRFtoken变量,如图:

哈哈,什么防攻击,简直就是弱爆了对不对。
现在咱们继续往下走,咱们得获取到系统内部的菜单列表,通过列表,咱们才能通过F12查看请求啊。但是请看
[图片上传失败...(image-63d4d2-1574422593643)]
这个请求明显就是进入到主页面得请求对不,咱们通过jmeter进入后返回得报文不对。

302,重定向了。

这说明咱们重定向的接口出现错了。那怎么办呢?通常来说,咱们的用户名,密码请求的参数应该直接进入到系统主页,咱们做个大胆的设想,把请求参数直接放到home的这个请求中运行一下:

还是不行。那这是怎么回事呢?咱们对比一下:


我们再来看Jmeter运行的:



聪明的你知道是哪里问题吗?