Нажмите "Enter" для перехода к содержанию

Как обойти КАПЧУ с помощью Selenium и Node.js

В этой статье я объясню, как обойти CAPTCHA с помощью Selenium и Node.js. Мы рассмотрим разные подходы и современные инструменты, которые это позволяют, при этом сохраняя все простым и практичным для любого разработчика, стремящегося справиться с этими трудностями.

Что такое CAPTCHA?

CAPTCHA расшифровывается как «Совершенно Автоматизированный Общедоступный Тест Тьюринга для различения компьютеров и людей». Он создает задачи, такие как искаженный текст, головоломки и reCAPTCHA, чтобы гарантировать, что только люди смогут легко их решить. Эти задания, такие как выделение объектов на изображениях или ввод смешанного текста, просты для человека, но трудны для ботов. CAPTCHA предотвращает доступ автоматизированных систем к веб-сайтам или услугам, защищая их от бот-трафика.

Selenium и Node.js

Selenium — это популярный инструмент автоматизации браузера, который позволяет пользователям автоматизировать действия в браузере. С помощью Node.js, быстрого и масштабируемого JavaScript-окружения, вы можете создавать мощные скрипты для веб-автоматизации, чтобы взаимодействовать с веб-сайтами.

  • Selenium WebDriver: инструмент для автоматизации браузеров.
  • Node.js: используется для обработки асинхронных задач и интеграции Selenium в рабочие процессы веб-скрапинга.

Пошаговое руководство по обходу CAPTCHA

Установка необходимых инструментов

Для начала вам потребуется установленный Node.js, а также Selenium и драйвер браузера, такой как ChromeDriver.

    npm install selenium-webdriver
    npm install chromedriver

    Кроме того, установите undetected-chromedriver, пакет, который помогает обходить капчи, делая ChromeDriver необнаруживаемым.

    npm install undetected-chromedriver

    Настройка Selenium с помощью Node.js

    После установки создайте простой скрипт Selenium для открытия веб-сайта.

    const { Builder, By } = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    (async function example() {
    let driver = await new Builder().forBrowser('chrome').build();
    try {
    await driver.get('https://example.com');
    } finally {
    await driver.quit();
    }
    })();

    Обнаружение и обработка КАПЧИ

    Когда обнаруживается проблема с CAPTCHA, простейшие решения часто требуют взаимодействия с человеком. Но что, если это невозможно? В случае с reCAPTCHA v2 вы можете:

    Используйте сторонние средства для решения капчи: такие сервисы, как Bright Data, 2Captcha или Anti-Captcha, позволяют вам передать решение капчи на аутсорсинг специалистам.

    npm install 2captcha

    Пример использования 2Сaptcha:

    const TwoCaptcha = require('2captcha');
    const apiKey = 'YOUR_2CAPTCHA_API_KEY';
    const captchaSolver = new TwoCaptcha(apiKey);
    // Example reCAPTCHA handling
    async function solveCaptcha(siteKey, pageUrl) {
    return new Promise((resolve, reject) => {
    captchaSolver.solveRecaptchaV2({
    sitekey: siteKey,
    url: pageUrl
    }, (err, result) => {
    if (err) reject(err);
    resolve(result);
    });
    });
    }

    Использование необнаруживаемого ChromeDriver

    Некоторые программы CAPTCHA, такие как reCAPTCHA v3 от Google, анализируют поведение браузера, обнаруживая ботов на основе отпечатков браузера. Используя undetected-chromedriver, вы можете снизить вероятность того, что вас обнаружат как бота.

    Пример:

    const undetectedChromedriver = require('undetected-chromedriver');
    (async function example() {
    const driver = await new undetectedChromedriver.Builder()
    .forBrowser('chrome')
    .build();
    try {
    await driver.get('https://example.com');
    } finally {
    await driver.quit();
    }
    })();

    Этот инструмент предотвращает распознавание вашей автоматизации как бота.

    Решение сложных капч

    Капчи с изображениями

    Для ввода капчи на основе изображений вам может потребоваться извлечь изображение и использовать сервисы распознавания изображений или распознавания капчи, такие как Anti-Captcha. Более продвинутым вариантом была бы интеграция методов машинного обучения, таких как сверточные нейронные сети (CNN), для решения этих задач на основе изображений.

    Обход reCAPTCHA v3

      reCAPTCHA v3 работает в фоновом режиме, отслеживая активность пользователей и выставляя оценку на основе шаблонов взаимодействия. С версией 3 обойти ее становится сложнее, поскольку вам не нужно ничего решать явно, но вы можете обмануть алгоритм подсчета очков, имитируя шаблоны взаимодействия с браузером, подобные человеческим. Методы включают:

      • Произвольное перемещение указателя мыши
      • Небольшие задержки между действиями
      • Использование реальных профилей браузера
      async function humanLikeBehavior(driver) {
      // Move the mouse randomly
      await driver.actions().move({ origin: 'element', x: Math.random() * 100, y: Math.random() * 100 }).perform();
      // Introduce random pauses
      await driver.sleep(Math.random() * 2000 + 1000);
      }

      Блокировка IP-адресов и снятие отпечатков с браузера

      Многие системы, использующие CAPTCHA, отслеживают IP-адреса пользователей, пытающихся их распознать. Вы можете обойти это, меняя IP-адреса с помощью прокси-серверов:

      npm install proxy-agent

      Пример

      const ProxyAgent = require('proxy-agent');
      (async function example() {
      const options = new chrome.Options().addArguments(' - proxy-server=PROXY_IP:PORT');
      let driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();
      try {
      await driver.get('https://example.com');
      } finally {
      await driver.quit();
      }
      })();

      Этические и юридические соображения

      Несмотря на то, что для тестирования или автоматизации можно обойти ввод капчи, важно понимать юридические и этические последствия этого. Многие веб-сайты прямо запрещают автоматический доступ в своих условиях предоставления услуг. Используйте автоматизацию ответственно, особенно если работаете с конфиденциальными доменами.

      Вывод

      Обход CAPTCHA — сложная и постоянно меняющаяся задача, но вы можете преодолеть многие препятствия, комбинируя такие инструменты, как Selenium, Node.js, необнаруживаемый ChromeDriver и сервисы для распознавания капчи. При применении этих методов всегда соблюдайте правовые и этические рамки, чтобы обеспечить соответствие ваших проектов автоматизации требованиям.

      Обсуждение закрыто.