优秀框架

用fiddler抓包Jmeter模拟登陆

2018-08-03  本文已影响815人  test小星星

说明

因工作需要每天统计某网站的用户下载量,所以想用jmeter模式登陆,然后获取页面的值形成报表。

步骤

1.首先用fiddler抓包分析登陆需要传递哪些参数,把参数提取出来。

2.通过Jmeter构造请求参数,模拟登陆。

3.登陆成功后,提取页面的值,然后保存到表格。

实例

1.打开fiddler,打开浏览器输入网址:https://hwid1.vmall.com/CAS/portal/login.html

通过fiddler抓包会抓到好多包

图1 图2

通过上面的抓包,我们经过分析可以知道实际上做了几步操作。

第一步:打开登录页面,如图1。

发送一个get请求到https://hwid1.vmall.com/CAS/portal/login.html

第二步:输入账号密码点击登录。

发送一个POST请求到,如图2

https://hwid1.vmall.com/CAS/ajaxHandler/remoteLogin?reflushCode=0.9330012068232685

分析

选择WebForms查看需要传递的参数,经过测试QueryString的值可以不填。

webforms

选择Headers查看需要传递的参数

headers

可以看到headers里面有两个必传的参数Page-Tken和Referer。

通过测试Referer的值是固定的,每次请求都一样,但是Page-Tken值是动态的每次请求都不一样。

所以得先找到产生Page-Tken值的地方。首先复制Page-Tken的值,按ctrl+F,粘贴,然后就能查找到这个值在哪生成

Page-Tken

如图可以看到有多个请求都包含了Page-Tken的值。通过分析我们选择第一个请求,因为只有第一个请求的响应体中有生成Page-Tken值的方法,其他请求都只是调用。找到了产生Page-Tken值的地方我们就可以通过正则取到该值了。

pageToken

继续分析该登录请求并没有直接返回登录成功的响应内容,而是返回了一个jion,这并不是我们想要的内容。

接着看下面有个302请求,可以看到该请求中的参数是上一个请求返回的参数。然后在返回的头中有个JSESSIONID值和一个Location(重定向)地址

再继续选择下一个302请求,可以看到这次请求中没有需要传递的参数,只返回了一个重定向地址。

继续选择下一个200请求,可以看到这次才是我们想要的请求成功的返回内容。

200请求

通过上面分析我们可以得出结论:首先打开登录页面会生成一个Page-Tken值,在我们输入账号密码点击登录时,需要把Page-Tken值放到头信息一起传递给服务器,然后服务器返回一个json值,一个重定向地址。继续请求重定向地址,需要把上次返回的JSON,ticket和siteID两个值加入到URL参数中。这样就成功登录了。

2.使用Jmeter模拟登录

第一步:打开Jmeter,添加线程组,HTTP Cookie 管理器、HTTP信息头管理器。

第二步:添加一个HTTP请求,请求登录页面。

loginPage

第三步:添加正则表达式提取器,提取pageToken的值

正则表达式

把提取的值添加到HTTP信息头管理器中

HTTP信息头管理器

第四步:再添加一个HTTP请求,模拟登录请求。

login

第五步:添加正则表达式提取器,提取返回的json,ticket和siteID值。

正则表达式提取器

第六步:添加HTTP请求,把提取的icket和siteID值已参数形式传递给URL中

homePage

第七步:添加断言、断言结果、观察结果树。

查看结果树

查看结果树成功登录。

最后就是获取页面的值,这个比较简单了。

上一篇 下一篇

猜你喜欢

热点阅读