日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?selenium?get_cookies獲取cookie不全的解決方案_python

作者:zhu6201976 ? 更新時間: 2022-12-02 編程語言

一、場景

瀏覽器訪問淘寶,再訪問天貓,繼續訪問1688......

此時,瀏覽器中的cookie是什么狀態?

顯然,包含上述3個網站的所有cookie

二、此時,若通過selenium??get_cookies()方法,能獲取到瀏覽器所有cookie嗎?

答案顯然是不能的(webdriver安全考慮),此方法只能獲取當前請求域名下的所有cookie

故訪問天貓或1688會登錄失敗。

那可以通過什么方式,將瀏覽器所有cookie獲取?

方案一:基于瀏覽器內核,打造屬于自己的瀏覽器,解除限制

方案二:掛代理,Fiddler,mitmproxy等

方案三:分別請求對應域名,獲取所有cookie(推薦,筆者首創)

三、樣例代碼

lmdd_url = f'{self.root_lmdd_url}/seller/dashboard/plan/order'
 
self.chrome.get(lmdd_url)
cookie_list = self.chrome.get_cookies()
 
self.chrome.get(self.root_lmdd_api_url)
cookie_list_api = self.chrome.get_cookies()
 
cookie_list.extend(cookie_list_api)
self.update_session_cookie(cookie_list)

補充:selenium通過add_cookie()添加cookie

selenium通過add_cookie()添加cookie,再次訪問網站時,服務器直接讀取瀏覽器cookie

第一次登陸 手動輸入用戶名密碼

# -*- coding:utf-8 -*-

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
sleep(2)
driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()

driver.add_cookie({'name':'userName','value':'youname'})
driver.add_cookie({'name':'password','value':'youpassword'})

sleep(30)
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium')

總結

原文鏈接:https://blog.csdn.net/zhu6201976/article/details/125665774

欄目分類
最近更新