很多時候我們需要使用Selenium庫來執行Python爬蟲或自動測試,但是我們經常會在登錄時因為驗證代碼而卡住,特別頭疼。尤其是現在的圖形認證代碼和移動滑塊驗證碼,連最簡單的文本數字驗證代碼也被加了干擾線。比如以下的圖形驗證碼。
私信小編01 領取學習教程
還有我們基本都看過的 12306 的圖形驗證碼。
還有這種滑塊驗證碼
如果直接進行登錄的話這些驗證碼破解起來的話都會比較的麻煩,費時費力,所以我們想想有沒有辦法繞過這個登錄過程。其實是有的,下面我們就來講講如何繞過這個登錄
繞過登錄基本有兩種方法:
- 第一種方法是登錄后查看網站的 cookie,請求 url 的時候把 cookie 帶上
- 第二種方法是啟動瀏覽器帶上瀏覽器的全部信息,包括添加的書簽和訪問網頁的 cookie 信息。
第一種 cookie 方法我們要分析別人網站的 cookie 值,找出相應的值然后添加進去,對于我們不熟的網站,他們可能也會做加密或者動態處理,所以有些網站也不是那么好操作。如果是自己公司的網站需要測試,我們可以詢問對應的開發那個 cookie 值是區分獨立用的值,拿出來放在請求里面就行。
添加cookie繞過登錄
比如我們登錄百度賬號比較費勁,每次都需要登錄也比較繁瑣,我們 F12 打開頁面調試工具,登錄后找到 www.baidu.com 文件,在 cookie 中,我們發現很多值,其中圖中圈起來的就是我們要找的值。
我們在訪問 baidu 鏈接的時候加上這個 cookie 值,這樣就是直接登錄后的百度賬號了。
運行之后會發現selenium剛打開瀏覽器時未登錄
但是刷新之后頁面就變成登錄了
可見我們成功的繞開了輸入賬號密碼閻驗證碼登錄這個過程。
帶上瀏覽器的信息啟動
這個方法其實就是我們實現在瀏覽器中對該網站進行登錄,對應的緩存和 cookie 會保存到瀏覽器默認的路徑下,當我們使用selenium打開瀏覽器時,把瀏覽器的所有信息資料都添加進去,打開網站之后我們之前登錄保存的cookie就會啟用,直接就是已登錄狀態。
我們先查看個人資料路徑,以 chrome 為例,我們在地址欄輸入 chrome://version/
圖中的個人資料路徑就是我們需要的,我們去掉后面的 Default,然后在路徑前加上–user-data-dir=就能拼接出我們要的路徑了。
接下來,我們啟動瀏覽器的時候采用帶選項時的啟動,這種方式啟動瀏覽器需要注意,運行代碼前需要關閉所有的正在運行 chrome 程序,不然會報錯。
selenium 自動化啟動瀏覽器后我們會發現之前保存的書簽完整在瀏覽器上方,baidu 賬號也是登錄的狀態。