selenium 檢測解決方法

正常網(wǎng)頁用代碼window.navigator.webdriver在console檢測會返回false或undefined,但是在selenium中在selenium中會出現(xiàn)True
解決辦法分成兩種,一種是老版本的chrom使用的方法,一種是新版本的chrom使用的方法
老版本方法

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path='./chromedriver')
driver.get("https://taobao.com")
driver.close()

新版本方法

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.get('http://exercise.kingname.info')
driver.close()

因為有時候自己寫的是新版本,服務器使用的是老版本chrom,所以我們可以合并在一起使用

from selenium import webdriver

# 為了防止你不確定自己的 chrom 版本,最好兩個混合用
options = webdriver.ChromeOptions()
# chrom在79版之前用這個
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 這個是更改 user-agent 的,可有可無
options.add_argument(
    "user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)")
driver = webdriver.Chrome(options=options)
# chrom在79版之后用這個
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.get('https://baidu.com')

time.sleep(30)
# 這里最好用代碼關閉selenium不然的話你的進程里會殘留大量的chrom進程
driver.close()

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容