用python代码实现session、token鉴权
在实现之前,需要在pychram安装requests库:pip install requests
特别说明:post方法的参数
"""
post参数:
data参数:字典类型,默认content-type为application/x-www-from-urlencode
json参数:字典类型,默认content-type为application/json格式
其他的content-type都可以使用data参数,但是data参数类型就不是字典了
"""
一、session鉴权
requests库支持session鉴权,request中有一个session类,session类会自动带上cookie,所以在session鉴权中,无需手动在请求头中添加cookie
代码实现:课堂派旧版本(session鉴权方式)
import requests import json session=requests.Session()#实例化一个会话对象 url='https://v4.ketangpai.com/UserApi/login' #data为请求参数,旧版本的课堂派Content-Type:application/x-www-from-urlencode,表单类型 data={ 'email':'13550457423', 'password':'zx001204', 'remember':'0' } resp=session.post(url,data=data)#返回一个response对象 print(resp.json())#输出响应json
(以上json是经过输出美化了的)美化代码如下:
a=resp.text j = json.loads(a)#json.loads()用于将str类型的数据转成dict。 json_dicts = json.dumps(j,indent=4,ensure_ascii=False) print(json_dicts)
""" 登录成功后,由于session会自动带上cookie,所以无需加上cookie """ """ 访问isvip接口,判断登录用户是否为vip 这是一个get方法,没有参数 """ isvip_url='https://v4.ketangpai.com/VipApi/isVip' resp_isvip=session.get(isvip_url) print(resp_isvip.json())
二、token鉴权
token鉴权不会自动带上token值,所以需要我们手动获取token
代码实现:课堂派新版
import requests #登录,拿到token。 url='https://openapiv5.ketangpai.com//UserApi/login' data={ "email":"13550457423", "password":"zx001204", "remember":"0", "code":"", "mobile":"", "type":"login", "reqtimestamp":1648015981746 } resp=requests.post(url,json=data)#这里是post方法,请求体为json resp_dict=resp.json() print(resp_dict) token=resp_dict['data']['token']#拿到token print(token)
""" 拿到token后,调用getUserBasinInfo接口 getUserBasinInfo为post方法 """ getUserBasinInfo_url='https://openapiv5.ketangpai.com//UserApi/getUserBasinInfo' getUserBasinInfo_data={"reqtimestamp":1648015982590}#请求体 getUserBasinInfo_header={'token':token}#需要加到请求头的数据 getUserBasinInfo_resp=requests.post(getUserBasinInfo_url,json=getUserBasinInfo_data,headers=getUserBasinInfo_header) print(getUserBasinInfo_resp.json())