淘宝有自己对selenium的验证,在使用selenium自动化登录淘宝时,往往会出现滑块验证失败问题。
原因
首先很多熟悉JS的人都知道淘宝会检测window.navigator.webdriver(js检测特征之一)。
观察一下他的全局JS,(这个是我参考别人的思路)你会发现淘宝在你浏览器内置的JS中有这么一段代码。
就是这个标黄色的东西,window.navigator.webdriver控件检测到你是selenium进入!那我们接下来就需要干掉他。
解决方法
具体就是 你需要关把window.navigator.webdriver设为"undefined"。
需要你在使用selenium自动化启动浏览器前加入这一段代码
# chrome的版本号小于88,在你启动浏览器的时候(此时没有加载任何网页内容),向页面嵌入js代码,去掉webdriver。
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})
# chrome的版本大于等于88
option = Options()
option.add_experimental_option('excludeSwitches', ['enable-automation']
option.add_argument('--disable-blink-features=AutomationControlled')
web = Chrome(options=option)
加上这个代码可以关闭开发者模式。
这样我们就可以解决selenium被检测到导致不能登录。据我所了解,大部分的window.navigator.webdriver控件检测都可以用这两个代码绕过检测。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理