requests---登录禅道

前言

  大家常用的bug管理工具大多数都是禅道,jira。今天介绍下,如何用过requests的方法进行登录禅道

抓取登录状态

通过fiddler进行抓取登录禅道过程

通过抓包可以获取一些内容,登录接口地址,登录请求方式,登录时的账号名,密码,这时候会发现,登录的账号名和密码和我们输入的不一样,初步想法,可能这个地方进行了加密。但是具体什么加密怎么加密的不清楚,这里安静先通过请求这个登录,获取登录页面的内容。

import requests
url = 'http://127.0.0.1/pro/user-login.html'
r = requests.get(url)
print(r.content.decode('utf-8'))

通过查看打印结果,我们可以看出来加密内容(请求参数内容)

通过多次请求抓包我们已经知道了每次登录更换的参数只有verifyRand和password进行改变,而password的值通过加密也是和verifyRand进行关联的。首先找到verifyRand的值,我们继续在我们的请求返回内容中找

这里我们可以通过正则表达式的方式进行提取出来value的值。

import requests
import re
url = 'http://127.0.0.1/pro/user-login.html'
r = requests.get(url)
verify = re.findall(r"name='verifyRand' id='verifyRand' value='(.*?)'  />",r.content.decode('utf-8'))
print(verify)

接下来就是参数加密的问题了,前面已经介绍过了,requests---requests请求加密接口,通过上面的内容可以发现password是通过了2层加密,先对密码进行加密,然后把加密的内容加上verifyRand的值再次进行加密,获得最后的结果。

# 第一次加密密码
pwd1md5 = hashlib.md5()
pwd1md5.update(password.encode('utf-8'))
pwd1_result = pwd1md5.hexdigest()
# 第2次加密
pwd2md5 = hashlib.md5()
pwd2md5.update((pwd1_result+verify).encode('utf-8'))
pwd2_result = pwd2md5.hexdigest()

加密密码获取到后,就直接可以进行请求登录的接口地址,然后完成登录。这里我们通过session的形式进行完成登录,因为登录后我们想要去测试页面。最后通过判断是否进入了测试页面来判断是否登录成功。

body = {
                "account": user,
               "password": pwd2_result,
               "passwordStrength": 1,
               "referer": "/pro/",
               "verifyRand": verify,
               "keepLogin": 0,
               }
r = s.post('http://127.0.0.1/pro/user-login.html', data=body)
# 访问测试页面
test = s.get("http://127.0.0.1/pro/qa/")
if "测试主页" in test.text:
    print('登录成功!!')
else:
    print('登录失败!!')

通过结果肯定知道,是登录成功的。下面附上完整代码

完整代码

import requests
import re
import hashlib
s = requests.session()
user = 'admin'
password = 'test821006052'
url = 'http://127.0.0.1/pro/user-login.html'
r = s.get(url)
verify = re.findall(r"name='verifyRand' id='verifyRand' value='(.*?)'  />", r.content.decode('utf-8'))[0]
# 第一次加密密码
pwd1md5 = hashlib.md5()
pwd1md5.update(password.encode('utf-8'))
pwd1_result = pwd1md5.hexdigest()
# 第2次加密
pwd2md5 = hashlib.md5()
pwd2md5.update((pwd1_result+verify).encode('utf-8'))
pwd2_result = pwd2md5.hexdigest()
body = {
                "account": user,
               "password": pwd2_result,
               "passwordStrength": 1,
               "referer": "/pro/",
               "verifyRand": verify,
               "keepLogin": 0,
               }
r = s.post('http://127.0.0.1/pro/user-login.html', data=body)
# 访问测试页面
test = s.get("http://127.0.0.1/pro/qa/")
if "测试主页" in test.text:
    print('登录成功!!')
else:
    print('登录失败!!')

 

posted @ 2021-05-14 16:02  测试-安静  阅读(766)  评论(0编辑  收藏  举报