python selenium操作cookie的實(shí)現(xiàn)
由于HTTP協(xié)議是無(wú)狀態(tài)協(xié)議,所以服務(wù)器與客戶端通過(guò)http協(xié)議通訊時(shí),服務(wù)器不能記錄客戶端的信息。
為了解決這個(gè)問(wèn)題,通過(guò) Cookie 和 Session 技術(shù)來(lái)實(shí)現(xiàn)。
Cookie保存在客戶端中 Session保存在服務(wù)器中cookie的屬性
一般cookie所具有的屬性,包括:
Domain:域,表示當(dāng)前cookie所屬于哪個(gè)域或子域下面。
對(duì)于服務(wù)器返回的Set-Cookie中,如果沒(méi)有指定Domain的值,那么其Domain的值是默認(rèn)為當(dāng)前所提交的http的請(qǐng)求所對(duì)應(yīng)的主域名的。比如訪問(wèn) http://www.example.com,返回一個(gè)cookie,沒(méi)有指名domain值,那么其為值為默認(rèn)的www.example.com。
Path:表示cookie的所屬路徑。
Expire time/Max-age:表示了cookie的有效期。expire的值,是一個(gè)時(shí)間,過(guò)了這個(gè)時(shí)間,該cookie就失效了。或者是用max-age指定當(dāng)前cookie是在多長(zhǎng)時(shí)間之后而失效。如果服務(wù)器返回的一個(gè)cookie,沒(méi)有指定其expire time,那么表明此cookie有效期只是當(dāng)前的session,即是session cookie,當(dāng)前session會(huì)話結(jié)束后,就過(guò)期了。對(duì)應(yīng)的,當(dāng)關(guān)閉(瀏覽器中)該頁(yè)面的時(shí)候,此cookie就應(yīng)該被瀏覽器所刪除了。
secure:表示該cookie只能用https傳輸。一般用于包含認(rèn)證信息的cookie,要求傳輸此cookie的時(shí)候,必須用https傳輸。
httponly:表示此cookie必須用于http或https傳輸。這意味著,瀏覽器腳本,比如javascript中,是不允許訪問(wèn)操作此cookie的。
得到cookie
#從百度首頁(yè)登錄百度賬號(hào),并獲取cookiefrom selenium import webdriverfrom time import sleepimport json #啟動(dòng)chome瀏覽器并訪問(wèn)百度首頁(yè)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)站cookiediccookie=drive.get_cookies()fw=open(’baiducookie.txt’,’w’)json.dump(diccookie,fw)fw.close()
從硬盤(pán)讀取cookie,加入到request請(qǐng)求發(fā)送服務(wù)器。
import timeimport json 啟動(dòng)chome瀏覽器并訪問(wèn)百度首頁(yè)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()
通過(guò)cookie登錄百度失敗:
Message: unable to set cookieMessage: invalid argument: invalid ’expiry’
到此這篇關(guān)于python selenium操作cookie的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python selenium操作cookie內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. CSS清除浮動(dòng)方法匯總2. js開(kāi)發(fā)中的頁(yè)面、屏幕、瀏覽器的位置原理(高度寬度)說(shuō)明講解(附圖)3. XML 非法字符(轉(zhuǎn)義字符)4. CSS百分比padding制作圖片自適應(yīng)布局5. vue跳轉(zhuǎn)頁(yè)面常用的幾種方法匯總6. 不要在HTML中濫用div7. XML入門的常見(jiàn)問(wèn)題(三)8. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)9. 深入了解React中的合成事件10. TypeScript實(shí)現(xiàn)十大排序算法之歸并排序示例詳解
