经过数小时的方法搜索,我找不到任何简单可行的方法。
我能找到的唯一方法是将"pageLoadingStrategy"功能值设置为"渴望",然后立即执行一些javascript,以便在页面呈现之前更改navigator.webdriver值。但是,您需要在每次请求后更改值,这并不是真正可靠的。
在执行任何请求之前,如何设置此项?有一面旗帜吗?
在查看chrome源代码一段时间后,我终于弄清楚了需要使用什么标志来禁用navigator.webdriver的麻烦。
这是启动chromedriver时需要使用的标志。它甚至完全禁止显示"webdriver=true"。:(
--disable-blink-features=AutomationControlled
此外,这里还有一些可以启用/禁用的功能。
特点
Enable Flag:
--enable-blink-features=example1,example2,example3
Disable Flag
--disable-blink-features=example1,example2,example3
希望这能帮助同样遇到这个问题的人。谢谢你看
from selenium.webdriver import Chrome
driver = Chrome('./chromedriver')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.get('https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html')
chrome版本80的成功。