本文以学习通为例,来实际应用session(没有学习通的小伙伴可以自己去找一个登录页面,但要尽量找一个表单数据(下面提到了)没有变化的来实验,因为简单)
1.首先我们新建隐身窗口(无痕模式)进入学习通登录页面的网址:
https://passport2.chaoxing.com/login?loginType=4&newversion=true&fid=129838&newversion=true&refer=http://ysdxaqjy.aqjy.chaoxing.com
2.开始抓包,输入账号密码登录进入
3.在所抓的包中找到fanyalogin包
4.找到其中的User-Agent记录下来,headers中会用到。
5.同时记录下该包的表单数据(如下图 ):
?6.重复上述1 2 3 5步骤,对比两次记录的表单数据有哪些是不同的,由此可以看出两次的数据一致(马赛克部分为你的账号密码),数据一致证明数据为固定值(账号密码为输入值),可以直接放入data中构建data字典。
7.把该包的网址记录下来作为登录url,同时可以在该包中看到请求类型为post类型。
8.在登录成功的页面找到账号管理点击进入,并记录下其网址作为验证url,登录成功其title为:
账号管理---xx大学安全教育平台,若打开一个新页面,输入网址,则其title为:用户登录。
下面直接上代码:
import requests
def login():
session = requests.session()
session.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 登录url
url = 'https://passport2.chaoxing.com/fanyalogin'
data = {
'fid': '129838',
'uname': '改为你的账号',
'password': '改为你的密码',
'refer': 'http%3A%2F%2Fysdxaqjy.aqjy.chaoxing.com',
't': 'true'
}
session.post(url, data=data)
# 验证url2
url2 = 'http://i.mooc.chaoxing.com/settings/info?t=1637052365105'
response = session.get(url2)
with open('xxt.html', 'wb')as f:
f.write(response.content)
if __name__ == '__main__':
login()
结果:
通过结果可以看到,登录成功了。以上就是session:状态保持的实战应用。?
|