我正在使用 Puppeteer Stealth 插件,可以在网站上进行所有点击而不被检测到,除了我将文章放入购物车的点击。有时我会在这个按钮上悲伤地被发现。大约每隔一次,但我需要机器人始终工作。
是否有其他方法可以单击元素然后使用 page.click 操作?我能够单击 selenium undetected-chromedriver 中的按钮(它在其他地方有问题,因此我无法使用它),但不能单击 puppeteer。 点击通过,但文章不在购物车中,并且该网站显示“您的客户端已被机器人保护阻止”。
感谢您提供无法检测到的不同点击方式的想法!
while(true){
try {
await page.waitForTimeout(200)
await page.waitForSelector('.nbb-btn.btn_full.js-pdp-head-add-to-cart:not([disabled])', {timeout: ((Math.floor(Math.random() * 12) + 5) * 200)})
page.click('.nbb-btn.btn_full.js-pdp-head-add-to-cart:not([disabled])')
break
}
我最近遇到了类似的情况(尽管错误消息没有明确提到 puppeteer 是一个检测到的机器人)。
我尝试添加
page.waitForTimeout()
调用来尝试模拟更人性化的页面导航,但没有成功。
我最终找到了这个木偶包ghost-cursor,它可以模拟类似人类的鼠标运动。
我只是按照自述文件说明为页面创建了一个光标,然后使用
await cursor.click(#signUp-button)
(或您想要单击的任何元素)。
Puppeteer 点击有点不稳定,有时似乎“错过”按钮。它的工作原理是模拟鼠标移动和鼠标单击。
通过聚焦元素并模拟回车键,您通常可以获得更可靠的点击:
await eltHandle.focus();
await eltHandle.type('\n');