BT1*_*101 4 selenium detection puppeteer
我试图让我的在线机器人无法被检测到。我阅读了许多如何做到这一点的文章,并将所有技巧放在一起并使用它们。其中之一是改变window.navigator.webdriver。
我设法window.navigator.webdriver通过以下代码在 puppeteer 中进行了更改:
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
});
});
Run Code Online (Sandbox Code Playgroud)
我绕过这个测试就好了:
然而,这个测试仍然以某种方式嘲笑我:
为什么WEBDRIVER不一致?
尝试这个,
首先,删除定义,如果从原型中定义和删除将不起作用。
Object.defineProperty(navigator, 'webdriver', ()=>{}) // <-- delete this part
Run Code Online (Sandbox Code Playgroud)
用这个替换你的代码。
delete navigator.__proto__.webdriver;
Run Code Online (Sandbox Code Playgroud)
直接删除只是删除对象的实例而不是实际定义。getter 和 setter 仍然存在,因此浏览器可以找到它。
但是,如果您从实际原型中删除,它在任何实例中都将不再存在。
你提到你想让你的应用程序无法被检测到,有很多插件可以实现相同的目标,例如这个名为puppeteer-extra-plugin-stealth 的包包含一些很酷的反机器人检测技术。有时只重用一些包比一遍遍地重新创建解决方案更好。
PS:上面的解释可能是我错了,请随时指导我,以便我改进答案。
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |