主頁 > 知識庫 > Python接口自動化之cookie、session應用詳解

Python接口自動化之cookie、session應用詳解

熱門標簽:湛江智能外呼系統(tǒng)廠家 ai電話機器人哪里好 ai電銷機器人源碼 宿遷星美防封電銷卡 地圖標注審核表 外呼并發(fā)線路 西藏房產智能外呼系統(tǒng)要多少錢 長沙高頻外呼系統(tǒng)原理是什么 百度地圖標注沒有了

在上一篇Python接口自動化測試系列文章:Python接口自動化之淺析requests模塊post請求,介紹了post源碼,data、json參數應用場景及實戰(zhàn)。

以下介紹cookie、session原理及在接口自動化中的應用。

HTTP 協議是一種無狀態(tài)協議,即每次服務端接收到客戶端的請求時,都是一個全新的請求,服務器并不知道客戶端的歷史請求記錄;

Session 和 Cookie 的主要目的就是為了彌補 HTTP 的無狀態(tài)特性。

如果我們測試的接口有依賴關系怎么辦呢(比如購物支付時,需要先登錄),這時我們就要用到cookie和session技術來保持客戶端與服務器端連接的狀態(tài)。

一、cookie

1、cookie介紹

cookie是服務器發(fā)送到用戶瀏覽器并保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發(fā)起請求時被攜帶并發(fā)送到服務器上。通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態(tài)。

2、cookie原理

① Cookie技術會根據從服務器端發(fā)送的響應報文內的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。

② 客戶端再向服務器端發(fā)送請求的時候,客戶端會在請求報文中加入Cookie值后發(fā)送出去。服務器端會檢查客戶端發(fā)送的請求中有沒有Cookie值,然后對比服務器上的記錄,最后確定是哪一個客戶端,之前的信息狀態(tài)是什么。

這樣一來,服務器就能夠分辨出發(fā)送請求的客戶端究竟是哪一個了。

二、session

1、session介紹

session是一種在服務端記錄用戶信息的技術,是在無狀態(tài)的HTTP協議下,服務端記錄用戶狀態(tài)時用于標識具體用戶的機制。它是在服務端保存的用來跟蹤用戶的狀態(tài)的數據結構,可以保存在文件、數據庫或者集群中。

2、session原理

Session是存放在服務器端、用來存放用戶數據的(類似于HashTable結構)。

當瀏覽器第一次發(fā)送請求時,服務器自動生成了一個HashTable和一個Session ID用來唯一標識這個HashTable,并將其通過響應發(fā)送到瀏覽器。

當瀏覽器第二次發(fā)送請求,會將前一次服務器響應中的Session ID放在請求中一并發(fā)送到服務器上,服務器從請求中提取出Session ID,并和保存的所有Session ID進行對比,找到這個用戶對應的HashTable,以此來達到共享數據的目的。

三、cookie和session區(qū)別

1. 存儲位置不同:

Cookie是將用戶數據通過加密的方式保存在客戶端,大多數情況Cookie存儲在瀏覽器;Session是用于控制客戶端和服務端的連接,Session存儲在服務器;

2. 存儲容量不同:

單個Cookie保存的數據不得超過4kb,一個站點最多20個Cookie,Session一般情況下沒有上限,不過建議不要存放太多東西,否則影響性能;

3. 存取方式不同:

Cookie只能用ASCII字符串,通過編碼方式獲取Unicode字符或者二進制數據,不好存儲復雜的信息,而Session能存儲任何類型的數據;

4. 隱私策略/安全性不同:

Cookie放在客戶端,可以進行Cookie欺騙,所以不安全,Session放在服務端,更加安全;

5. 有效期不同:

Cookie可以設置屬性達到長期有效,Session依賴于JSESSIONID的Cookie,Cookie JSESSIONID的過期時間默認為-1,只需要關閉窗口Session就會失效,就算不依賴Cookie,用UrL重寫也不能完成,如果Session超時時間過長,容易導致內存溢出;

6. 服務器壓力不同:

Cookie保存在本地,不存在服務端壓力,Session保存在服務端,每個用戶產生一個Session,當訪問增多,會比較占用服務器的性能,如果主要考慮到減輕服務器性能方面,應當使用Cookie。

現在有登錄、充值兩個接口,在未登錄時,直接調用充值接口。

import requests
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = requests.post(url,data=payload)
print(recharge_res.json())

請求結果:提示請先登錄。

{'status': 0, 'code': None, 'data': None, 'msg': '抱歉,請先登錄。'}

這時候,今天的主角cookie和session閃亮登場了。

四、cookie應用

import requests
 # 登錄接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
login_res = requests.post(url,data=payload)
print(login_res.json())
# 獲取響應結果的cookies
cookies = login_res.cookies
print(cookies)
 # 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
# 充值接口請求時攜帶cookies
recharge_res = requests.post(url,data=payload,cookies=cookies)
print(recharge_res.json())

五、session應用

import requests
 
# 登錄接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
# 創(chuàng)建session會話管理
session = requests.session()
login_res = session.post(url,data=payload)
print(login_res.json())
 
# 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = session.post(url,data=payload)
print(recharge_res.json())

到此這篇關于Python接口自動化之cookie、session應用詳解的文章就介紹到這了,更多相關Python接口自動化cookie、session應用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:海南 盤錦 南平 寧夏 漯河 大同 林芝 普洱

巨人網絡通訊聲明:本文標題《Python接口自動化之cookie、session應用詳解》,本文關鍵詞  Python,接口,自動化,之,cookie,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python接口自動化之cookie、session應用詳解》相關的同類信息!
  • 本頁收集關于Python接口自動化之cookie、session應用詳解的相關信息資訊供網民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章