Python中Selenium對Cookie的操作方法
1、Cookie介紹
HTTP協(xié)議是無狀態(tài)的協(xié)議。一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會關(guān)閉,再次交換數(shù)據(jù)需要建立新的連接,這就意味著服務(wù)器無法從連接上跟蹤會話。也就是說即使第一次和服務(wù)器連接后并且登錄成功后,第二次請求服務(wù)器依然不能知道當前請求是哪個用戶。舉個例子:用戶A購買了一件商品放入購物車內(nèi),當再次購買商品時,服務(wù)器已經(jīng)無法判斷該購買行為是屬于用戶A的會話,還是用戶B的會話了。要跟蹤該會話,必須引入一種機制。
什么是一次會話:
用戶打開瀏覽器訪問某個網(wǎng)站, 在這個網(wǎng)站上瀏覽任意頁面, 訪問完成后將瀏覽器關(guān)閉的過程稱為是一次會話。
Cookie
的出現(xiàn)就是為了解決這個問題,第一次登錄后服務(wù)器后,如果服務(wù)器需要記錄該用戶狀態(tài),就使用Response
向客戶端瀏覽器頒發(fā)一個Cookie
,瀏覽器會把Cookie
數(shù)據(jù)保存在本地。該用戶發(fā)送第二次請求的時候,就會自動的把上次請求存儲的Cookie
數(shù)據(jù)自動的攜帶給服務(wù)器,服務(wù)器檢查該Cookie
存儲name
、value
等信息,以此來辨認用戶狀態(tài),服務(wù)器還可以根據(jù)需要修改Cookie
的內(nèi)容。Cookie
就相當于是服務(wù)器給客戶端們頒發(fā)一個通行證,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務(wù)器就能從通行證上確認客戶身份,這就是Cookie
的工作原理。Cookie
存儲的數(shù)據(jù)量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB,因此使用Cookie
只能存儲一些小量的數(shù)據(jù)。Cookie
的出現(xiàn)彌補HTTP協(xié)議無狀態(tài)的不足。但是Cookie
是存儲在客戶端的,通過瀏覽器或者抓包工具很容易就能獲取到,所以非常不安全。
2、Session介紹
Session
是另一種記錄客戶狀態(tài)的機制,不同的是Cookie
保存在客戶端瀏覽器中,而Session
保存在服務(wù)器上??蛻舳藶g覽器訪問服務(wù)器的時候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上。存儲在服務(wù)器的數(shù)據(jù)會更加的安全,不容易被竊取??蛻舳藶g覽器再次訪問時,只需要從該Session
中查找該客戶的狀態(tài)就可以了。- 如果說
Cookie
機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那么Session
機制就是通過檢查服務(wù)器上的“客戶明細表”來確認客戶身份。Session
相當于程序在服務(wù)器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。 Session
存儲在服務(wù)器也有一定的弊端,就是會占用服務(wù)器的資源,但現(xiàn)在服務(wù)器已經(jīng)發(fā)展至今,存儲一些Session
信息還是綽綽有余的。
3、Cookie工作原理圖解
如下圖所示:
提示:如果步驟5攜帶的是過期的cookie或者是錯誤的cookie,那么將認證失敗,返回至要求身份認證頁面。
記錄Cookie的作用:
- 用戶第一次登陸時,勾選下次直接登陸或者記住密碼,就是采用記錄
Cookie
實現(xiàn)的。 Cookie
內(nèi)記錄用戶名和密碼(加密)信息,只要請求時服務(wù)器收到Cookie
,識別成功,默認為已登陸。
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攻擊(跨站腳本攻擊) |
說明:
path
:Cookie
的有效范圍,這個參數(shù)是在domain
參數(shù)基礎(chǔ)上的有效范圍,如果path
設(shè)置為”/”
,那就是在整個domain
都有效。secure
:Cookie
是否僅通過安全的https,值為0或1。如果值為1,則Cookie
只能在https
連接上有效,默認值為0,表示Cookie
在http
和https
連接上都有效。(0或1,也可表示Flase或True)httpOnly
:通過js
腳本將無法讀取到Cookie
信息,這樣能有效的防止XSS攻擊(跨站腳本攻擊),這樣就增加了Cookie
的安全性,即便是這樣,也不要將重要信息存入Cookie
。
5、Selenium操作Cookie的API
webdriver
可以讀取、添加和刪除Cookie
信息。
webdriver
操作Cookie
的方法有:
操作 | 說明 |
---|---|
get_cookies() | 獲得所有Cookie信息(重點) |
add_cookie(cookie_dict) | 添加Cookie,必須有name 和value 值(重點) |
get_cookie(name值) | 返回指定name名稱的Cookie信息 |
delete_cookie(name) | 刪除特定(部分)的Cookie信息 |
delete_all_cookies() | 刪除所有Cookie信息 |
6、Selenium操作Cookie的示例
""" 1.學(xué)習(xí)目標: 掌握selenium對cookie操作 2.語法 2.1獲取所有cookie driver.get.cookies() 返同列表格式字典類型 [{},{},{}] 2.2添加cookie driver.add_cookie(參數(shù)) 參數(shù):字典格式{"name":"name值","value":"value值"} 3.需求 實現(xiàn)selenium對cookie操作 """ # 1.導(dǎo)入selenium from selenium import webdriver from time import sleep # 2.打開瀏覽器 driver = webdriver.Chrome() # 3.打開注冊A頁面 # 不打開一個頁面,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 獲取一個cookie的指定屬性值 # 參數(shù)是一個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對Cookie的操作 的文章就介紹到這了,更多相關(guān)Selenium Cookie操作 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解Python 使用 selenium 進行自動化測試或者協(xié)助日常工作
- Python利用Selenium實現(xiàn)網(wǎng)站自動簽到功能
- Selenium+Python自動化腳本環(huán)境搭建的全過程
- 利用Python+Selenium破解春秋航空網(wǎng)滑塊驗證碼的實戰(zhàn)過程
- python Selenium等待元素出現(xiàn)的具體方法
- Python使用Selenium自動進行百度搜索的實現(xiàn)
- python+opencv+selenium自動化登錄郵箱并解決滑動驗證的問題
- 用Python selenium實現(xiàn)淘寶搶單機器人
- 教你用Python+selenium搭建自動化測試環(huán)境
- Python selenium的這三種等待方式一定要會!
- Python爬蟲實戰(zhàn)之用selenium爬取某旅游網(wǎng)站
- 教你如何使用Python selenium
- python Web應(yīng)用程序測試selenium庫使用用法詳解
相關(guān)文章
在Python中關(guān)于使用os模塊遍歷目錄的實現(xiàn)方法
今天小編就為大家分享一篇在Python中關(guān)于使用os模塊遍歷目錄的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python Flask自定義URL路由參數(shù)過濾器的方法詳解
Flask是一個輕量級的Python Web應(yīng)用框架,它允許開發(fā)者以一種簡潔明了的方式來構(gòu)建Web應(yīng)用,Flask自定義URL的主要功能在于使得開發(fā)者能夠通過簡單的路由規(guī)則來自定義應(yīng)用程序的URL結(jié)構(gòu),本文給大家介紹了Python Flask自定義URL路由參數(shù)過濾器的方法,需要的朋友可以參考下2024-07-07Python通過四大 AutoEDA 工具包快速產(chǎn)出完美數(shù)據(jù)報告
在三年前,我們做數(shù)據(jù)競賽或者數(shù)據(jù)建模類的項目時,前期我們會耗費較多的時間去分析數(shù)據(jù),但現(xiàn)在非常多擅長數(shù)據(jù)分析的大師們已經(jīng)將我們平時??吹臄?shù)據(jù)方式進行了集成,開發(fā)了很多AutoEDA的工具包。可以幫助我們節(jié)省大量時間2021-11-11Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)多輸入多輸出通道
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中pytorch神經(jīng)網(wǎng)絡(luò)多輸入多輸出通道的詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10python Boltons庫實用功能探索(深度復(fù)制類型檢查重試機制)
這篇文章主要為大家介紹了python Boltons庫實用功能探索包含深度復(fù)制類型檢查重試機制及數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01Python網(wǎng)絡(luò)爬蟲項目:內(nèi)容提取器的定義
本篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲項目,這能有效的節(jié)省程序員的時間,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10Tensorflow2.4從頭訓(xùn)練Word?Embedding實現(xiàn)文本分類
這篇文章主要為大家介紹了Tensorflow2.4從頭訓(xùn)練Word?Embedding實現(xiàn)文本分類,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01