Туториалы по обходу капчи

Как обойти слайдер-капчу с помощью Puppeteer и 2Captcha

Демо находится в репозитории проекта по этой ссылке.

Введение

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


Преимущества и недостатки

Преимущества

  • Простая реализация: Легко интегрируется с минимальными техническими знаниями.
  • Доступность: Требуется минимальное взаимодействие с мышью или сенсорным экраном.
  • Совместимость с мобильными устройствами: Предусмотрены естественные действия свайпа для пользователей мобильных устройств.

Недостатки

  • Проблемы с доступностью: Могут исключать пользователей с ограниченными возможностями.
  • Уязвимость к автоматизации: Подвержены обходу с использованием продвинутых методов автоматизации.
  • Раздражение пользователей: Может ухудшать пользовательский опыт при неправильной реализации.

Как обойти слайдер-капчу

Для обхода слайдер-капч можно использовать такие фреймворки автоматизации, как Puppeteer, и сторонние сервисы, такие как 2Captcha. Ниже приведено пошаговое руководство:

1. Подготовьте окружение

Установите необходимые зависимости:

yarn add puppeteer @2captcha/captcha-solver

Установите API-ключ в качестве переменной окружения:

export APIKEY=ваш_api_ключ

2. Настройте проект

Убедитесь, что ваш файл package.json содержит следующий параметр для использования модулей ES6:

{
  "type": "module"
}

3. Реализация кода

Создайте файл с именем index.js и начните разработку:

Импортируйте зависимости

import puppeteer from 'puppeteer';
import { Solver } from '@2captcha/captcha-solver';
import { readFile } from 'node:fs/promises';

const solver = new Solver(process.env.APIKEY);
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;

Запустите браузер и откройте страницу с капчей

(async () => {
  const browser = await puppeteer.launch({
    devtools: true,
    slowMo: 11,
  });
  const [page] = await browser.pages();
  await page.goto('https://www.jqueryscript.net/demo/image-puzzle-slider-captcha/');
  let success = false;

Обработка согласий и подготовка инструкций

  while (!success) {
    try {
      const consentButton = await page.waitForSelector('button.fc-button.fc-cta-do-not-consent.fc-secondary-button', { timeout: 3000 });
      if (consentButton) consentButton.click();
    } catch (e) {}

    const instruction = await readFile('./imginstructions.png', { encoding: 'base64' });

Решение капчи с использованием 2Captcha API

    const img = await page.evaluate(() => document.querySelector('canvas').toDataURL());
    if (img.length < 2000) continue;

    try {
      const res = await solver.coordinates({
        body: img,
        textinstructions: 'Puzzle center | Центр пазла',
        imginstructions: instruction,
      });

      const slider = await page.$('div.slider');
      const bb = await slider.boundingBox();

      const init = {
        x: bb.x + bb.width / 2,
        y: bb.y + bb.height / 2,
      };

      const target = {
        x: bb.x + bb.width / 2 + parseFloat(res.data[0].x) - 20,
        y: res.data[0].y,
      };

      await page.mouse.move(init.x, init.y);
      await page.mouse.down();
      await page.mouse.move(target.x, target.y, { steps: randomInt(50, 100) });
      await page.mouse.up();

Проверка и завершение

      await page.waitForNavigation({ timeout: 5000 });
      success = true;
      await solver.goodReport(res.id);
      await page.screenshot({ path: 'screenshot.png' });
      await page.close();
      await browser.close();
    } catch (e) {
      await solver.badReport(res.id);
    }
  }
})();

Этические аспекты

При обходе капч всегда соблюдайте этические нормы. Убедитесь, что ваши действия соответствуют местным законам, и избегайте несанкционированного доступа к системам.


Часто задаваемые вопросы (FAQ)

Зачем использовать Puppeteer для автоматизации капч?

Puppeteer предоставляет мощный фреймворк для управления действиями браузера, что делает его идеальным для работы с капчами.

Что такое 2Captcha?

2Captcha — это сервис, решающий капчи с помощью человеческих работников и предоставляющий результаты через API.


Ссылки

Поддержка

Для дополнительной помощи свяжитесь с поддержкой через:


Следуя этому руководству, вы сможете эффективно обходить слайдер-капчи, соблюдая при этом этические нормы.