寫在前面

Google于2021年1月19日在穩定版中發布了Chrome88(大更新)
- 針對Windows 10的改進的深色主題以及較少侵入性權限提示
- 不再支持FTP URL、Flash、Mac OS X Yosemite
- 較少干擾的權限請求
- 禁用了所有舊版瀏覽器插件
- 數字商品API:在Google Play商店中發布的Web應用現在可以像本地應用一樣使用Play商店計費,
- WebXR:AR照明估算: 對于Android上的AR和VR內容,照明估算可幫助使模型感覺更自然,并使其更“適合”用戶的環境,
- 錨目標= _blank默認情況下意味著rel = noopener:為了防御“標簽竊聽”攻擊,目標的錨的_blank 行為就像rel 設定為一樣noopener,
- CSS Aspect-ratio屬性: 這允許為任何元素明確指定縱橫比,以獲得與被替換元素相似的行為,
來源隔離: Web應用程式可以選擇提高頁面的安全性,以換取放棄對某些API的訪問, - JavaScript引擎: Chrome 88集成了V8 JavaScript引擎的8.8版,
更多更新資訊可以自己搜搜看
今天主要想寫的是,因為更新到chrome88導致了一直使用的selenium爬蟲資料自動化采集代碼失效了,這已經是第二次因為瀏覽器更新導致我代碼失效了,本著記錄自己作業的原則,一直對這方面進行著持續更新,所以也導致了很多小伙伴過來問我這個問題,不了解的可以點擊下面鏈接直達前文,專為解決【chrome88導致無法修改window.navigator.webdriver】的朋友們直接看本篇就可以了
一、出師未捷身先死的sycm資料自動化
二、關于修改window.navigator.webdriver代碼失效問題
三、(新)關于修改window.navigator.webdriver代碼失效問題
問題查找
版本資訊

造成代碼無法使用的主要原因與之前一樣:
- window.navigator.webdriver值為true
經過幾天的排查主要原因是
chrome88集成了V8 JavaScript引擎的8.8版 ,導致的原先修改屬性的js代碼失效
# 原先修改window.navigator.webdriver的js代碼塊
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})

報錯翻譯: 無法使用defineproperty函式重新定義webdriver的屬性
解決方案
對js不是太熟的我本計劃使用新的js寫法對window.navigator.webdriver進行重定義,經過幾天的努力沒成功,其他小伙伴可以嘗試下這個方向,有好的方法可以評論區交流
最終解決辦法:
還是從selenium著手,使用--disable-blink-features=AutomationControlled 引數完美去除window.navigator.webdriver
#手動登錄
def login(extension_path,tmp_path):
chrome_options = webdriver.ChromeOptions()
# 設定好應用擴展
chrome_options.add_extension(extension_path)
#添加下載路徑
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path,
"profile.default_content_setting_values.automatic_downloads":1}#允許多個檔案下載
chrome_options.add_experimental_option('prefs', prefs)
#修改windows.navigator.webdriver,防機器人識別機制,selenium自動登陸判別機制
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
# drive = webdriver.Chrome(chrome_options=chrome_options)
drive = webdriver.Chrome(options=chrome_options)
url = 'https://sycm.taobao.com/portal/home.htm'
drive.implicitly_wait(10)
drive.get(url)
input("請手動登錄,成功后輸入【1】:")
#叉掉頁面無關元素后再輸入1繼續執行
drive.maximize_window() #視窗最大化
tm=random.uniform(1,2)
time.sleep(tm)
return drive
測驗成功,完美修改,登錄成功!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/253113.html
標籤:其他
下一篇:echarts tree (樹圖) 實作自定義節點圖示 自定義樣式 點擊節點后線條變色 自適應高度 搜索后節點關鍵字標紅 寫的很詳細,建議收藏!
