Как обходить CAPTCHA с помощью Requests в Python
В этом руководстве я расскажу, как работать с Requests в Python, чтобы обходить CAPTCHA, а также затрону важные этические соображения и распространённые проблемы.
Понимание CAPTCHA и ее типов
Прежде чем рассматривать способы обхода CAPTCHA, давайте разберемся с их разными типами:
- Image CAPTCHAs: Пользователи выбирают изображения по подсказке.
- Text-Based CAPTCHAs: Требуйте от пользователей вводить искаженный текст.
- reCAPTCHA v2 и v3: Вариант Google просит пользователей подтвердить, что они являются людьми, иногда с помощью выбора изображений.
- hCAPTCHA: Похожа на reCAPTCHA, но разработана с учетом приватности.
- Invisible CAPTCHAs: CAPTCHA, которая работает в фоновом режиме, невидима для пользователей, но отслеживает их взаимодействия.
Метод 1: Использование сервисов Anti-CAPTCHA
Прежде чем рассмотреть несколько базовых сервисов для решения CAPTCHA, я хотел бы порекомендовать Инструмент Bright Data для решения CAPTCHA как более удачный вариант. Цена немного выше, но вы получаете наиболее полный набор возможностей.
Сервисы Anti-CAPTCHA, такие как 2Captcha или Anti-Captcha.comТакие сервисы решают CAPTCHA за вас, используя людей или ИИ. Эти сервисы предоставляют API, позволяя разработчикам передавать изображения CAPTCHA или URL-адреса и получать решения в ответ.
- Установка библиотеки requests:
- pip install requests
- 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 может помочь имитировать человеческое взаимодействие.
- Установите Selenium и Webdriver:
- pip install selenium
- 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 с использованием шаблонов человеческого взаимодействия
- Имитация действий человека с Selenium: Использование реалистичных движений мыши и нажатий клавиш в Selenium для имитации паттернов человеческого поведения может снизить частоту появления CAPTCHA.
- Human-Like Delay Simulation: Добавление задержек в действиях на странице может снизить вероятность подозрений со стороны систем обнаружения ботов.
Дополнительные советы для эффективного обхода CAPTCHA
Чтобы дополнительно снизить риск обнаружения:
- Use IP Rotation: Сочетайте это с сервисами ротации прокси, чтобы избежать блокировок по IP.
- Introduce Delays: Случайным образом варьируйте задержки между запросами, чтобы выглядеть менее похожим на бота.
- Session Consistency: Сохраняйте cookies и заголовки между запросами, чтобы сессия оставалась непрерывной.
Заключение
Обход CAPTCHA в веб-скрейпинге требует сочетания стратегий: от использования сервисов anti-CAPTCHA и инструментов автоматизации, таких как Selenium, до ротации IP-адресов и имитации человеческого поведения. Эти методы позволяют ботам эффективно обходить CAPTCHA, но важно учитывать этические аспекты, поскольку CAPTCHA предназначены для защиты данных и безопасности пользователей. Сочетание этих подходов с соблюдением правил сайта помогает ответственно достигать целей скрейпинга.

