示例:

    1. def _run():
    2. delay = 0
    3. option = webdriver.ChromeOptions()
    4. option.add_argument('--incognito')
    5. ua = str(UserAgent().random)
    6. option.add_argument('--user-agent={}'.format(ua))
    7. driver = webdriver.Chrome(options=option)
    8. driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
    9. driver.get("https://www.baidu.com")

    原理:
    检测基本原理是检测当前浏览器窗口下window.navigator对象中是否包含webdriver这个属性。如果你是采用selenuim自然免不了webdriver,这个时候window.navigator对象中就会包含webdriver属性,但是在我们平常使用浏览器时,这个属性是undefined,一旦被网站上的JS判断出这个属性的不同,就露馅了。

    解决方式:
    在加载网页之前加入下行代码

    1. driver = webdriver.Chrome()
    2. driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
    3. driver.get("https://www.baidu.com") # 打开网页