Автоматизация Selenium+2Captcha + практика распознавания проверочного кода
Автоматизация Selenium+2Captcha + практика распознавания проверочного кода

В этой статье подробно обсуждается использование библиотеки Selenium для операций автоматизации веб-страниц и объединение ее со службой 2Captcha для взлома кода проверки ReCAPTCHA. Содержание охватывает базовые знания Selenium, классификацию кодов проверки, использование службы 2Captcha и подробные объяснения на примерах. Наконец, он обобщает и оптимизирует практику, предоставляя читателям полную практическую схему взлома кодов проверки.

1. Введение

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

1.1 Введение в Selenium и сценарии его применения

Selenium — это инструмент автоматического тестирования, который в основном используется для функционального тестирования и тестирования производительности веб-приложений. Он может работать непосредственно в браузере и поддерживает несколько операционных систем, браузеров и языков программирования. Помимо тестирования, Selenium также часто используется в веб-сканерах для моделирования и автоматизации операций браузера.

Язык кода:javascript
копировать
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://www.python.org')
assert "Python" in driver.title
driver.quit()

Приведенный выше код Python показывает простой сценарий Selenium, который запускает браузер Firefox, затем посещает официальный веб-сайт Python и проверяет, содержит ли заголовок страницы слово «Python». Наконец, закройте браузер.

1.2 Назначение и тип проверочного кода

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

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

В следующей статье мы сосредоточимся на том, как использовать Selenium для обработки этих кодов проверки, особенно графических кодов проверки и кодов проверки ReCAPTCHA.

2. Знание селена

Selenium — это инструмент автоматического тестирования, в основном используемый для функционального тестирования веб-приложений. Он может имитировать реальное поведение пользователя, например нажатие кнопок, ввод текста, выбор раскрывающихся меню и многое другое. Поэтому Selenium часто используется в веб-сканерах для обработки страниц, отображаемых с помощью JavaScript, или моделирования поведения пользователя.

2.1 Установка и настройка Selenium

Сначала нам нужно установить Selenium на нашу машину. Ниже приведены команды для установки Selenium в среде Python:

Язык кода:javascript
копировать
pip install selenium

Затем нам также необходимо загрузить соответствующий драйвер браузера. Например, драйвер Chrome — chromedriver. Адрес загрузки драйвера обычно можно найти на официальном сайте браузера.

2.2 Знакомство с WebDriver

WebDriver — это основная часть Selenium. Это интерфейс, определяющий ряд методов работы браузера. Каждый браузер имеет собственную реализацию WebDriver, например ChromeDriver, FirefoxDriver и т. д.

Ниже приведен простой пример, показывающий, как использовать WebDriver для открытия веб-страницы:

Язык кода:javascript
копировать
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://www.google.com/')

Приведенный выше код сначала создает экземпляр FirefoxDriver.,а затем назвал егоgetметод открытGoogleДомашняя страница。

2.3 Расположение элементов страницы

Selenium предоставляет множество методов для поиска элементов страницы, например, по идентификатору, имени, имени класса, имени тега, тексту ссылки, частичному тексту ссылки, xpath, селектору CSS и т. д.

Вот несколько примеров позиционированных элементов:

Язык кода:javascript
копировать
element = driver.find_element_by_id('id_of_element')  # Найти по идентификатору
element = driver.find_element_by_name('name_of_element')  # Должность по имени
element = driver.find_element_by_class_name('class_of_element')  # по классу позиционирование имени
element = driver.find_element_by_tag_name('tag_of_element')  # по тегу позиционирование имени
element = driver.find_element_by_xpath('//div[@class="my_class"]')  # Найти через XPath
element = driver.find_element_by_css_selector('div.my_class')  # через CSS положение селектора

2.4 Манипулирование элементами страницы

Получив элемент страницы, мы можем с ним работать. Общие операции включают ввод текста, нажатие кнопок, получение текста элемента и т. д.

Вот несколько примеров элементов действия:

Язык кода:javascript
копировать
element.send_keys('some text')  # Введите текст
element.click()  # щелкните элемент
text = element.text  # Получить текст элемента

2.5 Подождите, пока страница загрузится.

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

Вот пример явного ожидания:

Язык кода:javascript
копировать
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'id_of_element'))
)

Приведенный выше код будет ждать до 10 секунд, пока на странице не появится элемент с идентификатором «id_of_element».

2.6 Расширенные операции

Selenium также поддерживает некоторые расширенные операции, такие как выполнение кода JavaScript, работа с файлами cookie, переключение iframe, обработка всплывающих окон и т. д.

Ниже приведен пример выполнения кода JavaScript:

Язык кода:javascript
копировать
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

Приведенный выше код выполняет сценарий JavaScript, который прокручивает страницу вниз. Это очень полезно при работе с веб-страницами, требующими прокрутки.

3. Взлом проверочного кода: Selenium использует сервис 2Captcha для взлома проверочного кода ReCAPTCHA.

CAPTCHA — это повсеместный механизм безопасности в онлайн-мире, используемый для различения пользователей-людей и машин. Здесь мы объединим Selenium и решение для автоматического кода проверки (TwoCaptcha), чтобы показать, как взломать общий код проверки — ReCAPTCHA.

1.1 Введение в сервис 2Captcha cn.2captcha.com

2Captcha — это сервис идентификации проверочных кодов, основанный на человеческом труде. Он предоставляет интерфейс API, который позволяет разработчикам отправлять нераспознанные коды проверки в службу 2Captcha. Затем сотрудники 2Captcha вручную идентифицируют и возвращают результаты. Этот сервис отличается высокой точностью обработки сложных проверочных кодов, таких как коды проверки изображений, reCAPTCHA и FunCaptcha. Основными преимуществами 2Captcha являются ее превосходная точность и гибкий API, которые позволяют разработчикам легко интегрировать и использовать ее в разных средах.

cn.2captcha.com

Поддержка типа кода проверки

Поддержка оплаты Alipay

3.2 Знакомство с ReCAPTCHA

ReCAPTCHA — это служба кодов подтверждения, запущенная Google. Ее основная функция — предоставить пользователям возможность щелкнуть флажок «Я не робот». После того, как пользователь нажмет, ReCAPTCHA оценит поведение пользователя, чтобы определить, является ли он человеком. Если пользователь определен как человек, проверка проходит; если нет, то дается дополнительное задание, например, выбор изображения, на котором что-то содержится.

3.3 Используйте Selenium для моделирования поведения пользователя

Мы можем использовать Selenium для имитации того, как пользователь нажимает флажок «Я не робот». В Селене,мы можем использоватьclickМетод имитации щелчка,Например:

Язык кода:javascript
копировать
checkbox = driver.find_element_by_id('recaptcha_check')
checkbox.click()

Однако этого может быть недостаточно, поскольку ReCAPTCHA анализирует поведение пользователей. Например, если щелчок слишком быстрый или роботизированный, ReCAPTCHA может расценить это как поведение машины.

3.4. Используйте 2Captcha для автоматического решения кодов подтверждения.

Если ReCAPTCHA создает дополнительные проблемы, нам нужно использовать другие инструменты для их решения. Здесь мы решили использовать TwoCaptcha — сервис, который может автоматически решать различные коды проверки.

В TwoCaptcha нам нужно указать URL-адрес веб-сайта и ключ сайта, после чего он вернет ответ для решения кода подтверждения. Мы можем ввести этот ответ обратно на веб-страницу, чтобы завершить проверку.

Вот пример кода для использования TwoCaptcha для решения капчи:

Язык кода:javascript
копировать
solver = TwoCaptcha(API_KEY)
result = solver.recaptcha(sitekey=sitekey, url=url)

3.5 Объедините Selenium и 2Captcha, чтобы взломать код подтверждения

С помощью Selenium и TwoCaptcha мы можем объединить их в комплексное решение. Конкретные шаги заключаются в следующем:

  1. Используйте Selenium, чтобы открыть веб-страницу.
  2. Найдите и установите флажок «Я не робот».
  3. Если возникнут дополнительные проблемы, используйте TwoCaptcha для их решения и введите ответы обратно на веб-страницу.

Следующий код реализует описанные выше шаги:

Язык кода:javascript
копировать
from bs4 import BeautifulSoup
from twocaptcha import TwoCaptcha
from selenium import webdriver

API_KEY = 'your_twocaptcha_api_key'
solver = TwoCaptcha(API_KEY)

# Создайте экземпляр WebDriver
driver = webdriver.Firefox()

# Откройте веб-страницу с помощью Selenium
driver.get('https://www.example.com/')

# Найдите и установите флажок «Я не робот».
checkbox = driver.find_element_by_id('recaptcha_check')
checkbox.click()

# Если возникнут дополнительные проблемы, используйте TwoCaptcha для их решения.
sitekey = 'sitekey_from_webpage'
url = driver.current_url
result = solver.recaptcha(sitekey=sitekey, url=url)

# Введите ответ обратно на веб-страницу
driver.execute_script('document.getElementById("g-recaptcha-response").innerHTML="{}"'.format(result['code']))

3.6 Используйте Selenium для автоматического заполнения кодов проверки

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

Язык кода:javascript
копировать
# Нацеливание на Проверочный с помощью Selenium поле ввода кода
input_box = driver.find_element_by_id('captcha-input-box-id')

# Заполняем разобранный Проверочный код
input_box.send_keys(captcha_solution)

3.7 Обработка кодов проверки изображений

Для кодов проверки изображений мы можем использовать Selenium для получения элементов изображения и сохранения их в виде локальных файлов. Затем мы можем загрузить локальный файл в 2Captcha для анализа.

Язык кода:javascript
копировать
# Найдите элемент изображения
image_element = driver.find_element_by_id('captcha-image-id')

# Сохранить изображение как локальный файл
image_element.screenshot('captcha.png')

# Загрузить в TwoCaptcha для анализа
solver = TwoCaptcha(API_KEY)
result = solver.normal('captcha.png')

# Заполняем разобранный Проверочный код
input_box = driver.find_element_by_id('captcha-input-box-id')
input_box.send_keys(result)

3.7 Обработка других типов проверочных кодов

Помимо упомянутых выше типов проверочных кодов, существуют и другие типы проверочных кодов, такие как текстовая CAPTCHA, reCaptcha V2, reCaptcha V3, HCaptcha, Funcaptcha, и сервис 2Captcha может хорошо их решить.

4. Резюме

Из этой статьи мы узнали, как использовать библиотеку Selenium для имитации операций браузера и объединить ее со службой TwoCaptcha для автоматического взлома кода проверки ReCAPTCHA. Теперь давайте подведем итоги нашей практики и выскажем некоторые мысли о возможных будущих оптимизациях.

С помощью Selenium мы можем выполнять в браузере различные сложные элементы управления: от открытия веб-страниц, заполнения форм до имитации кликов и так далее. Однако когда мы сталкиваемся с такими проблемами, как CAPTCHA, требующими участия человека, нам нужно искать дополнительные решения.

2Captcha предлагает отличное решение. Он может решать различные типы CAPTCHA, включая ReCAPTCHA, о котором мы упоминали в этой статье. Более того, API, предоставляемый 2Captcha, позволяет нам легко интегрировать его в наши сценарии Selenium.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose