佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > Python中Selenium對(duì)Cookie的操作方法

Python中Selenium對(duì)Cookie的操作方法

熱門標(biāo)簽:銀行業(yè)務(wù) 美圖手機(jī) 鐵路電話系統(tǒng) 服務(wù)器配置 呼叫中心市場需求 網(wǎng)站文章發(fā)布 檢查注冊(cè)表項(xiàng) 智能手機(jī)

1、Cookie介紹

HTTP協(xié)議是無狀態(tài)的協(xié)議。一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會(huì)關(guān)閉,再次交換數(shù)據(jù)需要建立新的連接,這就意味著服務(wù)器無法從連接上跟蹤會(huì)話。也就是說即使第一次和服務(wù)器連接后并且登錄成功后,第二次請(qǐng)求服務(wù)器依然不能知道當(dāng)前請(qǐng)求是哪個(gè)用戶。舉個(gè)例子:用戶A購買了一件商品放入購物車內(nèi),當(dāng)再次購買商品時(shí),服務(wù)器已經(jīng)無法判斷該購買行為是屬于用戶A的會(huì)話,還是用戶B的會(huì)話了。要跟蹤該會(huì)話,必須引入一種機(jī)制。

什么是一次會(huì)話:

用戶打開瀏覽器訪問某個(gè)網(wǎng)站, 在這個(gè)網(wǎng)站上瀏覽任意頁面, 訪問完成后將瀏覽器關(guān)閉的過程稱為是一次會(huì)話。

  • Cookie的出現(xiàn)就是為了解決這個(gè)問題,第一次登錄后服務(wù)器后,如果服務(wù)器需要記錄該用戶狀態(tài),就使用Response向客戶端瀏覽器頒發(fā)一個(gè)Cookie,瀏覽器會(huì)把Cookie數(shù)據(jù)保存在本地。該用戶發(fā)送第二次請(qǐng)求的時(shí)候,就會(huì)自動(dòng)的把上次請(qǐng)求存儲(chǔ)的Cookie數(shù)據(jù)自動(dòng)的攜帶給服務(wù)器,服務(wù)器檢查該Cookie存儲(chǔ)name、value等信息,以此來辨認(rèn)用戶狀態(tài),服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容。
  • Cookie就相當(dāng)于是服務(wù)器給客戶端們頒發(fā)一個(gè)通行證,每人一個(gè),無論誰訪問都必須攜帶自己通行證。這樣服務(wù)器就能從通行證上確認(rèn)客戶身份,這就是Cookie的工作原理。
  • Cookie存儲(chǔ)的數(shù)據(jù)量有限,不同的瀏覽器有不同的存儲(chǔ)大小,但一般不超過4KB,因此使用Cookie只能存儲(chǔ)一些小量的數(shù)據(jù)。
  • Cookie的出現(xiàn)彌補(bǔ)HTTP協(xié)議無狀態(tài)的不足。但是Cookie是存儲(chǔ)在客戶端的,通過瀏覽器或者抓包工具很容易就能獲取到,所以非常不安全。

2、Session介紹

  • Session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務(wù)器上。客戶端瀏覽器訪問服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上。存儲(chǔ)在服務(wù)器的數(shù)據(jù)會(huì)更加的安全,不容易被竊取。客戶端瀏覽器再次訪問時(shí),只需要從該Session中查找該客戶的狀態(tài)就可以了。
  • 如果說Cookie機(jī)制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那么Session機(jī)制就是通過檢查服務(wù)器上的“客戶明細(xì)表”來確認(rèn)客戶身份。Session相當(dāng)于程序在服務(wù)器上建立的一份客戶檔案,客戶來訪的時(shí)候只需要查詢客戶檔案表就可以了。
  • Session存儲(chǔ)在服務(wù)器也有一定的弊端,就是會(huì)占用服務(wù)器的資源,但現(xiàn)在服務(wù)器已經(jīng)發(fā)展至今,存儲(chǔ)一些Session信息還是綽綽有余的。

3、Cookie工作原理圖解

如下圖所示:

提示:如果步驟5攜帶的是過期的cookie或者是錯(cuò)誤的cookie,那么將認(rèn)證失敗,返回至要求身份認(rèn)證頁面。

記錄Cookie的作用:

  1. 用戶第一次登陸時(shí),勾選下次直接登陸或者記住密碼,就是采用記錄Cookie實(shí)現(xiàn)的。
  2. Cookie內(nèi)記錄用戶名和密碼(加密)信息,只要請(qǐng)求時(shí)服務(wù)器收到Cookie,識(shí)別成功,默認(rèn)為已登陸。

4、Cookie內(nèi)容參數(shù)說明

參數(shù) 描述
name 必需。規(guī)定 Cookie的名稱。
value 必需。規(guī)定 Cookie的值。
expire 可選。規(guī)定 Cookie的有效期。
domain 可選。規(guī)定 Cookie的域名。
path 可選。規(guī)定 Cookie的服務(wù)器路徑。
secure 可選。規(guī)定是否通過安全的 HTTPS 連接來傳輸 Cookie。
httpOnly 可選。防止XSS攻擊(跨站腳本攻擊)

說明:

  • pathCookie的有效范圍,這個(gè)參數(shù)是在domain參數(shù)基礎(chǔ)上的有效范圍,如果path設(shè)置為”/”,那就是在整個(gè)domain都有效。
  • secureCookie是否僅通過安全的https,值為0或1。如果值為1,則Cookie只能在https連接上有效,默認(rèn)值為0,表示Cookiehttphttps連接上都有效。(0或1,也可表示Flase或True)
  • httpOnly:通過js腳本將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊(跨站腳本攻擊),這樣就增加了Cookie的安全性,即便是這樣,也不要將重要信息存入Cookie。

5、Selenium操作Cookie的API

webdriver可以讀取、添加和刪除Cookie信息。

webdriver操作Cookie的方法有:

操作 說明
get_cookies() 獲得所有Cookie信息(重點(diǎn))
add_cookie(cookie_dict) 添加Cookie,必須有name 和value 值(重點(diǎn))
get_cookie(name值) 返回指定name名稱的Cookie信息
delete_cookie(name) 刪除特定(部分)的Cookie信息
delete_all_cookies() 刪除所有Cookie信息

6、Selenium操作Cookie的示例

"""
1.學(xué)習(xí)目標(biāo):
    掌握selenium對(duì)cookie操作
2.語法
    2.1獲取所有cookie
        driver.get.cookies()
        返同列表格式字典類型 [{},{},{}]
    2.2添加cookie
        driver.add_cookie(參數(shù))
        參數(shù):字典格式{"name":"name值","value":"value值"}
3.需求
    實(shí)現(xiàn)selenium對(duì)cookie操作
"""
# 1.導(dǎo)入selenium
from selenium import webdriver
from time import sleep

# 2.打開瀏覽器
driver = webdriver.Chrome()

# 3.打開注冊(cè)A頁面
# 不打開一個(gè)頁面,cookie為[]。
url = "http://www.baidu.com/"
driver.get(url)

# 4.操作cookie
# 4.1 獲取cookie
cookies = driver.get_cookies()
for cookie in cookies:
    # 值打印cookie中的name和value
    print("%s -> %s" % (cookie['name'], cookie['value']))

print("=======================")
# 4.2 獲取一個(gè)cookie的指定屬性值
# 參數(shù)是一個(gè)cookie中name的屬性值
# 沒有找到返回None
print(driver.get_cookie("BAIDUID"))

print("=======================")
# 4.3 添加cookie
cookie = {"name": "key-aaaaaaa", "value": "value-aaaaaaa"}
driver.add_cookie(cookie)

# 添加后再次獲取
cookies = driver.get_cookies()
for cookie in cookies:
    print("%s -> %s" % (cookie['name'], cookie['value']))

print("=======================")
# 4.4 刪除指定cookie
# 根據(jù)name刪除
driver.delete_cookie("key-aaaaaaa")
# 刪除后再次獲取
cookies = driver.get_cookies()
for cookie in cookies:
    print("%s -> %s" % (cookie['name'], cookie['value']))

print("=======================")
# 4.5 刪除全部cookie
driver.delete_all_cookies()
print(driver.get_cookies())

# 5.關(guān)閉瀏覽器
sleep(2)
driver.quit()

參考:https://www.cnblogs.com/linguoguo/p/5106618.html

到此這篇關(guān)于Selenium對(duì)Cookie的操作 的文章就介紹到這了,更多相關(guān)Selenium Cookie操作 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解Python 使用 selenium 進(jìn)行自動(dòng)化測試或者協(xié)助日常工作
  • Python利用Selenium實(shí)現(xiàn)網(wǎng)站自動(dòng)簽到功能
  • Selenium+Python自動(dòng)化腳本環(huán)境搭建的全過程
  • 利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過程
  • python Selenium等待元素出現(xiàn)的具體方法
  • Python使用Selenium自動(dòng)進(jìn)行百度搜索的實(shí)現(xiàn)
  • python+opencv+selenium自動(dòng)化登錄郵箱并解決滑動(dòng)驗(yàn)證的問題
  • 用Python selenium實(shí)現(xiàn)淘寶搶單機(jī)器人
  • 教你用Python+selenium搭建自動(dòng)化測試環(huán)境
  • Python selenium的這三種等待方式一定要會(huì)!
  • Python爬蟲實(shí)戰(zhàn)之用selenium爬取某旅游網(wǎng)站
  • 教你如何使用Python selenium
  • python Web應(yīng)用程序測試selenium庫使用用法詳解

標(biāo)簽:樂山 新疆 長治 沈陽 紅河 河南 上海 滄州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python中Selenium對(duì)Cookie的操作方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    锡林郭勒盟| 达孜县| 昌黎县| 舟曲县| 隆回县| 沧源| 桂阳县| 太仆寺旗| 马尔康县| 黎城县| 灌阳县| 区。| 无锡市| 永仁县| 神池县| 云梦县| 绥阳县| 崇州市| 承德县| 抚顺县| 深泽县| 宁晋县| 凤庆县| 通海县| 修武县| 洞头县| 淮滨县| 原平市| 甘谷县| 建宁县| 伊吾县| 霍邱县| 青铜峡市| 夹江县| 怀安县| 英德市| 景东| 汪清县| 江都市| 新建县| 淮南市|