Jak ominąć CAPTCHA w 2024 r#

Czego się nauczysz?#

dowiesz się, jak ominąć CAPTCHA za pomocą Puppeteer w Nodejs przy użyciu różnych metod:

Czy Lalkarz może ominąć CAPTCHA?#

Odpowiedź brzmi: tak, istnieją dwa główne sposoby ominięcia CAPTCHA: użycie narzędzia CAPTCHA (szybkiego i tańszego) lub wdrożenie zaawansowanych technik, aby temu zapobiec

Metoda nr 1: Pomiń CAPTCHA za pomocą Puppeteer i NextCaptcha#

Będziemy współpracować z usługą solwera o nazwie NextCaptcha, aby obsłużyć CAPTCHA w Puppeteer, korzystając z oficjalnej wersji demonstracyjnej. Zainstalujmy więc pewne zależności i zaimportujmy moduły
  npm install -S puppeteer nextcaptcha-ts
  import NextCaptcha from 'nextcaptcha-ts';
  import puppeteer from 'puppeteer';
Następnie otwórz instancję Chrome i przejdź do strony demonstracyjnej.
  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',
  });
Następnym krokiem jest zlokalizowanie klucza witryny CAPTCHA i adresu URL witryny w pliku Klient NextCaptcha, który zwraca rozwiązanie tekstowe. Zapisz go w zmiennej 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();

Metoda nr 2: Wdrożenie ukrycia lalkarza#

Użycie Puppeteera jest łatwe do zidentyfikowania, ponieważ jego podstawowa wersja wysyła pewne wyraźne sygnały od botów, takie jak nazwa User-Agent, co może z łatwością wywołać CAPTCHA. Aby to udowodnić, spróbujmy uzyskać dostęp do sannysoft.com, witryny sprawdzającej. W tym celu utwórz bezgłową instancję Chrome, przekaż docelowy adres URL do funkcji goto() , aby poczekać na załadowanie strony i zrób zrzut ekranu.
  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)
      })
  }
Pokaże, że jesteś obecny na WebDrive (nie powiodło się) Brak dostępu! sannysoft wykrył ruch inny niż ludzki i zablokował naszego bota. W tym miejscu na ratunek przychodzi puppeteer-extra-plugin-stealth, wtyczka do puppeteer-extra i dramaturg-extra zapobiegająca wykryciu. Dzięki temu Twój ruch będzie wyglądał na bardziej ręczny i zapobiegnie blokowaniu, np. za pomocą CAPTCHA. Na początek zainstaluj pakiet 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())
następnie użyj lalkarza jak zwykle
  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)
      })
  }
Spójrzmy na dane wyjściowe: check-success Powodzenie! Pomaga to ominąć CAPTCHA z Puppeteer .

Wniosek#

Aby pomyślnie odzyskać dane, potrzebujesz potężnego narzędzia, na którym możesz całkowicie polegać w obsłudze CAPTCHA. NextCaptcha zapewnia łatwy w konfiguracji interfejs API, który pozwala pokonać wszystkie wyzwania związane z ochroną przed botami. Możesz już dziś wypróbować go za darmo.