1. 程式人生 > >python3+selenium入門13-操作cookie

python3+selenium入門13-操作cookie

方便 rom lock .net web net 有效 關閉瀏覽器 attr

可以把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這個參數去接收

python3+selenium入門13-操作cookie