您好,登錄后才能下訂單哦!
由于HTTP協(xié)議是無狀態(tài)協(xié)議,所以服務(wù)器與客戶端通過http協(xié)議通訊時,服務(wù)器不能記錄客戶端的信息。
為了解決這個問題,通過 Cookie 和 Session 技術(shù)來實現(xiàn)。
cookie的屬性
一般cookie所具有的屬性,包括:
Domain:域,表示當(dāng)前cookie所屬于哪個域或子域下面。
對于服務(wù)器返回的Set-Cookie中,如果沒有指定Domain的值,那么其Domain的值是默認(rèn)為當(dāng)前所提交的http的請求所對應(yīng)的主域名的。比如訪問 http://www.example.com,返回一個cookie,沒有指名domain值,那么其為值為默認(rèn)的www.example.com。
Path:表示cookie的所屬路徑。
Expire time/Max-age:表示了cookie的有效期。expire的值,是一個時間,過了這個時間,該cookie就失效了?;蛘呤怯胢ax-age指定當(dāng)前cookie是在多長時間之后而失效。如果服務(wù)器返回的一個cookie,沒有指定其expire time,那么表明此cookie有效期只是當(dāng)前的session,即是session cookie,當(dāng)前session會話結(jié)束后,就過期了。對應(yīng)的,當(dāng)關(guān)閉(瀏覽器中)該頁面的時候,此cookie就應(yīng)該被瀏覽器所刪除了。
secure:表示該cookie只能用https傳輸。一般用于包含認(rèn)證信息的cookie,要求傳輸此cookie的時候,必須用https傳輸。
httponly:表示此cookie必須用于http或https傳輸。這意味著,瀏覽器腳本,比如javascript中,是不允許訪問操作此cookie的。
得到cookie
#從百度首頁登錄百度賬號,并獲取cookie from selenium import webdriver from time import sleep import json #啟動chome瀏覽器并訪問百度首頁 option=webdriver.ChromeOptions() option.add_argument('--start-maximized') drive=webdriver.Chrome(options=option) drive.get('http://www.baidu.com') print(drive.title) #點擊“登錄” eled=drive.find_element_by_link_text("登錄") eled.click() sleep(2) #點擊“用戶名登錄” 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請求發(fā)送服務(wù)器。
import time import json 啟動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登錄百度失?。?/p>
Message: unable to set cookie
Message: invalid argument: invalid 'expiry'
到此這篇關(guān)于python selenium操作cookie的實現(xiàn)的文章就介紹到這了,更多相關(guān)python selenium操作cookie內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。