用fiddler抓包Jmeter模拟登陆
说明
因工作需要每天统计某网站的用户下载量,所以想用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
第七步:添加断言、断言结果、观察结果树。
查看结果树
查看结果树成功登录。
最后就是获取页面的值,这个比较简单了。