python selenium操作cookie的實現(xiàn)
由于HTTP協(xié)議是無狀態(tài)協(xié)議,所以服務器與客戶端通過http協(xié)議通訊時,服務器不能記錄客戶端的信息。
為了解決這個問題,通過 Cookie 和 Session 技術來實現(xiàn)。
- Cookie保存在客戶端中
- Session保存在服務器中
cookie的屬性
一般cookie所具有的屬性,包括:
Domain:域,表示當前cookie所屬于哪個域或子域下面。
對于服務器返回的Set-Cookie中,如果沒有指定Domain的值,那么其Domain的值是默認為當前所提交的http的請求所對應的主域名的。比如訪問 http://www.example.com,返回一個cookie,沒有指名domain值,那么其為值為默認的www.example.com。
Path:表示cookie的所屬路徑。
Expire time/Max-age:表示了cookie的有效期。expire的值,是一個時間,過了這個時間,該cookie就失效了?;蛘呤怯胢ax-age指定當前cookie是在多長時間之后而失效。如果服務器返回的一個cookie,沒有指定其expire time,那么表明此cookie有效期只是當前的session,即是session cookie,當前session會話結束后,就過期了。對應的,當關閉(瀏覽器中)該頁面的時候,此cookie就應該被瀏覽器所刪除了。
secure:表示該cookie只能用https傳輸。一般用于包含認證信息的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ā)送服務器。
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'
到此這篇關于python selenium操作cookie的實現(xiàn)的文章就介紹到這了,更多相關python selenium操作cookie內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python confluent kafka客戶端配置kerberos認證流程詳解
這篇文章主要介紹了Python confluent kafka客戶端配置kerberos認證流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
python使用requests庫實現(xiàn)輕松發(fā)起HTTP請求
requests是Python中一個非常流行的用于發(fā)送HTTP請求的第三方庫,它提供了簡潔的API,使得發(fā)送各種HTTP請求變得非常容易,下面我們來看看具體實現(xiàn)方法吧2025-01-01
django使用django-apscheduler 實現(xiàn)定時任務的例子
今天小編就為大家分享一篇django使用django-apscheduler 實現(xiàn)定時任務的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
基于Python實現(xiàn)經(jīng)典植物大戰(zhàn)僵尸游戲
這篇文章主要介紹了如何利用Python實現(xiàn)植物大戰(zhàn)僵尸游戲,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下2022-05-05
舉例講解Python中metaclass元類的創(chuàng)建與使用
在Python中我們用type函數(shù)可以動態(tài)地創(chuàng)建一個元類,同樣也可以用__metaclass__屬性來指定一個元類,接下來我們就來具體舉例講解Python中metaclass元類的創(chuàng)建與使用2016-06-06

