cookies 和session
因为http 是无链接,而cookies 可以用来保存登陆的状态,在web 端的浏览器中,但是不安全,为了安全,就把一些敏感信息保存在session中,而session是保存在服务器端,session 里面记录了客户的账号和密码。
代码实现拿到cookie 和session
#-------------cookies方式登录----------------
import requests
import json
HOST = *******'
#登录操作
def login(inData):
#1- url
url = f'{HOST}/api/mgr/loginReq'
#2- body请求体
paylaod = inData
#3- 发请求
resp = requests.post(url,data=paylaod)
#cookie在响应头 set-cookies
#print('响应头>>>',resp.headers)
return resp.cookies#获取cookies对象
#案例操作
#列出课程接口
def lesson_list(inCookies):
#1- url
url = f'{HOST}/api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20'
#3- 发请求
resp = requests.get(url,cookies=inCookies)
#设置响应编码
resp.encoding='unicode_escape'
return resp.text
if __name__ == '__main__':
cookie = login({'username':'auto','password':'sdfsdfsdf'})
session=cookie['sessionid'] #获取自身项目的sessionid
print(cookie)
print(session)
userCookies = {'sessionid':session,'token':'从第三方接口获取'}#二次封装cookies
res = lesson_list(userCookies)
print(res)
"""
操作任务:
1- 获取登录的cookies
2- 把cookies给后续接口使用
cookies在项目里使用场景:
1- 后续接口使用原生态的cookie
2- 后续接口会使用到登录的cookies(只有sessionid),但是这个cookies他是二次封装的
cookies:session+token+uuid
解决方案:
1- 先通过登录的方式获取第三方接口的token
2- 再使用本测试项目的登录去获取cookies
3- 先从本项目的cookies提取session
4- 二次封装 cookie=sessionid+token
"""
token
import requests
HOST = '******'
"""
定义方法:
1- _get_data() 没有特殊意义
1- __get_data() 私有的方法,只能在这个xxx.py文件里调用,避免其模块去调用他
"""
import hashlib
from config import loginData
import copy
def __get_md5_data(psw:str):
"""
:param psw: 字符串的密码
:return: 返回的加密后的结果
"""
#实例化一个MD5对象
md5 = hashlib.md5()
#2- 调用加密方法
md5.update(psw.encode('utf-8'))
return md5.hexdigest()
def login(inData):
#1-url
url = f'{HOST}/account/sLogin'
#2-请求体---账户密码的字典类型
inData = copy.copy(inData)#浅拷贝
inData['password'] = __get_md5_data(inData['password'])
pyload = inData
#3-发送请求
resp = requests.post(url,data=pyload)
#4- 返回响应数据
return resp.json()
if __name__ == '__main__':
print('loginData被使用前>>> ', loginData)
res = login(loginData)
print('loginData使用后>>> ',loginData)
print(res)
"""
md5加密工具:
http://tool.chinaz.com/tools/md5.aspx
"""