接口认证:
服务器的接口需要通过一个验证机制,这个验证机制可以是session或token
以session为例。
session存储与服务器,通常用户登录后,服务器会把配套的sessionid发送给客户端
客户端在下次请求服务器时会带上这个sessionid,相当于拿了入场券
服务器会验证这个入场券是否有效
验证通过后才会允许客户端去访问对应的接口内容
之后客户端每发送一次请求都要带上sessionid
同样服务器每次都会验证其有效性
通常http协议中,sessionid是放在cookies这个请求头里面
如何获取sessionid:两种方法
① 通过登录接口获取Set-Cookie请求头
resp = requests.post(url, data=payload) # 首先获取到响应对象resp
cookie = resp.headers['Set-Cookie'] # 然后获取到请求头中Set-Cookie的值
sessionid = cookie.split(';')[0].split('=')[1] # 最后用字符串分割法获取sessionid
② 通过登录接口返回的response对象直接获取
resp = requests.post(url, data=payload)
cookies = resp.cookies # 直接获取到cookie信息
sessionid = cookies['sessionid'] # 然后从cookie中取到sessionid的值
如何添加cookie方法:三种方法
① 直接添加到cookie请求头里
h1 = {'Cookie': 'sessionid=imk4esz7jep90gcbt3oo790ex3srt5dc'}
requests.get(url, headers=h1, params=payload)
② 直接告诉requests,让它帮我添加添加
cookie = {'Cookie': 'sessionid=imk4esz7jep90gcbt3oo790ex3srt5dc'}
requests.get(url, cookies=cookie, params=payload)
③ 登录接口包含了cookies信息,可以直接获取
payload = {'username': 'xxxx', 'password': 'xxxx'}
resp1 = requests.post('http://localhost/api/mgr/loginReq', data=payload) # 获取到响应对象resp1 里面包含了cookies信息
resp2 = requests.get('http://localhost/api/mgr/sq_mgr/', cookies=resp1.cookies, params=payload) # 在做另一个接口请求时,直接获取登录接口中的cookies信息