python3+selenium入門13-操作cookie


可以把cookie理解為自己賬戶的身份證。因為http協議是無狀態的,上一個請求和下一個請求沒有關系。但是有時需要有關聯。比如登錄之后,才能進行操作這樣的設置。這個就是cookie在起作用。登錄成功時,服務器會給瀏覽器一個cookie,瀏覽器會解析存在本地。然后同一個網站,下一次請求時就會把這個cookie帶上,告訴服務器是哪個用戶在操作。在關閉瀏覽器時cookie有效期結束。

WebDriver提供了一些用來操作cookie的方法:

get_cookies():獲得cookie所有信息,返回的是一個字典

get_cookie(key):獲取返回cookie中,某一個key的值

add_cookie(cookie_dict):手動添加cookie,需要傳一個字典進去,用cookie_dict來接收,字典的鍵必須要有‘name’和‘value’

delete_cookie(name):刪除cookie信息,name是要刪除的cookie名稱

delete_all_cookies():刪除所有cookie信息

 

一般就add_cookie比較常用。可以用這個來繞過登錄。下面來看用cookie登錄百度的實例

因為很多網站現在通過selenium去模擬登錄的話,都會有安全提示,要求驗證是否本人登錄啥的。所以先通過手動登錄一下來拿到cookie。然后再來實驗繞過登錄。

打開百度首頁,點擊登錄按鈕跳轉到登錄頁面,把用戶名密碼輸完了之后。F12呼出開發者工具,然后點擊登錄。

登錄成功后,找到www.baidu.com這個請求。看下右側然后往下拉

找到Cookie。我們需要的是最后BDUSS鍵值對的信息。

from selenium import webdriver
dr = webdriver.Firefox()
dr.maximize_window()
dr.implicitly_wait(10)
dr.get('https://www.baidu.com/')
dr.add_cookie({'name':'BDUSS','value':'你cookie中BDUSS對應的值'})
dr.get('https://www.baidu.com/')
我這邊是成功繞過了登錄。需要注意的是add_cookie()傳入的字典一定要帶‘name’和‘value’這兩樣。另外需要先get()一下想要設置cookie的網站,不然會報錯,因為不知道這個cookie是給哪個網站的。

add_cookie也可以這樣寫

co = {'name':'BDUSS','value':'你cookie中BDUSS對應的值'}
dr.add_cookie(cookie_dict=co)

add_cookie其實還有一些其他參數可以用。如果用了全都直接放在方法里看起來很不方便。所以一般都是建一個字典,然后用cookie_dict這個參數去接收


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM