Решение reCAPTCHA в Selenium на полном автомате (адаптация англоязычной статьи)
Делаю робкие попытки в автоматизации и столкнулся с часто возникющей проблемой, распознавание Рекапчи (reCaptcha).
Естественно, я понимаю что по даннй теме написано много гайдов, мануалов и статей, но согласитесь — интересно описать собственный опыт.
Итак, за основу я взял англоязычный мануал, который попался мне на глаза буквально пару дней назад и я решил его потестить (а так как написан он сервисом по распознаванию капчи, который я и использую, то почему нет — кстати, ребята из 2капча — принимаю благодарность в виде зеленых бумажек, если интересно))))
Итак, не будем долго и нудно расписывать, зачем и почему нужен Селениум, как это важно для автоматизации и кога он возник и кто его придумал, переходим к самой сути:
Для решения возьмем демо страницу, любезно предоставленную самой Рекапчей — https://recaptcha-demo. appspot. com/recaptcha-v2-checkbox. php:
Подготовка
На первом этапе необходимо все подготовить
Для демонстрации работы я скачал следующие компоненты в специальную папку на своем компьютере (предварительно установил, конечно же Питон — но как я это сделал рассказывать не буду, надеюсь разберетесь) .
Итак, нам понадобится — собственно сама библиотека для автоматизации браузера Селениум, берем тут — https://pypi. org/project/selenium/
Официальный Python SDK для интеграции с API 2Captcha, берем тут https://pypi. org/project/2captcha-python/
SeleniumИ библиотека, которая упрощает загрузку и использование драйверов для Selenium, называется webdriver-manager, берем тут — https://pypi. org/project/webdriver-manager/
Устанавливается все очень просто, копируете указанную команду и вставляете в консоли, как показано на видео выше
Можно устанавливать все по отдельности, как это сделал я а можете использовать универсальную команду
Поиск Sitekey
Так как речь идет про Рекапчу, то необходимо понимать, что такое параметр site key. Sitekey — это уникальный идентификатор, который Google присваивает всем своим формам с recaptcha, и с помощью которого мы можем идентифицировать капчу на сайте.
Именно этот идентификатор и нужен нам, чтобы сервис распознавания капчи мог понять, с чем он имеет дело, и именно этот идентификатор мы и будем отправлять в 2капча.
Чтож, давайте искать sitekey на демо странице
- Переходим на https://recaptcha-demo. appspot. com/recaptcha-v2-checkbox. php
- Откройте инструменты разработки — нажать Ctrl/Cmd + Shift + I либо правую кнопку мыши — посмотреть код
- Найдите data-sitekey (нажмите ctrl + F, введите sitekey и нажмите enter) и скопируйте значение параметра.
- Сохраните значение, чтобы использовать его при отправке запроса для решения капчи на странице
Решение капчи
Естественно, для решения капчи нужно написать код — можете написать его самостоятельно, либо просто взять из уже готового мануала. Типа как из этого. Задача данного кода — попасть на целевую страницу и решить капчу через API. Именно то, чего мы и хотим достичь.
Сразу оговорюсь, в коде есть несколько параметров, которые необходимо изменить на свои, вот они сверху вниз:
2captcha_API_KEY — ваш АПИ, берете его в личном кабинете 2капча.
SITE_KEY — его мы с вами сохраняли на предыдущем шаге
Я очень сильно расчитываю, что найти эти параметры в приведенном коде вы сможете самостоятельно
Этот кусок кода инициализирует объект TwoCaptcha с нашим ключом API и должен решать recaptcha посредством вызова метода recaptcha. Для чего передаем значение site key и URL адрес страницы.
Это не полный код, читай дальше!
Отправка решенной капчи
Следующий кусок кода я не понял как вам правильно объяснить, так как сам не понял что происхоит, поэтому просто перевел его и оставляю тут:
Далее находим элемент g-recaptcha-response, вставляем полученное значение для решения капчи и отправляем форму.
Полный код для автоматического решения reCaptcha
Собственно вот что мы получаем в результате.
Для того, чтобы продемонстрировать работоспособность кода, создам текстовый файл, назову его script. py и запущу в консоли. Результат вы можете увидеть ниже
Для чистоты эксперимента решим этим же способом рекапчу с демо страницы, расположенной на сайте 2капча.
Нам понадобится поменять урл в коде и sitekey, смотрим что получилось:
Таким образом мы видим, что код рабочий. Пользуйтесь, но сперва не забудьте поблагодарить лайком автора и воспользоваться его рефкой.