濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Python接口自動(dòng)化之cookie、session應(yīng)用詳解

Python接口自動(dòng)化之cookie、session應(yīng)用詳解

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

在上一篇Python接口自動(dòng)化測(cè)試系列文章:Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求,介紹了post源碼,data、json參數(shù)應(yīng)用場(chǎng)景及實(shí)戰(zhàn)。

以下介紹cookie、session原理及在接口自動(dòng)化中的應(yīng)用。

HTTP 協(xié)議是一種無(wú)狀態(tài)協(xié)議,即每次服務(wù)端接收到客戶端的請(qǐng)求時(shí),都是一個(gè)全新的請(qǐng)求,服務(wù)器并不知道客戶端的歷史請(qǐng)求記錄;

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

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

一、cookie

1、cookie介紹

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

2、cookie原理

① Cookie技術(shù)會(huì)根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的一個(gè)叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。

② 客戶端再向服務(wù)器端發(fā)送請(qǐng)求的時(shí)候,客戶端會(huì)在請(qǐng)求報(bào)文中加入Cookie值后發(fā)送出去。服務(wù)器端會(huì)檢查客戶端發(fā)送的請(qǐng)求中有沒(méi)有Cookie值,然后對(duì)比服務(wù)器上的記錄,最后確定是哪一個(gè)客戶端,之前的信息狀態(tài)是什么。

這樣一來(lái),服務(wù)器就能夠分辨出發(fā)送請(qǐng)求的客戶端究竟是哪一個(gè)了。

二、session

1、session介紹

session是一種在服務(wù)端記錄用戶信息的技術(shù),是在無(wú)狀態(tài)的HTTP協(xié)議下,服務(wù)端記錄用戶狀態(tài)時(shí)用于標(biāo)識(shí)具體用戶的機(jī)制。它是在服務(wù)端保存的用來(lái)跟蹤用戶的狀態(tài)的數(shù)據(jù)結(jié)構(gòu),可以保存在文件、數(shù)據(jù)庫(kù)或者集群中。

2、session原理

Session是存放在服務(wù)器端、用來(lái)存放用戶數(shù)據(jù)的(類似于HashTable結(jié)構(gòu))。

當(dāng)瀏覽器第一次發(fā)送請(qǐng)求時(shí),服務(wù)器自動(dòng)生成了一個(gè)HashTable和一個(gè)Session ID用來(lái)唯一標(biāo)識(shí)這個(gè)HashTable,并將其通過(guò)響應(yīng)發(fā)送到瀏覽器。

當(dāng)瀏覽器第二次發(fā)送請(qǐng)求,會(huì)將前一次服務(wù)器響應(yīng)中的Session ID放在請(qǐng)求中一并發(fā)送到服務(wù)器上,服務(wù)器從請(qǐng)求中提取出Session ID,并和保存的所有Session ID進(jìn)行對(duì)比,找到這個(gè)用戶對(duì)應(yīng)的HashTable,以此來(lái)達(dá)到共享數(shù)據(jù)的目的。

三、cookie和session區(qū)別

1. 存儲(chǔ)位置不同:

Cookie是將用戶數(shù)據(jù)通過(guò)加密的方式保存在客戶端,大多數(shù)情況Cookie存儲(chǔ)在瀏覽器;Session是用于控制客戶端和服務(wù)端的連接,Session存儲(chǔ)在服務(wù)器;

2. 存儲(chǔ)容量不同:

單個(gè)Cookie保存的數(shù)據(jù)不得超過(guò)4kb,一個(gè)站點(diǎn)最多20個(gè)Cookie,Session一般情況下沒(méi)有上限,不過(guò)建議不要存放太多東西,否則影響性能;

3. 存取方式不同:

Cookie只能用ASCII字符串,通過(guò)編碼方式獲取Unicode字符或者二進(jìn)制數(shù)據(jù),不好存儲(chǔ)復(fù)雜的信息,而Session能存儲(chǔ)任何類型的數(shù)據(jù);

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

Cookie放在客戶端,可以進(jìn)行Cookie欺騙,所以不安全,Session放在服務(wù)端,更加安全;

5. 有效期不同:

Cookie可以設(shè)置屬性達(dá)到長(zhǎng)期有效,Session依賴于JSESSIONID的Cookie,Cookie JSESSIONID的過(guò)期時(shí)間默認(rèn)為-1,只需要關(guān)閉窗口Session就會(huì)失效,就算不依賴Cookie,用UrL重寫也不能完成,如果Session超時(shí)時(shí)間過(guò)長(zhǎng),容易導(dǎo)致內(nèi)存溢出;

6. 服務(wù)器壓力不同:

Cookie保存在本地,不存在服務(wù)端壓力,Session保存在服務(wù)端,每個(gè)用戶產(chǎn)生一個(gè)Session,當(dāng)訪問(wèn)增多,會(huì)比較占用服務(wù)器的性能,如果主要考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用Cookie。

現(xiàn)在有登錄、充值兩個(gè)接口,在未登錄時(shí),直接調(diào)用充值接口。

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

請(qǐng)求結(jié)果:提示請(qǐng)先登錄。

{'status': 0, 'code': None, 'data': None, 'msg': '抱歉,請(qǐng)先登錄。'}

這時(shí)候,今天的主角cookie和session閃亮登場(chǎng)了。

四、cookie應(yīng)用

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())
# 獲取響應(yīng)結(jié)果的cookies
cookies = login_res.cookies
print(cookies)
 # 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
# 充值接口請(qǐng)求時(shí)攜帶cookies
recharge_res = requests.post(url,data=payload,cookies=cookies)
print(recharge_res.json())

五、session應(yīng)用

import requests
 
# 登錄接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
# 創(chuàng)建session會(huì)話管理
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())

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

標(biāo)簽:海南 盤錦 南平 寧夏 漯河 大同 林芝 普洱

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python接口自動(dòng)化之cookie、session應(yīng)用詳解》,本文關(guān)鍵詞  Python,接口,自動(dòng)化,之,cookie,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python接口自動(dòng)化之cookie、session應(yīng)用詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python接口自動(dòng)化之cookie、session應(yīng)用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    保山市| 金寨县| 盐池县| 手机| 宕昌县| 宁陕县| 三都| 西吉县| 玉林市| 马尔康县| 杭锦后旗| 娱乐| 江口县| 木兰县| 正宁县| 伊川县| 柳州市| 凌海市| 平原县| 茂名市| 南丹县| 南木林县| 惠来县| 黑水县| 贡觉县| 大宁县| 天津市| 额尔古纳市| 大邑县| 平舆县| 溆浦县| 通城县| 海阳市| 民勤县| 大埔区| 美姑县| 讷河市| 阿克| 罗山县| 中山市| 南木林县|