python接口自動化5-session關聯

前言

咱們不難發現瀏覽器中存在着cookie緩存等,但咱們在python中若是像瀏覽器這樣的緩存,咱們就很難的須要關聯cookie或會話了。html

但python的requests庫,就封裝了Session方法、Session類實現會話對象。就比如如是python中的瀏覽器。python

1、Cookie 與 Session 的區別

一、Cookie,也用複數Cookies,就是爲了辨別用戶身份、進行 Session 跟蹤而儲存在用戶本地終端上的數據,一般要加密,而Cookie數據存放在客戶的瀏覽器上;瀏覽器

二、Cookie保存在客戶端本地,最大是4kb,key、value形式的字典;緩存

三、Session:會話控制,或者會話對象,Session對象存儲特定用戶會話所需的屬性及配置信息;服務器

四、Session由服務器端生成,響應給客戶端,客戶端每次帶上Session,就能夠跨請求,至關於身份識別;cookie

不管是基於Session的仍是基於Cookie的認證方式,都須要客戶端上傳標識,都須要服務端下發這個標識,而且對這個標識進行加密。session

雖然加密,可是不法之人一旦拿到這個標識仍是能夠進行一系列非法操做,因此這個標識裏邊最好能加上來源IP和過時時間這些屬性,再配置上https,能夠更加有效的保護整個認證流程和數據。post

2、禪道登陸實例

一、正常瀏覽器操做登陸-抓包,請求頭部信息有個cookies,以下標紅色字爲登陸必傳的cookies的token,抓包數據以下。測試

cookies = Cookie: lang=zh-cn; theme=default; keepLogin=on; za=admin; lastProduct=1; preBranch=0; preProductID=1; preCaseLibID=1; lastCaseLib=1; libCaseModule=2; caseModule=0; checkedItem=2%2C1; zp=d8486c87280cdfe6c3f4e53b44612c0ad486aa2f; windowWidth=1920; windowHeight=968; csrftoken=WAUVNHlXBnWmPfBPdQoK80PLq9NJcJcR6Ew1KIHBfht4Cs1Z0fhaJFn7LDdNnRt3; zentaosid=h6r0cho8eiq4na767vgjcan886加密

 二、fiddler 斷點將cookies 刪除再發送請求。

以下圖一,斷點已將cookies傳的參數刪除,接下來容許發送。圖二,明顯發現登陸沒有成功,沒有到達禪道-個人地盤這個html的返回。

由此咱們能知道,若是在接口測試中,咱們沒能自動關聯cookies與session的話會很是不方便。

 

 三、沒有關聯session、cookies,明顯登陸沒有成功。

 四、requests.session() 方法能作到控制會話。session關聯後登陸成功了!

import requests
s = requests.session()      # session() 控制會話
print(s.cookies)            # 沒請求前cookies爲空

url = 'http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html'
par = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=%2Fzentao%2F'
r = s.post(url, params=par)
# 登陸後查看 cookies
print(s.cookies)

r1 = s.get('http://127.0.0.1:81/zentao/my/')  # 斷言
print(r1.content.decode('utf-8'))

 requests 庫是否是很簡單的讓session關聯了呢?學會了嗎?歡迎來QQ交流羣:482713805

相關文章
相關標籤/搜索