HTTP协议无状态,书面点的说法是指协议对于交互性场景没有记忆功能,直白点的说,就是HTTP刷新后,不记得你之前做了什么设置,通常要解决cookie记录登录状态的方法有以下几种:
1.直接把用户名和密码保持到cookie中,不过目前此类方法风险比较大,一般不把密码等重要信息保存到Cookie中。
2.把密码加密后保存到Cookie中,下次访问时解密并与数据库比较。
3.加密账号后连同账号一块保存到Cookie中。
4.利用session会话将cookies等值自动传到下一个接口。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
手动传cookies有一定的繁琐:
-
import requests
-
-
# 登录接口
-
log_url = ""
-
# 登录参灵敏
-
data = {"accounts": "longge",
-
"pwd": "888888"}
-
# 头部信息
-
head = {"X-Requested-With": "XMLHttpRequest"}
-
login_response = requests.post(log_url, data=data, headers=head)
-
-
# 获取cookie,传给下面订单接口
-
cookie = login_response.cookies
-
-
# 订单接口
-
order_url = ""
-
order_response = requests.get(order_url, cookies=cookie)
-
print(order_response.text)
不过我们也可以尝试session会话管理,订单接口自动带上cookeis,这样我们就可以保持会话,将cookies等值自动传到下一个接口:
-
import requests
-
-
# 登录接口
-
log_url = ""
-
# 登录参灵敏
-
data = {"accounts": "longge",
-
"pwd": "888888"}
-
# 头部信息
-
head = {"X-Requested-With": "XMLHttpRequest"}
-
-
# 实例化session对像
-
session = requests.session()
-
-
login_response = session.post(log_url, data=data, headers=head)
-
-
# 订单接口
-
order_url = ""
-
# 不用手动传入cookies值,因为session自动带上了
-
order_response = session.get(order_url)
-
print(order_response.text)
-
# 打印cookies
-
print(session.cookies)
阅读(315) | 评论(0) | 转发(0) |