PSB Proxy
Как сделать обход капчи при парсинге: что реально работает

Как сделать обход капчи при парсинге: что реально работает

  1. Home
  2. name-blogs
  3. Как сделать обход капчи при парсинге: что реально работает

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

Что такое капча?

Капча (в англ. CAPTCHA) — это автоматизированный тест, который предназначен для отличия реального человека от робота. Для владельцев сайтов это главный фильтр, защищающий от спама, брутфорса и накруток, а для разнообразных парсеров — это стоп-фактор.

Выделяют следующие типы капч, которые в настоящее время существенно тормозят парсинг:

  • Текстовая (искаженные символы). Является устаревшей, но всё ещё используется на некоторых сайтах. Распознаётся плохо из-за сильных искажений.
  • Google reCAPTCHA v2. В настоящее время является одной из самых популярных — в ней просят отметить квадраты с витринами или светофорами.
  • Google reCAPTCHA v3. Невидима для пользователя, оценивает его поведение на сайте, присваивая соответствующий рейтинг (score).
  • Hcaptcha. Аналог reCAPTCHA, но более дешёвый и конфиденциальный по сравнению с продуктом от Google.
  • CloudFlare Turnstile. Умная проверка, которая анализирует сессию и браузерные данные.

Стратегия 1: как сделать так, чтобы капча не появлялась

Самый лучший и дешёвый способ обойти капчу — это сделать так, чтобы она не появлялась вовсе. Работает это по следующему принципу:

  • Замедление парсинга. Для этого вместо 100 запросов в секунду выполняют 2-3 c рандомными задержками (time.sleep).
  • Имитация пользователя. Парсинг осуществляется через реальный браузер, а не через голый HTTP-запрос, который сайт может посчитать за попытку атаки бота и показать такому «пользователю» капчу для проверки на роботизированность.
  • Настройка заголовков. Для этого необходимо отправлять верные User-Agent, Accept-Language и многие другие заголовки.

Такая стратегия идеальная для сайтов, которые нагружают капчей только тех, кто является «подозрительным» - использует прокси, делает много запросов в секунду или же не загружает стили или скрипты. Если после всего проделанного выше капча всё равно появляется, то логично перейти к другим стратегиям.

Стратегия 2: обход капчи через сервисы распознавания

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

Популярные сервисы для разгадки капчи следующие:

  • 2Captcha / RuCaptcha. Считаются самыми известными и обладают поддержкой reCAPTCHA, Hcaptcha и обычного текста. Работают по принципу решения капчи человеком.
  • Anti-Captcha. Аналогичный предыдущим сервис, обладающий хорошим API с низкими ценами при больших объёмах загружаемых капч.
  • CapSolver. Современный сервис, специализирующийся на решении сложных задач с помощью искусственного интеллекта.

Плюсы у подобной стратегии следующие:

  • Высокий процент успеха (99% капч решаются успешно);
  • Простота интеграции (API таких сервисов имеют библиотеки для различных языков программирования).

Но за плюсами скрываются и минусы:

  • Необходимость вложения большой суммы денег в случай больших объёмов решаемых капч;
  • Скорость решения занимает от 5 до 30 секунд, что замедляет парсинг.

Стратегия 3: использование эмуляторов браузера

Современные капчи (в особенности reCAPTCHA v3) анализируют не только то, что пользователь делает, но и цифровой отпечаток его браузера. Они могут проверить, есть ли у вас куки, как двигалась мышь при работе с сайтом и не запущен ли браузер в «безголовом» (headless) режиме. Использование эмуляторов необходимо для того, чтобы эти самые действия создать — простой код на Python не умеет шевелить мышкой или хранить историю браузера, как человек.

Для таких целей используются следующие инструменты:

  • Puppeteer (Node.js). Управляет браузером Chrome.
  • Praywright. Работает с браузером Chromium, Firefox и Webkit.
  • Selenium. Считается классическим, но из-за этого легче обнаруживается.

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

Плюсы данной стратегии следующие:

  • Меньше срабатывание невидимых капч.
  • Возможность обхода сложной системы JS-защиты.

Минусы данной стратегии следующие:

  • Ресурсоёмкость. Браузер потребляет много оперативной памяти и ресурсов процессора.
  • Сложность масштабирования. Для запуска, к примеру, 100 браузеров, необходимо сразу несколько десятков рабочих машин.

Стратегия 4: ротация прокси, как метод «ухода» от капчи

Зачастую капча бывает привязана не к вашему поведению, а к IP-адресу. Если с него сделали 1000 запросов, то сайт обязательно пометит адрес как подозрительный и запустит капчу как проверку того, а не робот ли пользователь.

Суть данной стратегии в следующем — берётся пул прокси-серверов. При условии, если с текущего IP начинает сыпаться капча, парсер автоматически берёт следующий адрес из этого пула.

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

Плюсы у метода ротации прокси следующие:

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

Но у данной стратегии есть и минусы. Они следующие:

  • Невозможность защиты от умной капчи с анализом поведения — цифровой отпечаток просто не успевать выработаться.
  • Качество прокси может оказаться не идеальным и часть адресов либо останется нерабочей, либо не подойдёт для парсинга.

Сравнение стратегий: что выбрать для своего проекта

Выбор стратегии из четырёх стратегий, каждая из которых представлена выше, зависит от ваших целей и бюджета.

  • Если сайт простой и практически не защищён, то достаточно стратегии 1 (замедление) и стратегии 4 (ротация прокси). Такой способ будет самым дешёвым, но эффективным для сайтов данного типа.
  • Если необходимо собрать много данных, к примеру, с маркетплейса, то идеальным вариантом будет связка эмулятора браузера (стратегия 3) с ротацией прокси (стратегия 4). Тогда капча будет сведена практически к минимуму.
  • Если капча появляется неизбежно, то единственным оптимальным, но затратным способом будет стратегия 2 — подключение к данной работе сервисов распознавания. Дело в том, что проще сразу отправить защитную картинку на распознавание к профессионалам своего дела, чем убегать от неё и затем сталкиваться с капчами гораздо чаще, чем обычно.

Пошаговый план: как встроить обход капчи в свой парсер

Если вы хотите гарантировано пройти проверку капчи в любых условиях, то лучше используйте комбинированный подход:

  • Проанализируйте тип капчи на целевом сайте (reCAPTCHA, CloudFlare или простая картинка).
  • Подготовьте инфраструктуру — стоит приобрести качественные резидентские или мобильные прокси, но не брать дата-центровые.
  • Проведите эмуляцию путём написания скрипта для эмулятора с модом на скрытие headless-режима — это поможет вам избежать нежелательного появления капчи на страницах сайтов слишком часто.
  • Настройте логику обнаружения на остановку сбора при появлении на странице элемента капчи (iframe или же картинка).
  • Выполните интеграцию с сервисом распознавания капчи, чтобы через API код капчи со страницы сайта автоматически отправлялся на сервера, где решался без человеком или ИИ, а обратно отправлялся готовый результат для вставки токена в нужное поле на форме.
  • Если капча стала прилетать часто, то настройте ротацию прокси после каждого 5-10 запроса или же при возникновении ошибок.
  • Регулярно следите за логами парсера и за балансом в сервисе распознавания.

Заключение

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

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

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