用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())