【问题标题】:How to avoid hcaptcha showing images to solve captcha while using puppeteer for webscraping如何在使用 puppeteer 进行网页抓取时避免验证码显示图像以解决验证码
【发布时间】:2022-07-14 18:14:24
【问题描述】:

我正在尝试抓取一个网站。但是,当我尝试通过按下验证码复选标记来通过验证码时,它会为我提供解决验证码的图像。有时它会这样做,有时它只是在解决验证码后传递并导航到页面。

下面是我如何设置我的 puppeteer 实例和页面的代码。

  puppeteer.use(StealthPlugin());
  
  const chromeOptions = {
    headless: false,
    ignoreHTTPSErrors: true,
    slowMo: 30,
    args: ['--no-sandbox'],
  }

  const browser = await puppeteer.launch(chromeOptions);
  const page = await browser.newPage();
  await page.evaluateOnNewDocument(() => {
    delete navigator.__proto__.webdriver;
  });

  await page.setUserAgent(randomUseragent.getRandom());
  await page.setJavaScriptEnabled(true);
  //page.setDefaultNavigationTimeout(0);
  await page.goto(`pagetoscrape`, {
    waitUntil: "domcontentloaded",
 });

下面是我尝试解决验证码的方法。

  await delay(6000);
  const iframes = await page.$('iframe');
  const frame = await iframes.contentFrame();
  const a = await frame.$('#checkbox');
  await a.click();
  await delay(5000);
  await page.screenshot({path: 'headless-test-result.png'});
  console.log("Solving captcha........");
  await page.waitForNavigation();
  await delay(7000);

【问题讨论】:

  • 根据我的经验,我可以建议您使用任何服务来解决验证码。当然,如果您需要它用于商业而不是用于教育目的,价格就绰绰有余了。

标签: javascript node.js puppeteer


【解决方案1】:
  • 您尝试解决的验证码是 hCaptcha 类型。 您可以使用以下库来解决这个问题。

https://www.npmjs.com/package/puppeteer-extra-plugin-recaptcha

  • 此库使用https://2captcha.com/,您必须购买付费服务才能获得2CAPTCHA API KEY。此键正在代码中使用。
await page.solveRecaptchas()

注意:这个函数名是solveRecaptchas(),其实也是求解 hCaptcha 也是。

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多