Selenium自動化過程,在瀏覽器內會顯示如下字樣
當出現此內容時,有些網站就會判定是機器在進行操作,然後網站會加載防機器操作程序,如下圖滑塊驗證
觸發反機器操作的原理大概如下
解決方法
具體代碼,加入到腳本中,替代定義瀏覽器即可
option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) browser = webdriver.Chrome(options=option) browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' })
執行後就不會有顯示瀏覽器正受到自動軟件的控制,也沒有驗證碼了
from selenium import webdriver from selenium.webdriver.common.keys import Keys from webdriver_manager.chrome import ChromeDriverManager import time option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) browser = webdriver.Chrome(options=option) browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' }) #browser = webdriver.Chrome() #browser = webdriver.Chrome(ChromeDriverManager().install()) browser.get('http://www.baidu.com') search = browser.find_element_by_id('kw') search.send_keys('python') search.send_keys(Keys.ENTER) time.sleep(20) #browser.close()