selenium處理cookie問題實戰

1. cookie獲取不完整

需要進入的資損平臺(web)首頁,才會出現有效的ctoken等信息

1.1. 原因說明

未進入指定頁面而獲取的 cookie 與進入頁面后獲取的 cookie 可能會有一些差異,這取決于網站的具體實現和 cookie 的設置方式。

通常情況下,一些網站會在用戶進入頁面后生成一些特定的 cookie,這些 cookie 可能包含用戶會話信息、跟蹤信息等。因此,未進入指定頁面時獲取的 cookie 可能不包含這些信息。

另一方面,有些網站的 cookie 是在用戶訪問任意頁面時就會生成并存儲在瀏覽器中的。在這種情況下,未進入指定頁面時獲取的 cookie 與進入頁面后獲取的 cookie 可能沒有太大差異。

總的來說,獲取的 cookie 是否有差異取決于網站的具體實現和 cookie 的使用方式。如果您需要精確獲取特定頁面生成的 cookie 信息,最好在訪問該頁面后再獲取 cookie,以確保獲取到完整的信息

2. cookie數據解析異常

原始數據:

[{'domain': '.antdigital.com', 'httpOnly': False, 'name': 'ctoken', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'bigfish_ctoken_1965hjgh1k'}, {'domain': '.antdigital.com', 'httpOnly': False, 'name': 'authorization', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'hmac%200144145205-2%3AYjgzT1VyM0xMR1FIeEU1cHFXZjVhbGVFeWVkbE92blY%3D~0'}, {'domain': '.antdigital.com', 'expiry': 1748313361, 'httpOnly': True, 'name': 'receive-cookie-deprecation', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': '1'}, {'domain': '.antdigital.com', 'httpOnly': False, 'name': 'ALIPAYJSESSIONID', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'a4dgrBlrGO2LycGAp9ISLbKlhltzDJp8ternbase'}, {'domain': 'console.sofa.antdigital.com', 'expiry': 1716779163, 'httpOnly': True, 'name': 'acw_tc', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': '2f61f26f17167773639898915e1415a864af5bda3a434801717cf15188cbe4'}, {'domain': '.antdigital.com', 'expiry': 1732502161, 'httpOnly': False, 'name': 'UM_distinctid', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': '18fb7e7a1737e8-03debf79208018-26001c51-1fa400-18fb7e7a1747d6'}, {'domain': '.antdigital.com', 'httpOnly': False, 'name': '_CHIPS-ALIPAYJSESSIONID', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'a4dgrBlrGO2LycGAp9ISLbKlhltzDJp8ternbase'}]

2.1. json庫解析異常

data_list = json.loads(cookie)

    def get_token(self):# 獲取ctokenwith open("cookie.txt", "r", encoding="utf8") as file:# 讀取數據cookie = file.read()print(f"cookie的數據類型為:{type(cookie)}")print(f"cookie的數據為:{cookie}")# 添加雙引號修復屬性名cookie = cookie.replace("'", "\"")# 將字符串轉換為字典列表data_list = json.loads(cookie)

錯誤日志:

File "D:\Program Files\Python12\Lib\json\decoder.py", line 355, in raw_decoderaise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 44 (char 43)

2.2. 解決方案

data_list = ast.literal_eval(cookie)

說明:

使用 `ast.literal_eval()` 解析給定的字符串數據。如果數據格式符合 Python 表達式的規則,`ast.literal_eval()` 將能夠成功解析字符串并轉換為對應的數據結構

3. 使用cookie異常

獲取的 cookies 與 實際要使用的 cookies 格式會存在區別

  1. 獲取的cookies

  1. 使用的cookies

  1. 解決方案

需要重新手動組裝cookies:

從 `driver.get_cookies()` 獲取到的 cookies 轉換為請求頭(headers)中的 cookie 格式,你需要將每個 cookie 對象中的 `'name'` 和 `'value'` 鍵值對轉換為符合請求頭中 cookie 格式的形式

# 將 cookies 轉換為請求頭中的 cookie 格式
cookie_str = "; ".join([f"{cookie['name']}={cookie['value']}" for cookie in cookies])

獲取數據:

ctoken=bigfish_ctoken_1966236jjg; authorization=hmac%200144145205-2%3AWUttZTlldlNZT2prMU8wUDRJNGVqWkd1NVh3QTA1RGs%3D~0; receive-cookie-deprecation=1; ALIPAYJSESSIONID=BqeDLcccF1d50BvqmzG8KZ2D2Kwaxdg0ternbase; acw_tc=0a47329a17168095857613765e004ac76293e2b2a9afc04ba5901f2ca7fd41; UM_distinctid=18fb9d349b9135-0b5e7625d4afa6-26001c51-1fa400-18fb9d349bad4; _CHIPS-ALIPAYJSESSIONID=BqeDLcccF1d50BvqmzG8KZ2D2Kwaxdg0ternbase

歡迎關注公眾號,與Joker一起探索測試之道。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43213.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43213.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43213.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

x-mind沒有配置文件,可以自己創建文件修改內存

x-mind.ini 是 XMind 配置文件,用于自定義啟動選項。以下是一個完整的 x-mind.ini 文件示例。此配置假設你正在使用 Windows 系統并希望配置一些常見的啟動參數: -startup plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar --launcher.l…

query和params的區別是什么

query 和 params 是 Vue Router 中傳遞路由參數的兩種不同方式。它們的主要區別在于 URL 結構和獲取參數的方法。 1. params params 是用來傳遞路由路徑中的動態參數。這些參數在路由路徑中以冒號 (:) 表示。 路由配置: {path: /interviewApplication/:backpack…

NCCL源碼詳解6:通信拓撲識別感知構建 物理拓撲xml文件 ncclTopoGetSystem() 視頻教程

Nvidia NCCL如何構建物理拓撲 視頻教程在這: 2.2 NCCL源碼分析:物理拓撲識別感知xml通信topo構建 ncclTopoGetSystem()_嗶哩嗶哩_bilibili 一、ncclTopoGetSystem()拓撲構建 1.1 ncclTopoGetSystem()拓撲構建核心邏輯: 1、 嘗試從文件加…

【解決Windows11系統Windows Hello不能使用的問題】

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、Windows Hello是什么?二、使用步驟1.購買一個攝像頭2.開始配置 三、異常解決1.內置管理員不能使用2.沒找到合適的攝像頭3.攝像頭需要專用驅動4.…

原創作品——教育課程界面設計

教育行業UI界面設計需直觀易懂,確保學習者能迅速上手,減少認知負擔。布局清晰,導航便捷,功能按鈕和圖標設計應符合教育場景,直接支持學習目標的達成,促進高效學習體驗。 通過豐富的互動元素(如拖…

博途通訊筆記1:1200與1200之間S7通訊

目錄 一、添加子網連接二、創建PUT GET三、各個參數的意義 一、添加子網連接 二、創建PUT GET 三、各個參數的意義

代碼隨想錄(day1)二分法

if語句的基本語法 if 要判斷的條件: 條件成立的時候&#xff0c;要做的事舉例&#xff1a; if nums[middle]<target:leftmiddle1 while語句的基本語法&#xff1a; while 判斷條件(condition)&#xff1a;執行語句(statements)舉例&#xff1a; while left<right:midd…

docker安裝mysql8.0.23

拉取鏡像 docker pull mysql:8.0.23 創建掛載文件 mkdir -p /home/docker/mysql/conf mkdir -p /home/docker/mysql/data mkdir -p /home/docker/mysql/logcd /home/docker/mysql/conf touch my.cnf#授權 chmod 777 -R /home/docker/mysql/conf chmod 777 -R /home/docker/m…

C++類的成員:靜態成員變量、靜態成員函數、非靜態成員變量、非靜態成員函數

(1) 類的成員 A.What&#xff08;什么是類的成員&#xff09; 是組成類的基本構建&#xff0c;包含數據成員、靜態成員和 成員函數 B.Which&#xff08;類的成員有哪些&#xff09; 數據成員&#xff1a; 用于存儲與類的對象相關的數據&#xff0c;例如整數、浮點數、字符串、…

2通道音頻ADC解碼芯片ES7243L、ES7243E、ES7243,用于低成本實現模擬麥克風轉換為IIS數字話筒

前言&#xff1a; 音頻解碼芯片某創參考價格&#xff1a; ES7243L 500&#xff1a;&#xffe5;1.36 / 個 ES7243E 500&#xff1a;&#xffe5;1.66 / 個 ES7243 500&#xff1a; &#xffe5;1.91 / 個 其中ES7243L工作電壓為1.8V&#xff0c;與其他兩款的3.3V工作電壓不同&…

ESP32-C3模組上跑通AES-GCM(2)

接前一篇文章:ESP32-C3模組上跑通AES-GCM(1) 本文內容參考: mbedtls學習筆記 AES GCM_aes128 gcm的aad是什么-CSDN博客 https://www.cnblogs.com/testlearn/p/16547583.html 對稱加密和非對稱加密,一文講解明白!-CSDN博客 深入理解高級加密標準(Advanced Encryption…

日本IT-SIER/SES的區別詳情、契約形態等

一、SLER 主要的服務內容就是“幫客人開發系統或是各種APP&#xff0c;并在指定期間內交貨&#xff0c;交貨后也會持續進行運維等售后服務”。 客人很廣泛&#xff0c;小到普通的服務業商家&#xff08;餐飲店/服飾店/美容業/電商&#xff09;大到各種公共/政府機關&#xff…

【面試題】串聯探針和旁掛探針有什么區別?

在網絡安全領域中&#xff0c;串聯探針和旁掛探針&#xff08;通常也被稱為旁路探針&#xff09;是兩種不同部署方式的監控設備&#xff0c;它們各自具有獨特的特性和應用場景。以下是它們之間的主要區別&#xff1a; 部署方式 串聯探針&#xff1a;串聯探針一般通過網關或者…

`padding`、`border`、`width`、`height` 和 `display` 這些 CSS 屬性的作用

盒模型中的屬性 padding&#xff08;內邊距&#xff09; padding 用于控制元素內容與邊框之間的空間&#xff0c;可以為元素的每個邊&#xff08;上、右、下、左&#xff09;分別設置內邊距。內邊距的單位可以是像素&#xff08;px&#xff09;、百分比&#xff08;%&#xf…

Lambda架構與Kappa架構的特性對比

一個大數據系統架構的設計思想很大程度上受到當時技術條件和思維模式的限制。Lambda架構將批處理層和速度層分為兩層&#xff0c;分別進行離線數據處理和實時數據處理&#xff0c;這樣設計的根本原因在于&#xff0c;Lambda提出的初期是在公司中進行小范圍的業務運用&#xff0…

從Java開發者到.NET Core初級工程師學習路線:C#語言基礎

1. C#語言基礎 1.1 C#語法概覽 歡迎來到C#的世界&#xff01;對于剛從Java轉過來的開發者來說&#xff0c;你會發現C#和Java有很多相似之處&#xff0c;但C#也有其獨特的魅力和強大之處。讓我們一起來探索C#的基本語法&#xff0c;并比較一下與Java的異同。 程序結構 C#程序…

MySQL-數據庫管理:優化、安全、合規與遷移的全面解析

1. 數據庫設計 1.1 需求分析 數據庫設計的第一步是深入理解應用的需求。這通常涉及到與項目團隊&#xff08;包括產品經理、開發者、業務分析師等&#xff09;的緊密合作&#xff0c;以確保數據庫設計能夠準確地反映業務需求。需求分析階段的關鍵活動包括&#xff1a; 收集信…

第一百四十九節 Java數據類型教程 - Java子字符串、字符串轉換

Java數據類型教程 - Java子字符串 獲取子字符串 我們可以使用substring()方法來獲取字符串的子部分。 我們可以將開始索引作為參數&#xff0c;并返回一個從開始索引開始到字符串結尾的子串。 我們還可以將開始索引和結束索引作為參數。 它返回從開始索引開始的子字符串和小…

linux高級編程(文件I/O)

標準I/O與文件I/O的區別&#xff1a; 文件操作: 緩存 操作對象 具體操作 標準IO 全緩存/行緩存 文件指針(流指針)FILE * 1.打開 --fopen 2.讀寫 …

Windows右鍵沒有新建Word、PPT與Excel的解決方法

本文介紹在Windows電腦中&#xff0c;右鍵與資源管理器的“新建”選項中&#xff0c;都沒有新建Word、PPT或Excel文件的解決方法。 最近&#xff0c;發現一臺重裝了系統與Office的電腦中&#xff0c;無論是桌面上與資源管理器中的右鍵&#xff0c;還是資源管理器左側頂部的“新…