示例:
def _run():
delay = 0
option = webdriver.ChromeOptions()
option.add_argument('--incognito')
ua = str(UserAgent().random)
option.add_argument('--user-agent={}'.format(ua))
driver = webdriver.Chrome(options=option)
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
driver.get("https://www.baidu.com")
原理:
检测基本原理是检测当前浏览器窗口下window.navigator对象中是否包含webdriver这个属性。如果你是采用selenuim自然免不了webdriver,这个时候window.navigator对象中就会包含webdriver属性,但是在我们平常使用浏览器时,这个属性是undefined,一旦被网站上的JS判断出这个属性的不同,就露馅了。
解决方式:
在加载网页之前加入下行代码
driver = webdriver.Chrome()
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
driver.get("https://www.baidu.com") # 打开网页