python selenium操作cookie的實(shí)現(xiàn)
由于HTTP協(xié)議是無狀態(tài)協(xié)議,所以服務(wù)器與客戶端通過http協(xié)議通訊時(shí),服務(wù)器不能記錄客戶端的信息。
為了解決這個(gè)問題,通過 Cookie 和 Session 技術(shù)來實(shí)現(xiàn)。
- Cookie保存在客戶端中
- Session保存在服務(wù)器中
cookie的屬性
一般cookie所具有的屬性,包括:
Domain:域,表示當(dāng)前cookie所屬于哪個(gè)域或子域下面。
對(duì)于服務(wù)器返回的Set-Cookie中,如果沒有指定Domain的值,那么其Domain的值是默認(rèn)為當(dāng)前所提交的http的請(qǐng)求所對(duì)應(yīng)的主域名的。比如訪問 http://www.example.com,返回一個(gè)cookie,沒有指名domain值,那么其為值為默認(rèn)的www.example.com。
Path:表示cookie的所屬路徑。
Expire time/Max-age:表示了cookie的有效期。expire的值,是一個(gè)時(shí)間,過了這個(gè)時(shí)間,該cookie就失效了?;蛘呤怯胢ax-age指定當(dāng)前cookie是在多長(zhǎng)時(shí)間之后而失效。如果服務(wù)器返回的一個(gè)cookie,沒有指定其expire time,那么表明此cookie有效期只是當(dāng)前的session,即是session cookie,當(dāng)前session會(huì)話結(jié)束后,就過期了。對(duì)應(yīng)的,當(dāng)關(guān)閉(瀏覽器中)該頁面的時(shí)候,此cookie就應(yīng)該被瀏覽器所刪除了。
secure:表示該cookie只能用https傳輸。一般用于包含認(rèn)證信息的cookie,要求傳輸此cookie的時(shí)候,必須用https傳輸。
httponly:表示此cookie必須用于http或https傳輸。這意味著,瀏覽器腳本,比如javascript中,是不允許訪問操作此cookie的。
得到cookie
#從百度首頁登錄百度賬號(hào),并獲取cookie
from selenium import webdriver
from time import sleep
import json
#啟動(dòng)chome瀏覽器并訪問百度首頁
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
drive.get('http://www.baidu.com')
print(drive.title)
#點(diǎn)擊“登錄”
eled=drive.find_element_by_link_text("登錄")
eled.click()
sleep(2)
#點(diǎn)擊“用戶名登錄”
namelogin=drive.find_element_by_css_selector('p.tang-pass-footerBarULogin')
namelogin.click()
sleep(2)
#輸入用戶名,密碼并登錄
username = drive.find_element_by_id('TANGRAM__PSP_10__userName')
username.send_keys('********')
sleep(1)
password = drive.find_element_by_id('TANGRAM__PSP_10__password')
password.send_keys('********')
sleep(1)
submit = drive.find_element_by_id('TANGRAM__PSP_10__submit')
submit.click()
sleep(3)
#獲取網(wǎng)站cookie
diccookie=drive.get_cookies()
fw=open('baiducookie.txt','w')
json.dump(diccookie,fw)
fw.close()
從硬盤讀取cookie,加入到request請(qǐng)求發(fā)送服務(wù)器。
import time
import json
啟動(dòng)chome瀏覽器并訪問百度首頁
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
drive.get('http://www.baidu.com')
print(drive.title)
fr=open('baidu_cookie.txt','r')
cookielist=json.load(fr)
fr.close()
for cookie in cookielist:
drive.add_cookie(cookie)
sleep(5)
drive.get('http://www.baidu.com')
drive.refresh()
通過cookie登錄百度失敗:
Message: unable to set cookie
Message: invalid argument: invalid 'expiry'
到此這篇關(guān)于python selenium操作cookie的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python selenium操作cookie內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)文件操作幫助類的示例代碼
在使用Python進(jìn)行業(yè)務(wù)開發(fā)的時(shí)候,需要將一些數(shù)據(jù)保存到本地文件存儲(chǔ),方便后面進(jìn)行數(shù)據(jù)分析展示,本文就來用Python制作一個(gè)文件操作幫助類,需要的可以參考一下2023-03-03
運(yùn)動(dòng)檢測(cè)ViBe算法python實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了運(yùn)動(dòng)檢測(cè)ViBe算法python實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Python中Playwright模塊進(jìn)行自動(dòng)化測(cè)試的實(shí)現(xiàn)
playwright是由微軟開發(fā)的Web UI自動(dòng)化測(cè)試工具,本文主要介紹了Python中Playwright模塊進(jìn)行自動(dòng)化測(cè)試的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
PyTorch?之?強(qiáng)大的?hub?模塊和搭建神經(jīng)網(wǎng)絡(luò)進(jìn)行氣溫預(yù)測(cè)
hub 模塊是調(diào)用別人訓(xùn)練好的網(wǎng)絡(luò)架構(gòu)以及訓(xùn)練好的權(quán)重參數(shù),使得自己的一行代碼就可以解決問題,方便大家進(jìn)行調(diào)用,這篇文章主要介紹了PyTorch?之?強(qiáng)大的?hub?模塊和搭建神經(jīng)網(wǎng)絡(luò)進(jìn)行氣溫預(yù)測(cè),需要的朋友可以參考下2023-03-03
Python 調(diào)用 Windows API COM 新法
Python中調(diào)用Win32API 通常都是使用 PyWin32或者ctypes。本文給大家介紹Python 調(diào)用 Windows API COM 新法,感興趣的朋友跟隨小編一起看看吧2019-08-08
Python操作MySQL數(shù)據(jù)庫9個(gè)實(shí)用實(shí)例
這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫9個(gè)實(shí)用實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12
對(duì)sklearn的使用之?dāng)?shù)據(jù)集的拆分與訓(xùn)練詳解(python3.6)
今天小編就為大家分享一篇對(duì)sklearn的使用之?dāng)?shù)據(jù)集的拆分與訓(xùn)練詳解(python3.6),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
numpy數(shù)組之存取文件的實(shí)現(xiàn)示例
這篇文章主要介紹了numpy數(shù)組之存取文件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
教你使用Pandas直接核算Excel中的快遞費(fèi)用
文中仔細(xì)說明了怎么根據(jù)賬單核算運(yùn)費(fèi).首先要確定運(yùn)費(fèi)規(guī)則,然后根據(jù)運(yùn)費(fèi)規(guī)則編寫代碼,生成核算列(快遞費(fèi) = 省份*重量),最后輸入賬單,進(jìn)行核算.將腳本件生成EXE文件,就可以使用啦,需要的朋友可以參考下2021-05-05

