Selenium обход капчи: токены против кликов — что же всё-таки быстрее?

В своей предыдущей статье, которую я также опубликовал на DTF, я провёл сравнительное тестирование двух методов обхода капчи — токенов и кликов, используя Puppeteer. Тогда я пообещал, что в следующем материале проведу аналогичный эксперимент, но уже с использованием Selenium. Что ж, настал момент выполнить обещание: мы сравним те же два метода, но на этот раз с использованием другого инструмента. Полная картина постепенно складывается, так что давайте не откладывать и сразу приступим!

Selenium и обход капчи GOOGLE: подготовка инструментов

Для этого эксперимента я решил использовать модули от того же поставщика услуг, но адаптированные под Python. Это связано с тем, что главное отличие Selenium от Puppeteer заключается в поддержке разных языков программирования. Честно говоря, я надеялся, что для Python найдётся модуль, аналогичный используемому в Puppeteer, где переключение между методами обхода можно было бы сделать через настройки. Однако либо я недостаточно хорошо искал, либо такого решения действительно пока не существует. В итоге для тестирования пришлось выбрать два разных модуля:

  • Модуль для обхода капчи через токены — recaptcha_v2.
  • Модуль для обхода капчи кликами — selenium-recaptcha-solver-using-grid.

Правки модуля для обхода капчи с помощью Selenium

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

Вот строки, которые потребовалось подкорректировать:

# CONFIGURATION url = "https://www.google.com/recaptcha/api2/demo" apikey = os.getenv('API KEY') # LOCATORS sitekey_locator = "//div[@id='g-recaptcha']" submit_button_captcha_locator = "//button[@data-action='demo_action']" success_message_locator = "//p[contains(@class,'successMessage')]"

Что было изменено:

  • Я указал URL демо-страницы Google и добавил API-ключ для 2Captcha.
  • Настроил корректные селекторы для элементов, используемых на демо-странице Google reCAPTCHA.

Вот что получилось:

# LOCATORS sitekey_locator = "//div[@id='recaptcha-demo']" submit_button_captcha_locator = "//input[@id='recaptcha-demo-submit']" success_message_locator = "//div[contains(@class,'recaptcha-success')]"

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

Корректировки модуля для обхода капчи кликами

selenium-recaptcha-solver-using-grid — это модуль, который применяется для обхода капчи, требующей выбора изображений в сетке, например, reCAPTCHA V2. В описании модуля на сайте сервиса я узнал интересный факт: при необходимости можно задействовать машинное распознавание, вероятно на основе нейросетей, для ускорения процесса решения. По умолчанию такие задачи решают люди, но включение специального параметра позволяет ускорить процесс.

Selenium обход капчи: токены против кликов — что же всё-таки быстрее?

Сам модуль оказался практически готовым к использованию, и я сделал только две правки:

  • 9 строка — заменил URL на https://2captcha.com/demo/recaptcha-v2.
  • 10 строка — добавил свой API-ключ, полученный в личном кабинете 2Captcha.

В остальном модуль отлично справился с задачей без дополнительных вмешательств.

Тестирование: сравнение скорости методов

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

Результаты:

  • Метод токенов: обход капчи занял 1 минуту 30 секунд.
  • Метод кликов: на тот же процесс потребовалось 2 минуты 30 секунд.

Что это значит: Токены обходят капчу на минуту быстрее. Если представить, что модуль работает непрерывно в течение суток, то за этот период можно решить:

  • 960 капч с использованием токенов,
  • 576 капч при помощи кликов.
Selenium обход капчи: токены против кликов — что же всё-таки быстрее?

Таким образом, метод токенов экономит около 6,5 часов ежедневно.

Итоги

Результаты говорят сами за себя: метод токенов выигрывает по времени как в связке с Puppeteer, так и с Selenium. Однако выбор остаётся за вами: токены идеально подходят для ускорения процессов, а клики — для задач, требующих сетки изображений.

Скорость или удобство — решение за вами!

Начать дискуссию