Обход CAPTCHA с помощью Python

Как обходить CAPTCHA с помощью Requests в Python

В этом руководстве я расскажу, как работать с Requests в Python, чтобы обходить CAPTCHA, а также затрону важные этические соображения и распространённые проблемы.

Понимание CAPTCHA и ее типов

Прежде чем рассматривать способы обхода CAPTCHA, давайте разберемся с их разными типами:

  1. Image CAPTCHAs: Пользователи выбирают изображения по подсказке.
  2. Text-Based CAPTCHAs: Требуйте от пользователей вводить искаженный текст.
  3. reCAPTCHA v2 и v3: Вариант Google просит пользователей подтвердить, что они являются людьми, иногда с помощью выбора изображений.
  4. hCAPTCHA: Похожа на reCAPTCHA, но разработана с учетом приватности.
  5. Invisible CAPTCHAs: CAPTCHA, которая работает в фоновом режиме, невидима для пользователей, но отслеживает их взаимодействия.

Метод 1: Использование сервисов Anti-CAPTCHA

Прежде чем рассмотреть несколько базовых сервисов для решения CAPTCHA, я хотел бы порекомендовать Инструмент Bright Data для решения CAPTCHA как более удачный вариант. Цена немного выше, но вы получаете наиболее полный набор возможностей.

Сервисы Anti-CAPTCHA, такие как 2Captcha или Anti-Captcha.comТакие сервисы решают CAPTCHA за вас, используя людей или ИИ. Эти сервисы предоставляют API, позволяя разработчикам передавать изображения CAPTCHA или URL-адреса и получать решения в ответ.

  1. Установка библиотеки requests:
  2. pip install requests
  3. Setting Up Anti-CAPTCHA: Зарегистрируйтесь и получите API-ключ у сервиса для решения CAPTCHA.

Example Code:

импорт requests
def solve_captcha(api_key, image_url):
url = 'https://2captcha.com/in.php'
data = {
'key': api_key,
'method': 'base64',
'body': image_url, # Base64 encoded CAPTCHA image
'json': 1
}
response = requests.post(url, data=data).json()
если response['status'] == 1:
возврат response['request'] # Returns the CAPTCHA solution
else:
возврат Нет

Usage: Используйте ответ от сервиса решения CAPTCHA в заголовках запроса или в данных формы.

Способ 2: Интеграция Selenium для reCAPTCHA и hCAPTCHA

Для сложных CAPTCHA, таких как reCAPTCHA и hCAPTCHA, которые трудно обойти только с помощью requests, Selenium может помочь имитировать человеческое взаимодействие.

  1. Установите Selenium и Webdriver:
  2. pip install selenium
  3. Automating CAPTCHA Clicks:
с сайта селен импорт webdriver
с сайта selenium.webdriver.common.by импорт By
driver = webdriver.Chrome()
driver.get("https://example.com/recaptcha-page")
# Click on the CAPTCHA checkbox
captcha_box = driver.find_element(By.ID, 'recaptcha-anchor')
captcha_box.click()

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

Способ 3: Использование машинного обучения для решения CAPTCHA (продвинутый уровень)

Модели машинного обучения могут распознавать закономерности в текстовых и графических CAPTCHA. Однако для обучения модели требуется большой набор размеченных изображений CAPTCHA.

1. Инструменты и библиотеки:

  • TensorFlow или PyTorch для обучения модели.
  • OpenCV для предварительной обработки изображений.

2. Dataset Preparation:

  • Соберите датасет размеченных изображений CAPTCHA.
  • Используйте наборы данных CAPTCHA из репозиториев и у онлайн-провайдеров CAPTCHA.

3. Model Training: Обучите свою модель на размеченных изображениях CAPTCHA, чтобы распознавать символы и изображения внутри CAPTCHA.

Метод 4: обход на основе cookie для reCAPTCHA v3

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

1. Получение cookies с помощью Selenium:

cookies = driver.get_cookies()

2. Передача cookies в requests:

session = requests.Session()
для cookie в cookies:
session.cookies.set(cookie['name'], cookie['value'])

3. Выполнение запроса с сохраненными cookies: Этот метод лучше всего подходит для reCAPTCHA v3, которая опирается на данные о поведении в браузере.

Метод 5: Решение невидимых CAPTCHA с использованием шаблонов человеческого взаимодействия

  1. Имитация действий человека с Selenium: Использование реалистичных движений мыши и нажатий клавиш в Selenium для имитации паттернов человеческого поведения может снизить частоту появления CAPTCHA.
  2. Human-Like Delay Simulation: Добавление задержек в действиях на странице может снизить вероятность подозрений со стороны систем обнаружения ботов.

Дополнительные советы для эффективного обхода CAPTCHA

Чтобы дополнительно снизить риск обнаружения:

  • Use IP Rotation: Сочетайте это с сервисами ротации прокси, чтобы избежать блокировок по IP.
  • Introduce Delays: Случайным образом варьируйте задержки между запросами, чтобы выглядеть менее похожим на бота.
  • Session Consistency: Сохраняйте cookies и заголовки между запросами, чтобы сессия оставалась непрерывной.

Заключение

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

Похожие записи