Распознавание капчи в Selenium для Python и скриптов WebDriver
reCAPTCHA, проверка Turnstile, слайдер GeeTest v3 или искажённая картинка не должны обрывать сессию WebDriver. Установите в браузер расширение CapSkip или вызывайте SDK из теста, и каждое решение будет выполняться локально, без поштучной оплаты.
- Python, C# и Node.js
- Расширение или SDK
- Совместим с Selenium Grid
- открыть /signup
- заполнить форму
- решить капчу
- submit
4 passed0 заблокированоРано или поздно прогон WebDriver упирается в форму входа, поиска или регистрации, защищённую капчей, и тут на помощь приходит распознавание капчи для Selenium. Selenium умеет находить элементы, кликать и вводить текст, но не может получить токен reCAPTCHA или прочитать искажённые буквы, поэтому тест зависает, а отчёт заполняется тайм-аутами. CapSkip работает рядом с драйвером, на том же компьютере с Windows или на VPS, доступном скрипту, и возвращает ответ, пока браузер ждёт.
Подключить его можно двумя способами, и они подходят под разные привычки работы с Selenium. Путь без кода запускает профиль Chrome или Firefox, в котором уже установлено расширение CapSkip, поэтому виджеты решаются прямо на странице, будто галочку поставил человек. Путь через скрипт оставляет управление в вашем тесте: pip install capskip, считайте sitekey через find_element, вызовите solver.recaptcha() или solver.turnstile() и запишите токен обратно через execute_script. Капчи-картинки возвращаются в виде текста примерно за 0,1 секунды.
Из токенных капч CapSkip поддерживает reCAPTCHA v2, v3 и Enterprise, а также Cloudflare Turnstile. Слайдеры GeeTest v3, пазлы Capy, CaptchaFox и AWS WAF CAPTCHA тоже входят в набор, как и проверки с доказательством работы в ALTCHA и Friendly Captcha. Капчи-картинки охватывают тысячи вариантов, и hCaptcha тоже поддерживается, включая невидимые виджеты и виджеты Enterprise. FunCaptcha и GeeTest v4 не поддерживаются. Поштучного учёта нет, поэтому ночной регрессионный прогон, наткнувшийся на сотни капч, стоит ровно столько же, сколько прогон без единой капчи.
Код драйвера можно оставить как есть. Установите расширение CapSkip в профиль браузера, запустите Selenium с этим профилем, пока работает приложение, и капчи будут решаться сами, пока идут ваши явные ожидания. Переходите на SDK только тогда, когда тесту нужен сам ответ на руках. Читайте руководство по расширению
Что распознавание капчи для Selenium даёт WebDriver
Профиль с распознаванием для Chrome или Firefox
Один раз установите расширение в отдельный профиль Chrome и передайте его драйверу через user-data-dir или загрузите дополнение для Firefox через install_addon(). После этого каждое окно, которое открывает Selenium, умеет решать капчу, пока работает приложение.
Запрос токенов из того же файла теста
Считайте data-sitekey через find_element, передайте его вместе с driver.current_url в solver.recaptcha() и задайте g-recaptcha-response через execute_script. Пока приложение работает, браузер остаётся под управлением вашего скрипта.
Текст с картинки прямо из живого элемента
Захватите изображение через screenshot_as_base64 и отправьте его в solver.normal(). Поскольку картинка не запрашивается повторно, текст, который вы вводите через send_keys, совпадает с тем, что было показано в этой сессии.
Работает в паре с undetected-chromedriver
Маскирующиеся драйверы, такие как undetected-chromedriver и режим UC в SeleniumBase, делают капчи более редкими. CapSkip решает те, что всё равно проскакивают, так что два инструмента закрывают разные половины задачи.
Старые хелперы для 2Captcha продолжают работать
Хелперы, которые вы написали под 2Captcha или Anti-Captcha, не нужно править. Выберите этот сервис в качестве эмулятора в приложении, нажмите Add рядом с Hosts file, и CapSkip сам ответит на эти вызовы.
Параллельные драйверы на одной подписке
Запускайте столько экземпляров WebDriver, сколько выдержит машина. Тариф никогда не ограничивает потоки, а набор тестов, встречающий сотни капч, ничего не добавляет к ежемесячному счёту.
Выберите, как ваш код на WebDriver подключается к CapSkip
from selenium import webdriver
from capskip import CapSkip
driver = webdriver.Chrome()
driver.get("https://example.com/login")
solver = CapSkip(host="127.0.0.1", port=8080)
sitekey = driver.find_element("css selector", ".g-recaptcha").get_attribute("data-sitekey")
token = solver.recaptcha(sitekey=sitekey, url=driver.current_url)["code"]
# Inject the token and submit
driver.execute_script(
"document.getElementById('g-recaptcha-response').innerHTML = arguments[0];",
token,
)
driver.find_element("css selector", "button[type=submit]").click()Python Selenium: считайте sitekey из виджета, запросите токен у CapSkip, запишите его в поле ответа и нажмите кнопку отправки.
Расширение в профиле Selenium
Загрузите расширение для Chrome или Firefox в профиль, который запускает Selenium. Виджеты решаются на месте, поэтому в вашем тесте вообще нет кода для распознавания.
Вызовы SDK рядом с локаторами
Клиенты для Python, Node.js, PHP и C# возвращают токены и текст с картинок, готовые для execute_script или send_keys в той привязке WebDriver, которую вы используете.
Локальный API для всех прочих привязок
Java и другие привязки без SDK могут вызывать HTTP API напрямую, а код Selenium, написанный под сервисы в стиле 2Captcha, работает, как только включён эмулятор.
Проверьте свой скрипт Selenium на живой reCAPTCHA
Направьте WebDriver на нашу демо-страницу reCAPTCHA v2, выполните шаг решения на настоящем виджете Google и посмотрите, как форма принимает токен, прежде чем переходить к своим целевым сайтам.
Подготовьте CapSkip рядом с набором тестов Selenium
-
Установите CapSkip на тестовую машину
Установите CapSkip на компьютер с Windows или VPS, где выполняются ваши скрипты WebDriver, или на любую машину, доступную этим скриптам по сети, и держите его запущенным, пока идут тесты. Скачать установщик
-
Активируйте тариф или пробный период
Войдите в CapSkip с данными, которые пришли на почту вместе с заказом. Пробный период даёт одному устройству три дня и 500 решений, этого достаточно, чтобы прогнать набор тестов на реальных сайтах. Оформите бесплатный пробный период
-
Добавьте шаг решения в код драйвера
Либо запустите Selenium с профилем, где установлено расширение, либо выполните pip install capskip и вызывайте решатель везде, где капча прерывает ваш сценарий. Каждый метод и каждая опция описаны в документации. Открыть документацию API
Локальное распознавание против API с поштучной оплатой в Selenium
Чем CapSkip отличается от сервисов вроде 2Captcha, когда ваши прогоны Selenium ежедневно сталкиваются с капчами.
| Функция | CapSkip | 2Captcha & API-сервисы |
|---|---|---|
| Стоимость полного прогона тестов | Тот же ежемесячный тариф от $35 при любом числе решений | Оплата за каждое решение: больше тестов, больше счёт |
| Где решается капча | На машине, которая управляет браузерами, или на VPS | На удалённых серверах, часто живыми работниками |
| Время решения капчи-картинки | Около 0,1 секунды, без передачи через интернет | Несколько секунд плюс сетевой путь туда и обратно для каждой картинки |
| Уже написанный код для 2Captcha | Продолжает работать через встроенный эмулятор | Привязан к API поставщика и его балансу |
| Скриншоты сессии и данные капчи | Остаются на вашей машине | Отправляются стороннему сервису при каждом решении |
| Параллельные сессии WebDriver | Тариф не ограничивает потоки, предел задаёт только железо | Дополнительная параллельность часто стоит дороже |
| Способы подключения к Selenium | Профиль с расширением, клиент для Python или .NET либо обычные HTTP-вызовы | API-ключ, предоплаченный баланс и собственный клиент |
Цены
Хватит платить за каждое решение
Выберите лицензию
Лицензия Bronze
$35/ месяц
Мгновенная активация лицензии
Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.
Функции те же. Больше машин, больше производительность.
Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому Silver решает вдвое больше капч одновременно, а Gold втрое больше.
- Безлимитное решение, без дневных ограничений
- Безлимитные потоки, скорость растёт вместе с оборудованием
- Точность распознавания от 90% до 100%
- Прямая замена API основных сервисов распознавания
- Работает почти с любым инструментом, без программирования
- REST API, SDK и расширение для браузера
- Бесплатное обучение, когда появляется новый тип капчи
- Работает на вашей машине, ничего с неё не уходит
Каждый тип капчи, показанный выше, входит в любую лицензию. Посмотреть список типов
Просто хотите сначала попробовать?
Начните с бесплатного 3-дневного пробного периода и решите 500 капч любого типа на своих целевых сайтах.
Похожие сервисы распознавания капчи & руководства
Решение reCAPTCHA в Selenium на Python: расширение или SDK
Когда капча блокирует сценарий, Selenium даёт вам два надёжных варианта: позволить браузерному расширению решить её прямо на странице или решить её из скрипта и подставить ответ. Оба опираются на приложение CapSkip, запущенное там, куда может достучаться ваш тест, а выбор зависит от того, сколько контроля нужно тесту.
Путь через расширение. Создайте профиль Chrome, установите в него расширение CapSkip и запустите webdriver.Chrome с этим профилем через аргумент user-data-dir; для Firefox вызовите driver.install_addon() с файлом дополнения. Запускайте браузер с окном или с --headless=new, поскольку старый headless-режим не загружает расширения. После этого виджеты reCAPTCHA, Turnstile и GeeTest v3 решаются на месте, а вашему WebDriverWait остаётся только дождаться, пока форма пойдёт дальше.
Путь через SDK. Установите клиент командой pip install capskip (Python 3.10 или новее) и создайте один solver на всю сессию, по умолчанию нацеленный на 127.0.0.1 и порт 8080. Для reCAPTCHA возьмите data-sitekey из элемента .g-recaptcha или значение k в src iframe reCAPTCHA, если виджет отрисовывается через JavaScript, затем вызовите solver.recaptcha() с driver.current_url. Невидимому виджету нужен invisible=1, а для v3 требуются version v3 и строка action, которую страница передаёт при запуске проверки. Задайте g-recaptcha-response через execute_script, выполните data-callback, если виджет его указывает, и отправьте форму в течение двух минут. Для Turnstile подставьте solver.turnstile() и скрытое поле cf-turnstile-response; остальной сценарий не меняется.
Для шага распознавания капчи-картинки в Python Selenium считайте screenshot_as_base64 из элемента img, передайте эту строку в solver.normal() с префиксом data:image/png;base64 и введите результат через send_keys. Никогда не загружайте URL изображения повторно: большинство капч-картинок привязаны к сессии, и второй запрос выдаст новую картинку. Для reCAPTCHA и Turnstile передайте CapSkip прокси, который использует ваш браузер (HTTP, HTTPS, SOCKS5 или SOCKS5h); для картинок прокси не нужен.
Руководства по теме: капча в undetected-chromedriver · капча в SeleniumBase · Капча в Selenium Grid
Как быстрее всего решить reCAPTCHA в Selenium на Python?
Что выбрать для проекта на Selenium: расширение или SDK?
Как установить расширение в браузер, который открывает Selenium?
Как Selenium передаёт капчу-картинку в CapSkip?
Справляется ли он с Cloudflare Turnstile в Selenium, включая полноэкранную проверку?
Форма всё равно не принимает подставленный токен. Что обычно идёт не так?
Можно ли вызывать CapSkip из Selenium на C#, Node.js или Java?
Работает ли решатель с headless Chrome и Selenium Grid?
Пусть набор тестов Selenium доходит до конца каждого прогона
Установите CapSkip рядом с драйвером, войдите в аккаунт и выберите расширение или SDK. Ваш следующий прогон WebDriver решит свои капчи локально, а ежемесячный счёт не изменится, на что бы ни наткнулся набор тестов.
