Puppeteer

Распознавание капчи в Puppeteer для Node.js и puppeteer-extra

Оставьте puppeteer-extra-plugin-recaptcha как есть или вызывайте через await npm-клиент capskip, и headless Chrome получит ответ для reCAPTCHA, Turnstile, GeeTest v3 или искажённой картинки с текстом, решённый на вашем собственном ПК без счётчика за каждую страницу.

Windows x64·Работает локально, поэтому капча не покидает ваш компьютер
  • Готов к puppeteer-extra
  • npm-клиент на промисах
  • Headless-запуски без счётчика
капч в месяц40,000
40.0k250.0k
В других сервисах поштучно, примерно $1.40 за 1000$56.00
CapSkip Bronze, фиксированно$35.00
$21.00остаётся у вас в карманекаждый месяц при таком объёме

Когда headless Chrome натыкается на reCAPTCHA, виджет Turnstile или искажённую картинку, CapSkip выступает сервисом распознавания капчи для Puppeteer рядом с вашим краулером на Node.js. Он работает на том же Windows-ПК или VPS и отдаёт скрипту ответ, который нужно вставить, вместо вкладки, отвалившейся по тайм-ауту. Puppeteer может кликать и печатать где угодно, но сам получить действительный токен не может. Эту часть берёт на себя приложение CapSkip по фиксированной лицензии с безлимитными решениями, что отлично подходит браузеру, который может открыть сотни вкладок за один обход.

Насколько глубокой будет интеграция, решаете вы. Проект, который уже использует puppeteer-extra-plugin-recaptcha, можно не трогать, и всё равно ответы будет давать CapSkip через эмулятор 2Captcha. Новый код может выполнить npm install capskip и напрямую вызывать через await solver.recaptcha() или solver.turnstile(), с готовой типизацией для TypeScript.

Поддержка шире того, что ищет плагин. Входят reCAPTCHA v2, v3 и Enterprise, Turnstile и как виджет, и как полноэкранная страница проверки, а также слайдеры GeeTest v3, CaptchaFox, Capy Puzzle, AWS WAF CAPTCHA, пара proof-of-work ALTCHA и Friendly Captcha и тысячи стилей капчи-картинок, каждый из которых читается примерно за 0,1 секунды. hCaptcha тоже входит. GeeTest v4 и FunCaptcha не поддерживаются. Stealth-плагины по-прежнему полезны, потому что проверки появляются реже; CapSkip проходит те, что всё же прорвались.

Ваша настройка puppeteer-extra остаётся ровно такой, как написана. Плагин recaptcha сохраняет провайдера 2captcha и вызовы page.solveRecaptchas(). Как только в приложении CapSkip включён эмулятор 2Captcha и он добавлен в файл hosts, на эти вызовы отвечает машина, на которой работает Chrome, а не предоплаченный баланс. Пройти руководство по настройке

Что распознавание капчи для Puppeteer добавляет headless Chrome

Прямая замена puppeteer-extra-plugin-recaptcha

Плагин сохраняет свой provider id и каждый вызов page.solveRecaptchas(). Когда эмулятор 2Captcha работает в режиме файла hosts, его запросы остаются на вашем собственном ПК, и никакой баланс не расходуется.

Один await-метод на каждый тип капчи

Выполните npm install capskip, создайте один клиент, затем вызывайте через await recaptcha(), turnstile(), geetest() или normal(). Каждый из них возвращает result.code, а определения TypeScript поставляются прямо в пакете.

Страницы Turnstile с правильным user agent

solver.turnstile() покрывает как встроенный виджет, так и полноэкранную проверку Cloudflare. Для страницы он также возвращает userAgent, к которому привязан токен, и вы применяете его через page.setUserAgent.

Расширение внутри запущенного вами Chrome

Загрузите расширение CapSkip в экземпляр Chrome, который запускает Puppeteer, в окне или в новом headless-режиме, и виджеты проходятся прямо на странице без единой строчки кода для токенов.

Много вкладок, никакой очереди решений

Запускайте по одному решению на страницу и собирайте их через Promise.all. Без ограничения частоты на ключ и с безлимитными потоками пропускную способность задают ваши процессор и память, а не тариф поставщика.

Повторы никогда не попадают в счёт

Bronze за $35 в месяц на одну машину включает безлимитные решения. Обход, который перезагружает страницу десять раз, или набор тестов, крутящийся всю ночь, стоят ровно столько же.

Три способа подключить CapSkip к Puppeteer

JavaScript
const puppeteer = require('puppeteer');
const { CapSkip } = require('capskip');

const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com/login');

  const sitekey = await page.$eval('.g-recaptcha', el => el.dataset.sitekey);
  const { code } = await solver.recaptcha(sitekey, page.url());

  await page.evaluate(t => {
    document.getElementById('g-recaptcha-response').innerHTML = t;
  }, code);
  await page.click('button[type=submit]');
})();

Puppeteer считывает sitekey, solver.recaptcha() из пакета capskip возвращает токен, а page.evaluate вставляет его перед нажатием кнопки отправки.

Расширение в запущенном браузере

Пока приложение работает, установите расширение CapSkip в браузер, который открывает Puppeteer, и проверки будут проходиться сами, пока ваш скрипт ждёт следующий селектор. Есть сборки для Chrome и Firefox.

npm-клиент capskip

Клиент для Node.js на промисах с типами TypeScript. Получайте через await токен или текст для каждой страницы и вставляйте его через page.evaluate. Также есть клиенты для Python, PHP и C#.

Эмуляция API 2Captcha для старого кода

puppeteer-extra-plugin-recaptcha и другие клиенты в стиле 2Captcha продолжают отправлять те же запросы, а локальный API отвечает на них на вашей машине, так что существующий код на Node править не нужно.

Проверьте на демо-странице с reCAPTCHA

Направьте тестовый скрипт Puppeteer или Chrome с расширением на наше живое демо reCAPTCHA v2 и посмотрите, как возвращается токен, прежде чем направить тот же код на реальную цель.

Подготовьте проект на Puppeteer к капчам

  1. Установите приложение рядом с Chrome

    Установите CapSkip на Windows-машину или VPS, где работают ваши скрипты Puppeteer, и оставьте его открытым. Одна машина для обоих проще всего, а для способа с файлом hosts это обязательно. Скачать установщик

  2. Активируйте тариф или пробный период

    Выберите месячный тариф или бесплатный пробный период (500 решений на 3 дня), затем войдите в CapSkip с данными, присланными вам на почту. Сравнить тарифы

  3. Вызывайте его из кода Puppeteer

    Выполните npm install capskip для прямых вызовов или включите эмулятор 2Captcha в режиме файла hosts, чтобы puppeteer-extra продолжал работать, затем запустите скрипт на реальной странице. Открыть Node.js SDK

Распознавание капчи в Puppeteer: локально или с оплатой за вызов

Оба варианта подключаются к одному и тому же коду Puppeteer. Строки показывают, в чём разница, когда проверка покидает ваш скрипт.

ФункцияCapSkip2Captcha & API-сервисы
Как вы платитеОт $35 в месяц, без платы за подключение, решения не считаютсяПредоплата по цене за тысячу решений, расходы растут с числом страниц
Где происходит решениеВнутри CapSkip, на компьютере, где работает ваш краулерУдалённый API или ферма людей-решателей
Подключение к Node.jsnpm-клиент, расширение браузера или локальный APIAPI-ключ плюс клиент поставщика или puppeteer-extra
puppeteer-extra-plugin-recaptchaПродолжает работать, ответы локально через эмулятор 2CaptchaРаботает, но каждый токен списывается с платного баланса
Время решения капчи-картинкиОколо 0,1 секунды, ответ на той же машинеЗагрузка, очередь и опрос для каждого изображения
Параллельные вкладкиБез ограничения потоков; темп задаёт ваше оборудованиеЛимиты параллельности или более дорогой тариф
Данные капчиОстаётся на машине, где работает ChromeУходит третьей стороне с каждым решением

Цены

Хватит платить за каждое решение

Выберите лицензию

Лицензия Bronze

$35/ месяц

Подписаться на Bronze

Мгновенная активация лицензии

Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.

Функции те же. Больше машин, больше производительность.

Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому Silver решает вдвое больше капч одновременно, а Gold втрое больше.

  • Безлимитное решение, без дневных ограничений
  • Безлимитные потоки, скорость растёт вместе с оборудованием
  • Точность распознавания от 90% до 100%
  • Прямая замена API основных сервисов распознавания
  • Работает почти с любым инструментом, без программирования
  • REST API, SDK и расширение для браузера
  • Бесплатное обучение, когда появляется новый тип капчи
  • Работает на вашей машине, ничего с неё не уходит

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

Просто хотите сначала попробовать?

Начните с бесплатного 3-дневного пробного периода и решите 500 капч любого типа на своих целевых сайтах.

Оформите бесплатный пробный период

Как решить reCAPTCHA в Puppeteer: через плагин или через SDK

Puppeteer даёт два надёжных способа решать reCAPTCHA с CapSkip. Способ с плагином использует puppeteer-extra-plugin-recaptcha без изменений. Способ с SDK вызывает npm-пакет capskip напрямую и также охватывает Turnstile, GeeTest v3 и капчи-картинки, которые плагин вообще не ищет.

Способ с плагином. Откройте приложение CapSkip, включите эмулятор 2Captcha, затем нажмите Add to hosts file. Это перенаправляет 2captcha.com на CapSkip только для этого компьютера, поэтому процесс Node, в котором работает Puppeteer, должен находиться на той же машине, что и приложение. Зарегистрируйте плагин как раньше, с provider id 2captcha и ключом из настроек CapSkip в поле token (если проверка ключа выключена, принимается любой текст). После каждого перехода page.solveRecaptchas() находит виджеты, отправляет их туда, что он по-прежнему считает 2Captcha, и подставляет токены, которые возвращает CapSkip.

Способ с SDK. После npm install capskip создайте один клиент для 127.0.0.1 на порту 8080, который слушает свежеустановленный CapSkip. Считайте sitekey через page.$eval, затем вызовите await solver.recaptcha(sitekey, page.url()). Невидимому виджету нужен invisible: 1, а reCAPTCHA v3 нужны version v3 и action, который использует страница.

Уложитесь в две минуты, потому что токен истекает. Запишите result.code в textarea g-recaptcha-response через page.evaluate, вызовите callback виджета, если он объявлен, и отправьте форму. Turnstile работает по точно такой же схеме с solver.turnstile() и полем cf-turnstile-response. Для капчи-картинки сделайте скриншот элемента в base64 и передайте его в solver.normal() строкой data:image/png;base64.

Руководства по теме: Сервис распознавания капчи для Node.js · reCAPTCHA v2 на Node.js · Альтернатива API 2Captcha

Как выглядит решение reCAPTCHA в скрипте Puppeteer?
Три шага с await и npm-клиентом capskip: page.$eval считывает значение data-sitekey, solver.recaptcha(sitekey, page.url()) возвращает токен, а page.evaluate записывает result.code в g-recaptcha-response перед нажатием кнопки отправки. В проекте на puppeteer-extra ту же работу выполняет один вызов page.solveRecaptchas().
Может ли puppeteer-extra-plugin-recaptcha отправлять работу в CapSkip?
Да, без правок. Оставьте provider id 2captcha, затем в приложении CapSkip включите эмуляцию 2Captcha и нажмите кнопку Add рядом с Hosts file. После этого запросы плагина к 2captcha.com будут направляться к CapSkip на этом компьютере, поэтому запускайте скрипт на том же ПК или VPS, что и приложение.
Нужен ли плагину по-прежнему пополненный аккаунт 2Captcha?
Ни аккаунта, ни баланса. Плагин всё ещё ожидает значение в поле token, поэтому вставьте API-ключ из настроек CapSkip или любую строку, если проверка ключа выключена. За вызовы ничего не списывается, потому что запросы никогда не покидают вашу машину.
Почему после page.solveRecaptchas() на странице остаются некоторые проверки?
Этот метод ищет только виджеты reCAPTCHA и hCaptcha, и CapSkip решает обе через эмуляцию 2Captcha. Всё остальное на странице, например Turnstile, слайдер GeeTest v3, ALTCHA или капча-картинка, плагин не видит, поэтому обрабатывайте это через SDK capskip в том же скрипте, прямо рядом с вызовом плагина.
Может ли Puppeteer пройти полноэкранную проверку Cloudflare?
Да. Для виджета, встроенного в форму, передайте solver.turnstile() sitekey и текущий URL, затем заполните cf-turnstile-response. Полноэкранной проверке также нужны строки data и pagedata, которые отдаёт страница проверки. Её результат содержит userAgent, под которым выдан токен, поэтому переключитесь на него через page.setUserAgent перед отправкой.
Достаточно ли puppeteer-extra-plugin-stealth, чтобы избежать капчи?
Он снижает частоту их появления, но не исключает их. Stealth-патчи скрывают признаки, по которым headless Chrome выдаёт автоматизацию, но сайт всё равно может показать проверку, и на неё нужен настоящий ответ. Используйте stealth, чтобы проверок было меньше, а CapSkip для тех, что остаются.
Что меняется для reCAPTCHA v3 в Puppeteer?
Здесь нет виджета для заполнения, только оценка. Вызовите solver.recaptcha() с version, равным v3, и строкой action, которую сайт передаёт в grecaptcha.execute, затем отправьте токен вместе с запросом, который сделала бы страница. Google оценивает токены v3 по репутации IP и сигналам браузера, поэтому чистый прокси важен, когда сайту нужна высокая оценка.
Может ли расширение CapSkip работать в headless Puppeteer?
Да, в новом headless-режиме Chrome, который используется по умолчанию начиная с Puppeteer 22, и с видимым окном. Старый headless shell расширения не поддерживает вовсе. В любом случае расширению нужно запущенное приложение CapSkip. У SDK и способа через puppeteer-extra такого ограничения нет, поскольку ни один из них не поручает решение браузеру.

Дайте каждому запуску Puppeteer способ пройти капчу

Установите CapSkip рядом с вашим проектом на Node.js, оставьте свой плагин или добавьте npm-клиент, и следующая проверка будет стоить одного вызова с await вместо зависшей вкладки, по той же месячной цене.