接口認證:api
服務器的接口須要經過一個驗證機制,這個驗證機制能夠是session或token服務器
以session爲例。cookie
session存儲與服務器,一般用戶登陸後,服務器會把配套的sessionid發送給客戶端session
客戶端在下次請求服務器時會帶上這個sessionid,至關於拿了入場券post
服務器會驗證這個入場券是否有效url
驗證經過後纔會容許客戶端去訪問對應的接口內容對象
以後客戶端每發送一次請求都要帶上sessionidtoken
一樣服務器每次都會驗證其有效性接口
一般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信息