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