Распознавание капчи в Puppeteer для Node.js и puppeteer-extra
Оставьте puppeteer-extra-plugin-recaptcha как есть или вызывайте через await npm-клиент capskip, и headless Chrome получит ответ для reCAPTCHA, Turnstile, GeeTest v3 или искажённой картинки с текстом, решённый на вашем собственном ПК без счётчика за каждую страницу.
- Готов к puppeteer-extra
- npm-клиент на промисах
- Headless-запуски без счётчика
- открыть /signup
- заполнить форму
- решить капчу
- submit
4 passed0 заблокированоКогда 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
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 к капчам
-
Установите приложение рядом с Chrome
Установите CapSkip на Windows-машину или VPS, где работают ваши скрипты Puppeteer, и оставьте его открытым. Одна машина для обоих проще всего, а для способа с файлом hosts это обязательно. Скачать установщик
-
Активируйте тариф или пробный период
Выберите месячный тариф или бесплатный пробный период (500 решений на 3 дня), затем войдите в CapSkip с данными, присланными вам на почту. Сравнить тарифы
-
Вызывайте его из кода Puppeteer
Выполните npm install capskip для прямых вызовов или включите эмулятор 2Captcha в режиме файла hosts, чтобы puppeteer-extra продолжал работать, затем запустите скрипт на реальной странице. Открыть Node.js SDK
Распознавание капчи в Puppeteer: локально или с оплатой за вызов
Оба варианта подключаются к одному и тому же коду Puppeteer. Строки показывают, в чём разница, когда проверка покидает ваш скрипт.
| Функция | CapSkip | 2Captcha & API-сервисы |
|---|---|---|
| Как вы платите | От $35 в месяц, без платы за подключение, решения не считаются | Предоплата по цене за тысячу решений, расходы растут с числом страниц |
| Где происходит решение | Внутри CapSkip, на компьютере, где работает ваш краулер | Удалённый API или ферма людей-решателей |
| Подключение к Node.js | npm-клиент, расширение браузера или локальный API | API-ключ плюс клиент поставщика или puppeteer-extra |
| puppeteer-extra-plugin-recaptcha | Продолжает работать, ответы локально через эмулятор 2Captcha | Работает, но каждый токен списывается с платного баланса |
| Время решения капчи-картинки | Около 0,1 секунды, ответ на той же машине | Загрузка, очередь и опрос для каждого изображения |
| Параллельные вкладки | Без ограничения потоков; темп задаёт ваше оборудование | Лимиты параллельности или более дорогой тариф |
| Данные капчи | Остаётся на машине, где работает Chrome | Уходит третьей стороне с каждым решением |
Цены
Хватит платить за каждое решение
Выберите лицензию
Лицензия Bronze
$35/ месяц
Мгновенная активация лицензии
Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.
Функции те же. Больше машин, больше производительность.
Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому 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?
Может ли puppeteer-extra-plugin-recaptcha отправлять работу в CapSkip?
Нужен ли плагину по-прежнему пополненный аккаунт 2Captcha?
Почему после page.solveRecaptchas() на странице остаются некоторые проверки?
Может ли Puppeteer пройти полноэкранную проверку Cloudflare?
Достаточно ли puppeteer-extra-plugin-stealth, чтобы избежать капчи?
Что меняется для reCAPTCHA v3 в Puppeteer?
Может ли расширение CapSkip работать в headless Puppeteer?
Дайте каждому запуску Puppeteer способ пройти капчу
Установите CapSkip рядом с вашим проектом на Node.js, оставьте свой плагин или добавьте npm-клиент, и следующая проверка будет стоить одного вызова с await вместо зависшей вкладки, по той же месячной цене.
