Selenium配合Cookies實現網頁免登錄

文章目錄

  • 前言
  • 1 方案一:使用Chrome用戶數據目錄
  • 2 方案二:手動獲取并保存Cookies,后續使用保存的Cookies
  • 3 注意事項


前言

  • 在進行使用Selenium進行爬蟲、網頁自動化操作時,登錄往往是一個必須解決的問題,但是Selenium每次打開的瀏覽器默認是不攜帶用戶數據的,所以每次都需要手動登錄。本文將詳細介紹如何使用Selenium配合Cookies實現網頁的自動登錄功能,以鏈家網站為例進行講解。

  • 實現思路

    1. 使用本地保存的Chrome用戶數據目錄
    2. 先手動登錄一次獲取并保存Cookies,后續使用保存的Cookies

1 方案一:使用Chrome用戶數據目錄

  • 思想:這種方案的核心是直接使用本地Chrome瀏覽器的用戶數據,包括已保存的登錄狀態和Cookie信息。

  • 代碼實現(代碼執行之前先保證手動正常打開網站時,網站是登陸了的,不然使用的用戶數據也是沒有登陸的,沒有用)

from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
# 設置用戶數據目錄
options.add_argument("--user-data-dir=C:/Users/L/AppData/Local/Google/Chrome/User Data")
# 禁用自動化提示
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 后續操作
# ...
  • 核心代碼:
options.add_argument("--user-data-dir=C:/Users/L/AppData/Local/Google/Chrome/User Data")

該代碼的作用是設置Chrome瀏覽器的用戶數據目錄(C:/Users/L/AppData/Local/Google/Chrome/User Data),使得Selenium可以直接使用本地Chrome瀏覽器的用戶數據,包括已保存的登錄狀態和Cookie信息。不過應注意用戶數據目錄隨操作系統、用戶名等不同而不同,需要根據實際情況進行調整。

  • 不同操作系統的數據目錄如下:

    • Windows: C:/Users/用戶名/AppData/Local/Google/Chrome/User Data
    • macOS: ~/Library/Application Support/Google/Chrome/Profile 1
    • Linux: ~/.config/google-chrome/Default
  • 優點

    • 實現簡單,不需要手動處理Cookie,代碼量少
    • 可以直接使用本地瀏覽器的所有配置
  • 缺點

    • 依賴本地Chrome瀏覽器配置
    • 可能存在跨設備兼容性問題
    • 需要指定正確的用戶數據目錄路徑

2 方案二:手動獲取并保存Cookies,后續使用保存的Cookies

  • 思想:這種方案的核心是先通過手動登錄獲取網站的Cookies信息,將其保存到本地文件,后續使用時直接讀取并應用這些Cookies來實現自動登錄。

  • 代碼實現(第一步:獲取Cookies)

import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 等待手動登錄
input("請登錄后按回車繼續...")# 獲取cookie并保存
cookies = browser.get_cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f, indent=4)# 關閉瀏覽器
browser.quit()

這一步在瀏覽器打開后網頁是沒有登錄的,需要我們手動按照網頁要求進行登錄,登錄完成后命令行回車,程序獲取Cookies后保存到本地文件,結束程序。

  • 代碼實現(第二步:使用Cookies實現免登錄)
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 讀取并添加cookie
with open("cookies.json", "r") as f:cookies = json.load(f)
for cookie in cookies:browser.add_cookie(cookie)# 刷新頁面,完成登錄
browser.refresh()# 后續操作
# ...

這一步代碼是讀取保存的Cookies,并將其添加到瀏覽器中,完成自動登錄。

  • 核心代碼:
# 步驟一:獲取并保存Cookies
cookies = browser.get_cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f, indent=4)# 步驟二:讀取并使用Cookies
with open("cookies.json", "r") as f:cookies = json.load(f)
for cookie in cookies:browser.add_cookie(cookie)

這段代碼展示了Cookies的獲取、保存和使用過程。需要注意的是,Cookies通常都有有效期,過期后需要重新獲取。

  • 優點
    • 可跨設備使用,便于部署
    • Cookie可以保存和復用
    • 實現更靈活,可以針對不同網站保存不同的Cookie
  • 缺點
    • 需要先手動登錄獲取Cookie
    • Cookie可能會過期,需要定期更新
    • 實現步驟相對較麻煩

3 注意事項

  1. ChromeDriver版本要與Chrome瀏覽器版本匹配
  2. Cookie有效期有限,需要定期更新
  3. 不同網站的Cookie獲取方式可能不同
  4. 注意Cookie的安全存儲,避免泄露
  5. 建議添加異常處理機制

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

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

相關文章

計算機畢業設計Python+知識圖譜大模型AI醫療問答系統 健康膳食推薦系統 食譜推薦系統 醫療大數據 機器學習 深度學習 人工智能 爬蟲 大數據畢業設計

溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 作者簡介:Java領…

關于el-table翻頁后序號列遞增的組件封裝

需求說明: 項目中經常會用到的一個場景,表格第一列顯示序號(1、2、3...),但是在翻頁后要遞增顯示序號,例如10、11、12(假設一頁顯示10條數據),針對這種情況,封…

Elasticsearch的索引生命周期管理

目錄 說明零、參考一、ILM的基本概念二、ILM的實踐步驟Elasticsearch ILM策略中的“最小年齡”是如何計算的?如何監控和調整Elasticsearch ILM策略的性能? 1. **監控性能**使用/_cat/thread_pool API基本請求格式請求特定線程池的信息響應內容 2. **調整…

AI大模型開發原理篇-3:詞向量和詞嵌入

簡介 詞向量是用于表示單詞意義的向量, 并且還可以被認為是單詞的特征向量或表示。 將單詞映射到實向量的技術稱為詞嵌入。在實際應用中,詞向量和詞嵌入這兩個重要的NLP術語通常可以互換使用。它們都表示將詞匯表中的單詞映射到固定大小的連續向量空間中…

[內網安全] 內網滲透 - 學習手冊

這是一篇專欄的目錄文檔,方便讀者系統性的學習,筆者后續會持續更新文檔內容。 如果沒有特殊情況的話,大概是一天兩篇的速度。(實驗多或者節假日,可能會放緩) 筆者也是一邊學習一邊記錄筆記,如果…

【學術會議征稿-第二屆生成式人工智能與信息安全學術會議(GAIIS 2025)】人工智能與信息安全的魅力

重要信息 時間:2025年2月21日-23日 地點:中國杭州 官網:http://www.ic-gaiis.org 簡介 2025年第二屆生成式人工智能與信息安全將于 2025年2月21日-23日在中國杭州舉行。主要圍繞“生成式人工智能與信息安全”的最新研究展開,…

Vscode的AI插件 —— Cline

簡介 vscode的一款AI輔助吃插件,主要用來輔助創建和編輯文件,探索大型項目,使用瀏覽器并執行終端命令(需要多個tokens),可以使用模型上下文協議(MCP)來創建新工具并擴展自己(比較慢…

2024 CVPR Highlight Learning-Feedback

圖像增強 Towards Robust Event-guided Low-Light Image Enhancement: A Large-Scale Real-World Event-Image Dataset and Novel Approach 解決的主要問題是低光照條件下的圖像增強 通過多尺度整體融合分支提取事件和圖像的結構和紋理信息,并引入信噪比&#xff0…

小白一命速通JS中的windowglobal對象

筆者注意到JS中的window對象與global對象經常被混淆,盡管它們在相當一部分使用情況下可以等同,但是本質上仍然存在很多不同,下面是對于兩者的詳細拆解 1. window 對象 定義:window 對象表示 瀏覽器環境中的全局上下文。作用域&am…

機器學習2 (筆記)(樸素貝葉斯,集成學習,KNN和matlab運用)

樸素貝葉斯模型 貝葉斯定理: 常見類型 算法流程 優缺點 集成學習算法 基本原理 常見方法 KNN(聚類模型) 算法性質: 核心原理: 算法流程 優缺點 matlab中的運用 樸素貝葉斯模型 樸素貝葉斯模型是基于貝葉斯…

HTB:Active[RE-WriteUP]

目錄 連接至HTB服務器并啟動靶機 信息收集 使用rustscan對靶機TCP端口進行開放掃描 將靶機TCP開放端口號提取并保存 使用nmap對靶機TCP開放端口進行腳本、服務掃描 使用nmap對靶機TCP開放端口進行漏洞、系統掃描 使用nmap對靶機常用UDP端口進行開放掃描 使用nmap對靶機…

Git圖形化工具【lazygit】

簡要介紹一下偶然發現的Git圖形化工具——「lazygit」 概述 Lazygit 是一個用 Go 語言編寫的 Git 命令行界面(TUI)工具,它讓 Git 操作變得更加直觀和高效。 Github地址:https://github.com/jesseduffield/lazygit 主要特點 主要…

58.界面參數傳遞給Command C#例子 WPF例子

界面參數的傳遞,界面參數是如何從前臺傳送到后臺的。 param 參數是從界面傳遞到命令的。這個過程通常涉及以下幾個步驟: 數據綁定:界面元素(如按鈕)的 Command 屬性綁定到視圖模型中的 RelayCommand 實例。同時&#x…

selenium定位網頁元素

1、概述 在使用 Selenium 進行自動化測試時,定位網頁元素是核心功能之一。Selenium 提供了多種定位方法,每種方法都有其適用場景和特點。以下是通過 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…

51單片機(STC89C52)開發:點亮一個小燈

軟件安裝: 安裝開發板CH340驅動。 安裝KEILC51開發軟件:C51V901.exe。 下載軟件:PZ-ISP.exe 創建項目: 新建main.c 將main.c加入至項目中: main.c:點亮一個小燈 #include "reg52.h"sbit LED1P2^0; //P2的…

29. C語言 可變參數詳解

本章目錄: 前言可變參數的基本概念可變參數的工作原理如何使用可變參數 示例:計算多個整數的平均值解析: 更復雜的可變參數示例:打印可變數量的字符串解析: 總結 前言 在C語言中,函數參數的數量通常是固定的&#xff…

RoboMaster- RDK X5能量機關實現案例(一)識別

作者:SkyXZ CSDN:https://blog.csdn.net/xiongqi123123 博客園:https://www.cnblogs.com/SkyXZ 在RoboMaster的25賽季,我主要負責了能量機關的視覺方案開發,目前整體算法已經搭建完成,實際方案上我使用的上…

shell腳本批量修改文件名之方法(The Method of Batch Modifying File Names in Shell Scripts)

shell腳本批量修改文件名方法 我們可以使用Shell腳本來實現這個功能。Shell腳本是一種用于自動化任務的編程語言,它可以在Unix/Linux操作系統上運行。在這個腳本中,我們將使用一個for循環來遍歷目標目錄下的所有文件,并使用mv命令將每個文件…

MySQL誤刪數據怎么辦?

文章目錄 1. 從備份恢復數據2. 通過二進制日志恢復數據3. 使用數據恢復工具4. 利用事務回滾恢復數據5. 預防誤刪數據的策略總結 在使用MySQL進行數據管理時,誤刪數據是一個常見且具有高風險的操作。無論是因為操作失誤、系統故障,還是不小心執行了刪除命…

RDK X5運行DeepSeek-R1-Distill-Qwen-1.5B,體驗長思維鏈的語言大模型!

簡介 本文介紹了在RDK X5上,如何從HuggingFace的原始模型權重(safetensors)經過量化和編譯,的到llama.cpp推理框架所需要的GGUF格式的模型,然后演示了如何使用llama.cpp運行量化后的DeepSeek-R1-Distill-Qwen-1.5B模型…