В этом руководстве вы узнаете:
- Что такое CAPTCHA и можно ли ее обойти
- Как реализовать логику обхода CAPTCHA в Playwright
- Что делать, если CAPTCHA все еще отображается.
Приступим!
Что такое CAPTCHA и можно ли ее обойти?
CAPTCHA, сокращение от «Completely Automated Public Turing tests to tell Computers and Humans Apart» (полностью автоматизированные публичные тесты Тьюринга для отличия компьютеров от людей), — это тест, используемый для отличия человеческих пользователей от автоматических ботов. Это задача, специально разработанная так, чтобы быть легкой для людей, но сложной для машин.

Популярные поставщики CAPTCHA включают Google reCAPTCHA, hCaptcha и BotDetect. Обычно они поддерживают один или несколько из следующих типов CAPTCHA:
- Задачи на основе изображений: пользователи должны идентифицировать определенные объекты в сетке изображений или идентифицировать изображения, которые соответствуют заданному предположению.
- Тесты на основе текста: пользователи должны ввести последовательность искаженных букв и цифр.
- Задачи на основе аудио: пользователям предлагается ввести слова, которые они слышат.
- Задачи-головоломки: пользователи должны решить простую головоломку, например, переместить деталь на место.
CAPTCHA может быть частью определенного пользовательского потока, например, последним шагом при отправке формы:

В этих случаях CAPTCHA всегда отображается и боты не могут ее обойти. Вы можете интегрировать свое программное обеспечение с библиотеками для решения CAPTCHA, чтобы автоматизировать их, или с сервисами, которые полагаются на операторов-людей для решения этих задач в режиме реального времени. Однако жестко запрограммированные CAPTCHA не являются распространенными, поскольку они раздражают и портят пользовательский опыт.
Чаще всего CAPTCHA используются как часть более широких решений для борьбы с ботами, таких как WAF ( межсетевые экраны веб-приложений):

Эти системы динамически отображают CAPTCHA, когда подозревают, что пользователь может быть ботом. В таких случаях CAPTCHA можно обойти, заставив бота имитировать поведение человека. Тем не менее, это игра в кошки-мышки, которая требует постоянного обновления вашего автоматизированного скрипта, чтобы избежать новых мер по обнаружению ботов.
Более эффективным решением для обхода CAPTCHA является использование инструмента на основе эмуляции пользователя, который всегда обновляется, такого как CAPTCHA Solver от Bright Data.
Playwright Bypass CAPTCHA: пошаговое руководство
Как вы только что узнали, эффективный подход к обходу CAPTCHA — это заставить ваш автоматизированный скрипт имитировать поведение человека, используя отпечаток пальца, похожий на человеческий. Одним из лучших инструментов для этой цели является Playwright, ведущая библиотека автоматизации браузера, которая входит в список лучших инструментов для Веб-скрейпинга года.
В этом разделе руководства вы узнаете, как реализовать логику обхода CAPTCHA в Playwright. Вы узнаете, как достичь этой цели с помощью скрипта Node.js на JavaScript. Если вы разработчик Python, вы можете ознакомиться с нашим аналогичным руководством по Playwright Stealth.
Приступим!
Шаг № 1: Инициализируйте свой проект Node.js
Если у вас уже есть скрипт Playwright для Веб-скрейпинга или тестирования, вы можете пропустить этот шаг. В противном случае создайте папку для вашего проекта Playwright CAPTCHA solver и введите ее в терминале:
mkdir playwright_demo
cd playwright_demo
Инициализируйте новый проект Node.js внутри него с помощью команды npm init ниже:
npm init -y
Откройте папку проекта в своей любимой IDE для JavaScript и добавьте новый файл script.js.

Затем не забудьте открыть файл package.json и пометить ваш проект как модуль, добавив:
"type": "module"
Отлично, теперь папка вашего проекта содержит приложение Node.js.
Шаг № 2: Установите Playwright Extra
Одним из известных недостатков Playwright является отсутствие поддержки плагинов. Сообщество компенсировало этот недостаток с помощью Playwright Extra, библиотеки, которая расширяет возможности Playwright за счет поддержки плагинов.
Добавьте playwright и playwright-extra в зависимости вашего проекта с помощью этой команды:
npm i playwright playwright-extra
Это может занять некоторое время, поэтому будьте терпеливы.
Шаг 3: Настройте скрипт Playwright
Пришло время инициализировать ваш скрипт, чтобы Playwright мог решать задачи CAPTCHA. Импортируйте браузер, которым вы хотите управлять, из playwright-extra, добавив эту строку в script.js:
import { chromium } from "playwright-extra"
В данном случае мы собираемся автоматизировать поведение человека в Chromium.
Затем инициализируйте новую асинхронную функцию, в которой будет выполняться взаимодействие, подобное человеческому, с помощью API Playwright:
(async () => {
// настройте браузер и запустите его
const browser = await chromium.launch()
// откройте новую пустую страницу
const page = await browser.newPage()
// логика автоматизации браузера...
// закройте браузер и освободите его ресурсы
await browser.close()
})()
Это запускает новый экземпляр Chromium и открывает новую страницу перед закрытием браузера. Отлично, вы готовы добавить логику автоматизации браузера!
Шаг № 4: Реализуйте логику автоматизации браузера
Целевым сайтом будет bot.sannysoft.com, специальная веб-страница, которая запускает в браузере несколько тестов, чтобы определить, является ли пользователь человеком или ботом. Если вы попробуете посетить эту страницу в своем локальном браузере, вы увидите, что все тесты прошли успешно.
Подключитесь к целевой странице с помощью метода goto():
await page.goto("https://bot.sannysoft.com/")
Затем сделайте снимок экрана всей страницы, чтобы увидеть результаты тестов на наличие бота:
await page.screenshot("results.png")
Соберите все вместе, и вы получите следующий файл script.js:
import { chromium } from "playwright-extra"
(async () => {
// настройте браузер и запустите его
const browser = await chromium.launch()
// откройте новую пустую страницу
const page = await browser.newPage()
// перейдите на целевую страницу
await page.goto("https://bot.sannysoft.com/")
// сделать снимок экрана всей страницы
await page.screenshot({
path: "results.png",
fullPage: true
})
// закрыть браузер и освободить его ресурсы
await browser.close()
})()
Выполните вышеуказанный код с помощью следующей команды:
node script.js
Скрипт откроет экземпляр Chromium в режиме headless, посетит нужную страницу, сделает скриншот, а затем закроет браузер. Если открыть файл results.png, который появится в корневой папке проекта по окончании выполнения скрипта, вы увидите:

Как можно заметить, базовый Playwright в режиме headless не проходит несколько тестов. Именно поэтому WAF показывают CAPTCHA при взаимодействии со страницами в Playwright. Решение? Плагин Stealth!
Шаг № 5: Установите плагин Playwright Stealth
Playwright Stealth — это плагин для playwright-extra, предотвращающий обнаружение ботов. Этот плагин переопределяет несколько настроек, чтобы экземпляр браузера выглядел естественно, как будто он не контролируется Playwright. В частности, этот модуль изменяет свойства браузера, чтобы предотвратить все утечки, которые выдают браузер как автоматизированный.
Плагин Stealth изначально был разработан для Puppeteer Extra, но он также работает с Playwright Extra. Установите его через пакет npm puppeteer-extra-plugin-stealth с помощью этой команды:
npm i puppeteer-extra-plugin-stealth
Затем импортируйте плагин Stealth в файл script.js с помощью этой строки:
import StealthPlugin from "puppeteer-extra-plugin-stealth"
Шаг № 6: Зарегистрируйте настройки Stealth
Чтобы реализовать логику обхода CAPCHA в Playwright, просто зарегистрируйте плагин Stealth в playwright-extra с помощью метода use():
chromium.use(StealthPlugin())
Браузер, управляемый Playwright, теперь будет отображаться как реальный браузер, используемый человеком.
Шаг 7: Повторите тест на обнаружение ботов
Вот как должен выглядеть ваш файл script.js в данный момент:
import { chromium } from "playwright-extra"
import StealthPlugin from "puppeteer-extra-plugin-stealth"
(async () => {
// зарегистрируйте плагин Stealth
chromium.use(StealthPlugin())
// настройка браузера и его запуск
const browser = await chromium.launch()
// открытие новой пустой страницы
const page = await browser.newPage()
// переход на целевую страницу
await page.goto("https://bot.sannysoft.com/")
// сделать снимок экрана всей страницы
await page.screenshot({
path: "results.png",
fullPage: true
})
// закрыть браузер и освободить его ресурсы
await browser.close()
})()
Запустите скрипт снова:
node script.js
Откройте results.png еще раз, и вы увидите, что все тесты на обнаружение ботов прошли успешно:

Et voilà! Трюк с обходом CAPTCHA в Playwright готов!
Что делать, если вышеуказанное решение для обхода CAPTCHA с помощью Playwright не работает?
К сожалению, настройки браузера — не единственный аспект, на котором сосредоточено внимание антиботов. Репутация IP-адреса — еще один ключевой фактор, и вы не можете просто изменить свой выходной IP-адрес с помощью бесплатной библиотеки. Для этого вам понадобится интеграция прокси Playwright!
Таким образом, CAPTCHA могут по-прежнему появляться, даже если вы настроили браузер оптимальным образом. Для простых CAPTCHA, требующих всего одного щелчка, вы можете использовать плагин puppeteer-extra-plugin-recaptcha. Однако подход, основанный на плагинах из предыдущей главы, работает только против базовых мер защиты от ботов. При работе с более сложными инструментами, такими как Cloudflare, вам понадобится что-то более мощное.
Ищете настоящий решатель CAPTCHA для Playwright? Попробуйте решения по Веб-скрейпингу от Bright Data!
Они предоставляют превосходные возможности разблокировки с помощью специальной функции решения CAPTCHA для автоматической обработки reCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA и многих других. Интеграция CAPTCHA Solver от Bright Data в ваш скрипт проста, так как он работает с любым HTTP-клиентом или инструментом автоматизации браузера.
Узнайте больше о том, как использовать CAPTCHA Solver от Bright Data. Также ознакомьтесь с документацией, где приведены все подробности по интеграции и настройке.
Заключение
В этой статье вы узнали, почему CAPTCHA представляют собой проблему для Playwright и как ее решить. Используя библиотеку Playwright Stealth, вы можете переопределить настройки браузера по умолчанию, чтобы обойти обнаружение ботов. Однако этого подхода не всегда бывает достаточно.
Независимо от того, насколько сложен ваш скрипт Playwright, передовые системы обнаружения ботов все равно могут идентифицировать вас как бота. Решением является подключение к целевой странице через API разблокировки, который может беспрепятственно возвращать HTML-код любой веб-страницы без CAPTCHA.
Такой API существует и называется Web Unlocker. Его цель — автоматически менять выходной IP-адрес при каждом запросе с помощью прокси-интеграции, обрабатывать отпечатки браузера, автоматические повторные попытки и разрешение CAPTCHA за вас. Забудьте о мерах против ботов!
Зарегистрируйтесь сейчас и начните бесплатную пробную версию уже сегодня.