Python接口自动化(八) python登录禅道实战

2020-12-18 19:34

阅读:762

标签:请求   app   -o   对象   iges   cookie   htm   dig   obj   

一、需要使用requests下的会话对象;

会话对象让你能够跨请求保持某些参数。它也会在同一个Session实例发出的所有请求之间保持cookie。

方法级别的参数不会被跨请求保持。

参考:https://requests.readthedocs.io/zh_CN/latest/user/advanced.html#session-objects

二、查看禅道源码,发现需要对密码、rand进行md5加密,且在登录时,需要传入变量verifyRand;下图可以确定rand==verifyRand;

技术图片技术图片

 

 

 三、提取rand;通过fiddler抓包,发现登录页面有rand值,但通过接口请求的rand值的长度不固定,目前发现长度有9位、10位的;

所以判断提取的长度为10时,则不再请求登录接口;

技术图片

 

 

 四、md5加密密码、rand

import hashlib
#方式一
hash=hashlib.md5()
hash.update(‘P@ssw0rd‘.encode(‘utf-8‘))#不添加.encode(‘utf-8‘)会报错
f=hash.hexdigest()+str(1268292672)#web登录,fiddler抓包到的rand值
#print(f)
#方式二
hash2=hashlib.md5(f.encode(‘utf-8‘))
s=hash2.hexdigest()
print(s)#查看加密后的值与fiddler传递的密码应该是相同的  

五、判断登录是否成功; 

fiddler抓包查看登录成功的响应内容,发现不太容易判断,所以再次请求一个其他页面,判断是否有退出;

技术图片

fiddler抓包http://localhost/zentaopms/www/bug-browse-6.html请求,部分响应内容如下;

技术图片

 

 

 技术图片

 六、登录禅道参考代码

import requests
import re
import hashlib
pw="P@ssw0rd"
s=requests.Session()
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
}
vrand=0
while(True):
    rs1=s.get("http://localhost/zentaopms/www/user-login.html",headers=headers)
    rs1.encoding=‘utf-8‘
    #print(rs1.text)
    rand=re.findall(r"‘verifyRand‘ value=‘(.+?)‘",rs1.text)
    #print(rand[0])
    if len(rand[0])==10:
        vrand=rand[0]
        break
print(vrand)
#方式一
hash=hashlib.md5()
hash.update(pw.encode(‘utf-8‘))
f=hash.hexdigest()+vrand
#print(f)
#方式二
hash2=hashlib.md5(f.encode(‘utf-8‘))
pwd=hash2.hexdigest()
print(pwd)
data={
"account":"fuhui",
"password":pwd,
"referer":"http://localhost/zentaopms/www/bug-browse-6.html",
"verifyRand":vrand
}
rs2=s.post("http://localhost/zentaopms/www/user-login.html",headers=headers,data=data)
rs2.encoding=‘utf-8‘
#print(rs2.text)
rs3=s.get("http://localhost/zentaopms/www/bug-browse-6.html",headers=headers)
rs3.encoding=‘utf-8‘
#print(rs3.text)
result=re.findall(r"\(.+?)\",rs3.text)
print(result)
if result[0]=="退出":
    print("登录成功")

运行结果截图如下:

技术图片

 

 

 

  

 

Python接口自动化(八) python登录禅道实战

标签:请求   app   -o   对象   iges   cookie   htm   dig   obj   

原文地址:https://www.cnblogs.com/canglongdao/p/13384746.html


评论


亲,登录后才可以留言!