Join And Get Free Trial!

Come bypassare il CAPTCHA nel 2024#

logoNextCaptcha
April 15,2024

Cosa imparerai?#

imparerai come bypassare il CAPTCHA con Puppeteer in Nodejs utilizzando diversi metodi:

Puppeteer può bypassare il CAPTCHA?#

La risposta è sì, ci sono due modi principali per aggirare i CAPTCHA: utilizzando un risolutore CAPTCHA (veloce ed economico) o implementando tecniche avanzate per prevenirli

Metodo n. 1: bypassare il CAPTCHA con Puppeteer e NextCaptcha#

Lavoreremo con il servizio di risoluzione chiamato NextCaptcha per gestire i CAPTCHA in Puppeteer utilizzando una demo ufficiale. Quindi, installiamo alcune dipendenze e importiamo i moduli
  npm install -S puppeteer nextcaptcha-ts
  import NextCaptcha from 'nextcaptcha-ts';
  import puppeteer from 'puppeteer';
Quindi, apri un'istanza di Chrome e vai alla pagina demo.
  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',
  });
Il passaggio successivo è individuare la chiave del sito Web CAPTCHA e l'URL del sito Web nel file Client NextCaptcha, che restituisce la soluzione testuale. Salvalo nella variabile 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();

Metodo n. 2: implementa la furtività del burattinaio#

L'uso di Puppeteer è facile da identificare poiché la sua versione base invia alcuni segnali chiari al bot, come il nome dell'agente utente, che potrebbe facilmente richiedere un CAPTCHA. E per dimostrarlo, proviamo ad accedere a sannysoft.com, un sito di controllo. Per farlo, crea un'istanza di Chrome headless, passa l'URL di destinazione alla funzione goto() per attendere il caricamento della pagina e acquisisci uno screenshot.
  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)
      })
  }
Mostrerà che WebDrive è presente (non riuscito) Accesso negato! sannysoft ha rilevato traffico non umano e ha bloccato il nostro bot. È qui che viene in soccorso puppeteer-extra-plugin-stealth, un plug-in per puppeteer-extra e playwright-extra per impedire il rilevamento. Renderà il tuo traffico più manuale ed eviterà che venga bloccato, ad esempio con i CAPTCHA. Per cominciare, installa il pacchetto 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())
quindi usa il burattinaio come al solito
  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)
      })
  }
Diamo un'occhiata all'output: check-success Successo! Questo aiuta a bypassare il CAPTCHA con Puppeteer.

Conclusione#

Per un recupero dei dati di successo, è necessario uno strumento potente su cui fare affidamento completamente per gestire i CAPTCHA. NextCaptcha fornisce un'API facile da configurare che ti consente di superare tutte le sfide anti-bot e puoi provala gratuitamente oggi.