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

Python与SEO 思享 1053浏览

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

解决办法

通过谷歌,我发现add_init_script方法不仅对page生效,对context也同样可以用,这个时候,我们只要将屏蔽webdriver检测的js同样的方法加进去即可,我整理了一下,如下:

context.add_init_script("Object.defineProperties(navigator, {webdriver:{get:()=>false}});")

这里为什么设置false而不设置成undefind呢,可以参考《webdriver打开浏览器无法通过滑块验证的解决办法

除此之外,还找到了另外一段代码

context.add_init_script("const newProto = navigator.__proto__; delete newProto.webdriver; navigator.__proto__ = newProto;")

这个就是undefind了

推荐阅读

playwright实现鼠标拖动滑块功能

思路说明 使用locator定位到要拖动滑块元素,如元素名叫ele 获取元素ele的bounding_box含4分属性值:x,y,width,height 把鼠标移动到元素ele的中心点,中心点位置为:x+width/2,y+height/2 按下鼠......

playwright可以仿真哪些移动设备?

我们知道selenium可以通过模拟UA实现模拟手机。而playwright更是自带对于移动设备的模拟。那么我们怎么知道都可以模拟哪些设备呢? 代码示例 from playwright.sync_api import Playwright, sync......

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

在web自动化的时候,我们有时候会碰到网站需要滑块拖动到右侧通过验证,这样才能进行登录等相关操作,但是,最近碰到了一个问题,就是用webdriver打开的浏览器,怎么操作都无法通过验证,提示错误。本人使用的是python+selenium。下面就讲讲......