Руководство по избеганию CAPTCHA при веб-парсинге

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

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

Что такое CAPTCHA?

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) - это тест, позволяющий отличить пользователей-людей от автоматизированных компьютерных программ, известных также как боты.

CAPTCHA является эффективным инструментом для предотвращения доступа ботов к веб-сервисам и обеспечения того, что к веб-сервисам обращаются люди, а не боты, такие как боты, занимающиеся веб-парсингом или спамом.

Для чего используются CAPTCHA?

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

  1. Предотвращение фальшивых регистраций: CAPTCHA позволяют владельцам сайтов выявлять фальшивые регистрации и мошеннические аккаунты. Они защищают страницы входа в систему от автоматических атак, таких как "набивание шифров" (credential stuffing), когда злоумышленники получают доступ к учетным записям, используя украденные списки имен пользователей и паролей.
  2. Предотвращение спама: CAPTCHA помогают владельцам сайтов выявлять ботов, например, набивающих учетные данные, или спамботов, а также позволяют создавать пользовательский контент. Например, веб-сайты могут уменьшить количество спама, генерируемого ботами, если потребуют от пользователей идентифицировать и правильно заполнить CAPTCHA. CAPTCHA можно использовать перед тем, как посетитель публикует комментарий, покупает что-либо или создает учетную запись, чтобы предотвратить добавление ботами вредоносных URL-адресов и рассылку спама.
  3. Блокирование веб-парсеров: Веб-сайты используют CAPTCHA в качестве средства защиты от парсеров для управления трафиком парсеров и предотвращения перегрузки своих серверов большим количеством запросов.
  4. Повышение безопасности сайта: CAPTCHA могут быть включены в процесс многофакторной аутентификации (MFA) для защиты онлайн-сервисов от несанкционированного доступа и утечки данных. Неавторизованным пользователям гораздо сложнее получить доступ к конфиденциальной информации или ресурсам.

Почему CAPTCHA представляют собой проблему для веб-парсинга?

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

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

Некоторые веб-парсеры могут решать определенные типы CAPTCHA, например, основанные на изображениях или звуковые CAPTCHA. Однако более сложные CAPTCHA, такие как интерактивные CAPTCHA или reCAPTCHA "No CAPTCHA", также могут быть сложны для решения реальным человеком.

Как работают CAPTCHA?

Мы описали принцип работы CAPTCHA в три этапа:

  1. Веб-сайты бросают посетителю вызов с помощью CAPTCHA, обычно в виде искаженного несовпадающего текста, головоломок для распознавания изображений или аудиоклипа со словом или серией символов.
  2. От посетителя ожидается правильная идентификация слова или символов, представленных на изображении или в аудиоклипе.
  3. Если ответ пользователя совпадает с правильным, ему предоставляется доступ к сайту или сервису.

Вы наверняка видели на многих сайтах флажки "Я не робот". Это менее навязчивый тип CAPTCHA по сравнению с CAPTCHA-тестами. Флажок "Я не робот", также известный как "No CAPTCHA", является новой версией технологии Google reCAPTCHA.

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

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

Различные типы CAPTCHA

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

1. CAPTCHA на основе изображений

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

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

2. CAPTCHA на основе звука

Аудио CAPTCHA представляет собой искаженный аудиоклип слова или ряда символов. Пользователь должен прослушать аудиоклип и правильно определить слово или символы, указанные в клипе. Этот тип CAPTCHA часто используется для пользователей с нарушениями зрения.

3. Текстовые CAPTCHA

Текстовая CAPTCHA отображается в странном и искаженном форматировании. Для прохождения теста пользователь должен правильно определить и ввести в текстовое поле.

4. Математические CAPTCHA

Математические CAPTCHA представляют пользователю простую математическую задачу, которую необходимо решить и ввести в текстовое поле, например, "Сколько будет 3 + 2?".

5. Интерактивные CAPTCHA

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

6. CAPTCHA на основе флажков

Разновидностью reCAPTCHA являются CAPTCHA на основе флажков. reCAPTCHA - это бесплатный сервис, разработанный компанией Google для защиты сайтов от нежелательных и вредоносных действий.

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

 

Обход CAPTCHA: приемы и советы для веб-парсеров

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

1. Технические решения:

  • Улучшение "отпечатка пальца" веб-парсера: Отпечаток браузера - это метод отслеживания, используемый веб-сайтами для сбора данных с устройств своих посетителей. Например, когда вы посещаете веб-сайт, ваше устройство отправляет HTTP-запрос на целевой сайт для получения доступа и отображения содержимого. Целевой сайт может получить доступ и собрать информацию, отправленную вашим браузером о вашем устройстве, такую как веб-браузер, часовой пояс и IP-адрес.

Улучшение "отпечатка пальца" веб-парсера важно для того, чтобы избежать обнаружения и блокировки сайтами. Чтобы сделать браузер менее уникальным, можно использовать агент пользователя и изменять строку агента пользователя.

  • Использование сервиса для разгадывания CAPTCHA: Существует множество платных и бесплатных сторонних сервисов, предоставляющих возможность решения CAPTCHA. Поэтому необходимо провести исследование, чтобы найти надежного поставщика услуг. Убедитесь, что используемый вами сервис решения CAPTCHA соответствует условиям предоставления услуг соскабливаемого сайта, поскольку некоторые сайты запрещают его использование.

2. Ручные решения:

  • Решение CAPTCHA вручную: Самый простой способ обойти CAPTCHA - решить ее вручную с помощью человека-оператора. Это можно сделать собственными силами или привлечь стороннюю службу CAPTCHA, которая нанимает людей для решения задач. Решение вручную может быть более экономичным, чем привлечение специализированной службы. Однако важно отметить, что такой способ требует много времени и не позволяет решать сложные задачи CAPTCHA.
  • Ограничение количества запросов: Имитация человеческого поведения, например, прокрутки и нажатия на ссылки, может заставить ваш парсер выглядеть более человечным при просмотре веб-сайта. Можно ограничить скорость запросов до разумного уровня, чтобы парсер выглядел более похожим на человека, просматривающего веб-сайт. Например, быстрое выполнение запросов на подключение может привести к ограничению скорости парсинга и другим мерам по борьбе с ним.