我正在用木偶戏scrap。 我可以通过navigator.webdriver property = false,但我需要完全删除该道具。
我尝试将false传递给navigator.webdriver。这个把戏可以继续 https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html
但不能https://bot.sannysoft.com/。
这是网页测试机器人。此测试正在寻找导航器对象中是否有任何“ webdriver”道具。不管它是真还是假。 我需要从浏览器中删除此webdriver prop。
答案 0 :(得分:1)
尝试一下:?
const newProto = navigator.__proto__;
delete newProto.webdriver;
navigator.__proto__ = newProto;
答案 1 :(得分:0)
由于我无法发表评论,所以我会留下答案:
我有同样的问题,@ Nodarius的回答对我有用。 由于您不接受它,因此我认为您的问题仍然存在。
这可能是因为,即使您在其中运行,也需要在页面加载之前(或网站访问该变量之前)运行该代码。
我使用代理(https://mitmproxy.org/)实现了这一目的,该代理在页面加载之前就加载了脚本。
希望有帮助。
答案 2 :(得分:0)
这有效
await page.evaluateOnNewDocument(() => {
window.navigator = {}
})