Como ignorar o CAPTCHA em 2024#

O que você vai aprender?#

você aprenderá como ignorar o CAPTCHA com Puppeteer em Nodejs usando métodos diferentes:

O titereiro pode ignorar o CAPTCHA?#

A resposta é sim, existem duas maneiras principais de contornar os CAPTCHAs: usando um solucionador de CAPTCHA (rápido e mais barato) ou implementando técnicas avançadas para evitá-los

Método nº 1: ignorar CAPTCHA com Puppeteer e NextCaptcha#

Trabalharemos com o serviço de resolução chamado NextCaptcha para lidar com CAPTCHA no Puppeteer usando uma demonstração oficial. Então, vamos instalar algumas dependências e importar os módulos
  npm install -S puppeteer nextcaptcha-ts
  import NextCaptcha from 'nextcaptcha-ts';
  import puppeteer from 'puppeteer';
Em seguida, abra uma instância do Chrome e navegue até a página de demonstração.
  const url = "https://www.google.com/recaptcha/api2/demo"

  const browser = await puppeteer.launch({});
  const page = await browser.newPage();
  await page.goto(url, {
    waitUntil: 'networkidle0',
  });
A próxima etapa é localizar o websiteKey CAPTCHA e websiteURL para o Cliente NextCaptcha, que retorna a solução de texto. Salve-o na variável data.solution.gRecaptchaResponse.
  const data = await client.recaptchaV2({websiteKey, websiteURL: url});
  console.log('gRecaptchaResponse: ', data.solution.gRecaptchaResponse);
  console.log('submitting form .. ');
  await Promise.all([
      page.click('#recaptcha-demo-submit'),
      page.waitForNavigation({ waitUntil: "networkidle0" })
  ]);

  console.log('making a screenshot ...');
  await page.screenshot({ path: 'screenshot.png' });

  console.log('closing browser .. ');
  await browser.close();

Método nº 2: implementar o Puppeteer Stealth#

O uso do Puppeteer é fácil de ser identificado, pois sua versão base envia alguns sinais claros de bot, como seu nome de agente de usuário, que pode facilmente solicitar um CAPTCHA. E para provar isso, vamos tentar acessar o sannysoft.com, um site de verificação. Para isso, crie uma instância headless do Chrome, passe o URL de destino para a função goto() para aguardar o carregamento da página e faça uma captura de tela.
  import NextCaptcha from 'nextcaptcha-ts';
  import puppeteer from 'puppeteer';

  const url = "https://bot.sannysoft.com"
  const browser = await puppeteer.launch({
      headless: true
  });
  const page = await browser.newPage();
  await page.goto(url, {
      waitUntil: 'networkidle0',
  });
  console.log('making a screenshot ...');
  await page.screenshot({ path: 'screenshot.png' });
  await sleep(30000)
  console.log('closing browser .. ');
  await browser.close();


  function sleep(time = 1000) {
      return new Promise((resolve) => {
          setTimeout(() => {
              resolve(true)
          }, time)
      })
  }
Ele mostrará que você está presente no WebDrive (falhou) Acesso negado! sannysoft detectou tráfego não humano e bloqueou nosso bot. É aqui que o puppeteer-extra-plugin-stealth, um plugin para puppeteer-extra e dramaturgo-extra para evitar a detecção, vem em socorro. Isso fará com que seu tráfego pareça mais manual e evitará bloqueios, ou seja, com CAPTCHAs. Para começar, instale o pacote Stealth
  npm install puppeteer-extra puppeteer-extra-plugin-stealth
  import puppeteer from 'puppeteer-extra';
  import puppeteer-extra-plugin-stealth from 'puppeteer-extra-plugin-stealth';

  const StealthPlugin = require('puppeteer-extra-plugin-stealth')
  puppeteer.use(StealthPlugin())
então use o marionetista normalmente
  const url = "https://bot.sannysoft.com"
  const browser = await puppeteer.launch({
      headless: true
  });
  const page = await browser.newPage();
  await page.goto(url, {
      waitUntil: 'networkidle0',
  });
  console.log('making a screenshot ...');
  await page.screenshot({ path: 'screenshot.png' });
  await sleep(30000)
  console.log('closing browser .. ');
  await browser.close();


  function sleep(time = 1000) {
      return new Promise((resolve) => {
          setTimeout(() => {
              resolve(true)
          }, time)
      })
  }
Vejamos a saída: check-success Sucesso! Isso ajuda a contornar o CAPTCHA com o Puppeteer.

Conclusão#

Para uma recuperação de dados bem-sucedida, você precisa de uma ferramenta poderosa na qual confiar totalmente para lidar com CAPTCHA. O NextCaptcha fornece uma API fácil de configurar que permite superar todos os desafios anti-bot. Você pode experimentá-la gratuitamente hoje mesmo.