亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中Selenium對Cookie的使用方式

發布時間:2021-07-09 13:39:13 來源:億速云 閱讀:188 作者:chen 欄目:開發技術

本篇內容介紹了“Python中Selenium對Cookie的使用方式”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1、Cookie介紹

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

什么是一次會話:

用戶打開瀏覽器訪問某個網站, 在這個網站上瀏覽任意頁面, 訪問完成后將瀏覽器關閉的過程稱為是一次會話。

  • Cookie的出現就是為了解決這個問題,第一次登錄后服務器后,如果服務器需要記錄該用戶狀態,就使用Response向客戶端瀏覽器頒發一個Cookie,瀏覽器會把Cookie數據保存在本地。該用戶發送第二次請求的時候,就會自動的把上次請求存儲的Cookie數據自動的攜帶給服務器,服務器檢查該Cookie存儲namevalue等信息,以此來辨認用戶狀態,服務器還可以根據需要修改Cookie的內容。

  • Cookie就相當于是服務器給客戶端們頒發一個通行證,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務器就能從通行證上確認客戶身份,這就是Cookie的工作原理。

  • Cookie存儲的數據量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB,因此使用Cookie只能存儲一些小量的數據。

  • Cookie的出現彌補HTTP協議無狀態的不足。但是Cookie是存儲在客戶端的,通過瀏覽器或者抓包工具很容易就能獲取到,所以非常不安全。

2、Session介紹

  • Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。存儲在服務器的數據會更加的安全,不容易被竊取。客戶端瀏覽器再次訪問時,只需要從該Session中查找該客戶的狀態就可以了。

  • 如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那么Session機制就是通過檢查服務器上的“客戶明細表”來確認客戶身份。Session相當于程序在服務器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。

  • Session存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現在服務器已經發展至今,存儲一些Session信息還是綽綽有余的。

3、Cookie工作原理圖解

如下圖所示:

Python中Selenium對Cookie的使用方式

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

記錄Cookie的作用:

  1. 用戶第一次登陸時,勾選下次直接登陸或者記住密碼,就是采用記錄Cookie實現的。

  2. Cookie內記錄用戶名和密碼(加密)信息,只要請求時服務器收到Cookie,識別成功,默認為已登陸。

4、Cookie內容參數說明

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

說明:

  • pathCookie的有效范圍,這個參數是在domain參數基礎上的有效范圍,如果path設置為”/”,那就是在整個domain都有效。

  • secureCookie是否僅通過安全的https,值為0或1。如果值為1,則Cookie只能在https連接上有效,默認值為0,表示Cookiehttphttps連接上都有效。(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.學習目標:
    掌握selenium對cookie操作
2.語法
    2.1獲取所有cookie
        driver.get.cookies()
        返同列表格式字典類型 [{},{},{}]
    2.2添加cookie
        driver.add_cookie(參數)
        參數:字典格式{"name":"name值","value":"value值"}
3.需求
    實現selenium對cookie操作
"""
# 1.導入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的指定屬性值
# 參數是一個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
# 根據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.關閉瀏覽器
sleep(2)
driver.quit()

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

“Python中Selenium對Cookie的使用方式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

顺义区| 陇南市| 麻城市| 龙游县| 萨嘎县| 延安市| 福泉市| 桦南县| 昌黎县| 绥宁县| 鲁山县| 祁东县| 乌兰浩特市| 枣强县| 红安县| 图片| 山东省| 鄯善县| 镶黄旗| 河间市| 黄梅县| 越西县| 高台县| 鹤庆县| 仲巴县| 洞头县| 蚌埠市| 清原| 临沧市| 天门市| 方城县| 黄浦区| 论坛| 岳阳县| 南开区| 合川市| 双牌县| 博爱县| 怀安县| 荆州市| 融水|