webdriver打开浏览器无法通过滑块验证的解决办法

Python与SEO 思享 529浏览

在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

推荐阅读

Playwright新窗口被检测webdriver的解决办法

之前有转载了一篇文章,关于《Playwright怎么绕过webdriver检测》但是在使用过程中会遇到一个问题,就是打开新的窗口,window.navigator.webdriver参数会为true,也就是说绕过webdriver仅限单窗口,那么,该......

Playwright怎么绕过webdriver检测

Playwright是微软开发的自动化测试工具,支持近乎目前市面上绝大部分的浏览器。 但是由于是新生产物,所以很多细节可能还不如Selenium操作起来比较顺手。 例如,使用Selenium打开网页时,可以使用execute_cdp_cmd在load......

playwright怎么执行JavaScript脚本

在Selenium执行JavaScript脚本中介绍了Selenium执行JavaScript脚本的方法,playwright也支持执行JavaScript脚本,playwright本身就是一个Node.js库,本文介绍playwright-pyth......