selenium 特征屏蔽

2021-03-22 14:42:04 浏览数 (2)

以下方法在某些时候可以抹除写一些 selenium 的自动化特征,使 window.navigator.webdriver 属性重新定义为 undefined 而不是 true。以下方法适用于较新版本的 chromedriver

本人亲测有效,特征头边变成了undefined 成功获取到了cookie,开心心

代码语言:javascript复制
chrome_options = Options()
chrome_options.add_argument('--headless') #无头模式,适用于Linux系统
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')  
#以下两行为实验性选项用于抹除特征
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
browser = webdriver.Chrome(options=chrome_options)
#重新定义window.navigator.webdriver属性
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

0 人点赞