最近在做模擬瀏覽器批量定時自動點擊實現批量操作功能,主要使用selenium,但是發現selenium直接調用本地瀏覽器,啟動的是一個全新的(與手動打開的不一致),網站可以檢測到,每次都要雙重驗證(密碼登錄+短信驗證),而我們手動操作瀏覽器只有第一次才需要短信驗證,后續不需要,究其原因用selenium由于是全新啟動,所以是無記憶的,為了避免這個坑,給碰到相同問題的同伴提供思路,寫下此文,希望對大家有所幫助。
1.打開谷歌瀏覽器;
2.在搜索框直接輸入chrome://version/,找到“個人資料路徑
注意:不要復制Default。
3.代碼
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_argument(r'--user-data-dir=C:\Users\qiao\AppData\Local\Google\Chrome\User Data')
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome(options=option)
此時啟動的瀏覽器和本地直接打開瀏覽器內容一致,可以跳過部分網站對selenium的檢測機制。
4.以上只能讓一個瀏覽器實例有"記憶",如果selenium同時啟動多個瀏覽器,只有一個瀏覽器會成功,其它則會因為user data共享的混亂導致失敗,不信可以試試,我的解決方案是在C:\temp\Chrome\目錄下復制這個文件夾"C:\Users\qiao\AppData\Local\Google\Chrome\User Data"多個,分別命名為User Data01, User Data02,…
文件目錄結構如下:
C:\temp\Chrome
|__User Data01
|__User Data02
|__User Data03
|__xxxx
然后在啟動每個實例時指定user data路徑,比如將它們以參數形式寫到option.add_argument(r’–user-data-dir=pathxxx’)中,這樣每個實例就能各自獨立地帶"記憶"運行了
5。當然大部分網站都不嚴格,不需要這么麻煩,如果你有更好的方法,歡迎留言評論!