Как стать автором
Обновить

Selenium обход капчи кликами или токенами? Продолжаем разбираться что же быстрее

Время на прочтение4 мин
Количество просмотров2.1K

В предыдущей статье - Распознавание капчи токеном или кликами, что быстрее? Сравнение методов на практике (я ее кстати опубликовал еще и на DTF) я сравнил два метода обхода капчи (кликами и токеном) но с использованием Puppeteer, и анонсировал, что в следующей статье (то есть уже в этой) сделаю практическое сравнение этих же двух методов, но уже с использованием selenium и обход капчи будем считать завершенным. Полная картина, так сказать сложится. Ну… Не будем тянуть, переходим сразу к делу.

Selenium обход капчи GOOGLE - подготовка модулей

Использовать в этот раз будем модули от того же поставщика услуг, но уже под язык Python (так как главное отличие selenium от puppeteer в том, что они запускаются под разные языки). Я надеялся, что для Python будет примерно похожий модуль, как и для javascript (где просто в настройка будет достаточно поменять метод распознавания и не нужно будет использовать другое расширение, но либо мне не хватило технических скиллов, либо такого модуля под Python действительно нет пока, поэтому для сравнения будем использовать два разных модуля:

Правки в модуль, который использует Selenium для обхода капчи

Признаюсь, когда искал модуль для обхода капчи токеном пришлось немного напрячься, так как не сразу понял что нужно использовать, но в итоге модуль был найден и он по дефолту не решает reCAPTCHA с официальной демо страницы Гугла, а настроен чисто под демо страницу 2капчи. Поэтому, потребовалось внести небольшие правки в исходный код, чтобы устранить это недоразумение.

Итак, правки вносились в эти строчки кода

# 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')]"

Первые две строки - ничего сложного нет, просто подставляем нужный нам УРЛ и наш АПИ ключ из сервиса 2капча, а вот нижние три строки - это уже непосредственно корректные селекторы, которые на каждом сайте могут отличаться от моих. Так что для решения моей задачи, селекторы, которые я нашел на демо странице гугл рекапчи, у меня сработают, а вот на другом сайте, на котором установлена рекапча, увы, могут не подойти. 

Так что зафиксировали - в разделе Lokators необходимо подставлять свои значения со страницы с рекапчей.

У меня это вот такие значения:

# LOCATORS

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

Небольшие изменения для Python модуля обхода гугл капчи методом кликов

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

Интересный факт, я почитал описание Грид метода на сайте сервиса, и там предусмотрено использование машинного распознавания (скорее всего нейросеть какая нибудь используется) для ускорения решения задачи. То есть, по дефолту вашу капчу будет решать живой человек, но если добавить к передаваемым данным один параметр, включающий как раз это машинное распознавание, скорость распознавания будет выше.
Я ничего не включал, если честно, я вообще практически не трогал код, а использовал его практически из коробки, так как расширение справилось с моей задачей быстро.

Изменил я только две строчки кода в указанном модуле:
9 строчку - вместо установленного там УРЛа демо страницы я подставил свой - https://2captcha.com/demo/recaptcha-v2

В 10 строчке вместо APIKEY_2CAPTCHA подставил свой ключ АПИ, который взял на главной странице сервиса 2captcha, соответственно.

В целом все, больше никаких правок сделано не было. 

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

Сравнение модулей под Selenium для обхода капчи в скорости распознавания

Ну что, все готово, и можно запускать каждый модуль по отдельности. Ниже выведу видео, которое я по-быстрому смонтировал, чтобы продемонстрировать наглядно, что один метод дольше другого.

Если нет желания смотреть видео (хотя там всего 40 секунд), оставлю результаты теста тут - при обходе гугл капчи с использованием Selenium токеном скорость распознавания составила 1 минута 30 секунд, а вот распознавание точно такой же Google reCAPTCHA но кликами заняло у модуля уже 2 минуты 30 секунд, вполне себе серьезная разница, как считаете? 

Для более лучшего понимания переведем это все в капчи и минуты, итак, при использовании метода токенов за сутки (если учесть что модуль будет решать капчу в один поток не переставая) вы решите 960 капч, а при использовании метода кликов -  576 капч.

А по времени метод распознавания капчи сэкономит вам примерно 6,5 часов в сутках (ну или даст фору - кому как больше нравится).

Интересный момент - что при точно таком же сравнении методов, но при использовании puppeteer - результат был примерно таким же, метод токенов выиграл. Более того, в случае с puppeteer скорость распознавания кликами была неприлично медленной, более 4 минут.

Так что выбор за вами, токены или клики…

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+4
Комментарии5

Публикации

Истории

Работа

Ближайшие события

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань