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也可以這樣寫
co = {‘name‘:‘BDUSS‘,‘value‘:‘你cookie中BDUSS對應的值‘} dr.add_cookie(cookie_dict=co)
add_cookie其實還有一些其他參數可以用。如果用了全都直接放在方法裏看起來很不方便。所以一般都是建一個字典,然後用cookie_dict這個參數去接收
python3+selenium入門13-操作cookie