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

Python与SEO 思享 1992浏览

之前有转载了一篇文章,关于《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了

推荐阅读

Patchright:web自动化反检测增强方案

如果你使用Playwright自动化网页,你可能会遇到过脚本被网站屏蔽、弹出验证码、甚至直接拒绝访问的情况。这不是代码问题,而是 Playwright 本身带有一些很容易反制的功能...

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......