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

Хорошо известная Google - reCAPTCHA v3 - очень знакомая проблема, которая является большим препятствием для многих.
Конечно, есть некоторые провайдеры, которые решают такую ​​reCAPTCHA v3 для вас, отправив их через предоставленный ими API, и в конечном итоге вы получите решение.
Существуют полностью автоматизированные, интегрированные с людьми, а также гибридные решения.

Однако в этой статье я хотел бы предоставить вам полностью автоматизированный и бесплатный вариант, который может использовать каждый.

В двух словах о решении

В этом подходе решения мы не обойдем Google - reCAPTCHA v3, вместо этого мы фактически решим его.
Как? Это решение не за горами, чем ожидалось. Вместо решения головоломки с изображением мы используем другую опцию, а именно опцию аудио.
Наша программа слушает аудиофайл от Google - reCAPTCHA v3, извлекает из него текст и помещает его в коробку.

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

Я предоставлю весь код и необходимые инструменты и библиотеки в моем Github - репозитории.

Требования к проекту

Начнем с модулей и инструментов, необходимых для проекта.

Ниже перечислены модули, которые необходимо установить:

- pip install selenium
- pip install pydub
- pip install webdriver-manager
- pip install SpeechRecognition

Кроме того, вам понадобится инструмент для обработки звука. Не так важно, какой инструмент обработки звука вы хотите использовать. Будь то VideoLan, Handbrake, Media Encoder CC или даже облачный сервис, например Amazon Kinesis Video Streams или AWS Elemental MediaTailor. Я использую инструмент обработки звука ffmpeg, потому что это то, чему я научился и с чего начал.

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

Первый шаг

После скачивания zip-файла из репозитория и его распаковки.
Эти файлы должны находиться внутри.

А внутри папки ffmpeg должен быть bin-файл, в котором присутствуют эти три файла.

Теперь давайте объясним, что это за файлы.
Папка ffmpeg содержит программы обработки звука, которые нам нужны для работы с распознаванием речи.

Важный шаг, который мы должны сделать здесь, - поместить путь к этой папке, папке bin, в которой содержатся три файла ffmpeg.exe, ffplay.exe и ffprobe.exe, в переменные нашей среды, чтобы наша программа Python могла получить к ним доступ. позже.

Если вы не знаете, как реализовать новые переменные среды, есть два способа (у меня операционная система Windows, вы должны увидеть, как реализовать это в своей операционной системе):

  • Первый способ: введите системные переменные в строку поиска в левом нижнем углу и нажмите на нее.
  • Второй способ: перейдите по следующему пути: Панель управления ›Система и безопасность› Система ›Расширенные настройки системы

В обоих случаях это окно должно открыться.

Затем нажмите Переменные среды, и должно открыться окно, как показано ниже.

Затем дважды щелкните Путь, и откроется другое окно.

Теперь нажмите «Создать» в правом верхнем углу, чтобы создать новую переменную среды.
Затем вы увидите поле в окне, в котором вы можете сохранить путь к переменной среды.

В нашем случае нам нужно указать путь, по которому хранятся наши ffmpeg.exe, ffplay.exe и ffprobe.exe.
В моем случае у меня есть распакованный файл из репозитория Github на рабочем столе.
C: \ Users \ Romik \ Desktop \ RecaptchaSolver \ ffmpeg \ bin

Не забудьте включить папку bin, потому что в ней содержатся три файла!

Теперь перейдем к другим файлам из распакованной папки.
chromedriver.exe необходим, чтобы мы могли получить к нему доступ с помощью селена и открыть Chrome для взаимодействия с веб-сайтом. Если при запуске скрипта python появляется сообщение об ошибке о том, что версия chromedriver.exe устарела и в вашем браузере установлена ​​более новая версия, вам необходимо обновить ее, перейдя на этот веб-сайт и загрузите последнюю стабильную версию.
Затем вы замените новый chromdriver.exe на старый (чтобы удалить старый chromedriver.exe и добавьте новый) и проблема решена.

Последний файл, resolver.py, просто содержит полный код для всего этого.

Объяснение кода

Теперь перейдем к шагу, на котором мы подробно объясним код, шаг за шагом.

В начале строк с 1 по 8 мы импортируем некоторые модули, которые предоставляет нам Python, а также те, которые мы уже установили ранее.

Из selenium нам нужен только веб-драйвер для связи с браузером, а из selenium.webdriver.common.keys нам нужны ключи модуль для имитации нажатия клавиш с помощью нашей программы в браузере.

Из модулей time и random мы используем только sleep и randint, чтобы наше поведение выглядело более человечным. как. Это означает, что мы также немного приостанавливаем нашего бота, чтобы избежать сверхчеловеческого взаимодействия.
К паузам мы просто добавляем случайное число, чтобы он выглядел еще менее похожим на бота, потому что ни один человек не выполняет действия ровно за 1 или 2 секунды. , но что-то более динамичное.

Мы используем модуль pydub для работы со звуком. Модуль urllib необходим для загрузки аудиофайлов из reCAPTCHA.

В модуле распознавание речи мы используем библиотеки Recognizer и Audiofile, чтобы понять аудиофайл и извлечь из него текст.

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

В строке 10 мы получаем абсолютный путь к нашему текущему рабочему каталогу, используя os - module (os.getcwd () означает получить текущий рабочий каталог).

В строке 12 мы получаем доступ к браузеру Chrome с помощью нашего chromedriver.exe.

В строке 14 мы переходим на веб-сайт Google, который предлагает нам демонстрацию reCAPTCHA v3, на которой мы можем протестировать нашего бота.

Здесь мы не будем вдаваться в каждую строку кода по отдельности, потому что существует множество запросов на селен.
Давайте просто скажем, что мы переключаемся между разными фреймами, чтобы получить доступ к отдельным компонентам, чтобы получить доступ и воспроизвести звуковую функцию. из reCAPTCHA v3.

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

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

После того, как мы открыли и воспроизвели аудиофайл в предыдущей части кода, мы можем его загрузить.
Это происходит в строках 48–53. Вы также берете атрибут src, чтобы получить ссылку для загрузки, один раз сохраняете аудиофайл в формате .mp3 и экспортируете его в файл audio.wav. .
Причина в том, что файл. mp3 никогда не будет звучать так же хорошо, как файл. wav.
Итак, речь распознавание должно очень хорошо понимать файл, соответственно, качество должно быть хорошим.
Это объясняется короткими словами и для неспециалистов. Если вас интересует более подробная информация, я отсылаю вас к этой ссылке.

В строках 55–64 мы инициализируем Recognizer и AudioFile файлом audio.wav.

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

Наконец, в строке 64 я вывожу распознанный текст.

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

Затем мы даем браузеру спать на несколько секунд, чтобы увидеть результат, прежде чем браузер полностью закроется.

Я поместил эту часть в блок try - except, потому что в очень редких случаях вы не могли загрузить звук из reCAPTCHA, и он попал в сообщение об ошибке.

Заключение

Всего эта процедура срабатывает 8 раз из 10, потому что иногда код не распознает извлеченный текст.
В этом случае затем снова запустить бота в случае сбоев.

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

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

Конечно, вы также можете обойти reCAPTCHA v3 вместо того, чтобы решать его, это также очень популярный метод, заранее ведя себя как человек.
Я всегда предпочитаю этот метод первым, но если он по-прежнему не работает, есть альтернатива - найти службу защиты от капчи или сделать это с помощью этого решения.

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

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

Спасибо за чтение.