是否有其他方法可以使用 puppeteer“单击”元素?我正在正常页面被检测到。单击

问题描述 投票:0回答:2

我正在使用 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
      }
javascript node.js web-scraping bots puppeteer
2个回答
0
投票

我最近遇到了类似的情况(尽管错误消息没有明确提到 puppeteer 是一个检测到的机器人)。

我尝试添加

page.waitForTimeout()
调用来尝试模拟更人性化的页面导航,但没有成功。

我最终找到了这个木偶包ghost-cursor,它可以模拟类似人类的鼠标运动。

我只是按照自述文件说明为页面创建了一个光标,然后使用

await cursor.click(#signUp-button)
(或您想要单击的任何元素)。


0
投票

Puppeteer 点击有点不稳定,有时似乎“错过”按钮。它的工作原理是模拟鼠标移动和鼠标单击。

通过聚焦元素并模拟回车键,您通常可以获得更可靠的点击:

await eltHandle.focus();
await eltHandle.type('\n');
© www.soinside.com 2019 - 2024. All rights reserved.