在web自动化的时候,我们有时候会碰到网站需要滑块拖动到右侧通过验证,这样才能进行登录等相关操作,但是,最近碰到了一个问题,就是用webdriver打开的浏览器,怎么操作都无法通过验证,提示错误。本人使用的是python+selenium。下面就讲讲解决办法。
原因及解决办法
一些网站会检测webdriver特性,从而进一步限制访问登录等。可是我按照网上的提示,其实一直都有屏蔽webdriver特性的。随便搜一下我们都可以找到:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {'source': 'Object.defineProperty(navigator,"webdriver",{get:()=>undefind})'})
然后我们通过F12—Console—-输入 window.navigator.webdriver 也确实设置成功了
但是,当我们正常打开一个浏览器,查看window.navigator.webdriver时,发现值是false
于是,我们将上面的修改为
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {'source': 'Object.defineProperty(navigator,"webdriver",{get:()=>false})'})
这样,查看window.navigator.webdriver为false,滑块验证也可以成功了
总结
个人猜测可能版本的迭代,导致一些旧的方法会失效。比如,上面的代码,我看网上的文章说对于同一个driver打开的新窗口window.navigator.webdriver也会为false,但实际查看却为true。
我们可以用下面的方式来进行解决
chrome_options.add_argument("--disable-blink-features")#此项似乎可以省略 chrome_options.add_argument("--disable-blink-features=AutomationControlled")
这样新窗口也会为false
转载请注明:思享SEO博客 » webdriver打开浏览器无法通过滑块验证的解决办法