Принцип работы систем защиты от парсинга и обход блокировок

Способы идентификации парсеров и борьба с системами защиты

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


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


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

Хорошие боты против плохих ботов

На ботов уже приходится значительная часть веб-трафика в Интернете.


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


Кроме того, хорошие боты будут следовать правилам, описанным в файле robots.txt - наборе правил для ботов, получающих доступ к размещенному веб-сайту или приложению. Например, если веб-сайт не хочет, чтобы определенная страница отображалась в результатах поиска Яндекс, Google или иной поисковой системы, он может написать правило в файле robots.txt, и боты поисковых систем, сканирующие сайт, не будут индексировать эту страницу. Однако правила в robots.txt не обязательны для исполнения (являются лишь просьбой / рекомендацией), а это означает, что плохие боты часто игнорируют их.

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


Тем не менее, злоупотребление веб-ботами и автоматизацией вынуждает многих системных администраторов принимать строгие защитные меры, чтобы предотвратить хаос злонамеренных ботов на своих серверах.


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

Серверная идентификация ботов

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

Количество запросов с одного IP за единицу времени

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


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

Анализ HTTP-запросов

HTTP-запрос - способ запроса данных браузером (клиентом) у сайта (сервера).


Каждый HTTP-запрос, отправленный клиентом на веб-сервер, содержит ряд закодированных данных, содержащих информацию о клиенте, запрашивающего ресурс (HTTP-заголовки и IP-адрес клиента).


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


Наиболее известным элементом заголовка, который помогает в обнаружении ботов, является User-Agent, который определяет, какой тип браузера использует клиент и его версию. Пример юзер-агента:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36

Анализ поведения пользователя

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


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

Отпечатки браузеров

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


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


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

Обход защиты при парсинге

Теперь, когда нам известны методы защиты от ботов, пришло время рассмотреть методы их обхода.

Использование заголовков браузера

Как упоминалось ранее, защита от парсеров проверяет заголовки HTTP-запросов, чтобы оценить, поступают ли запросы из реального браузера, и, если нет, подозрительный IP-адрес будет заблокирован.


Чтобы обойти эту защиту, бот должен иметь User-Agent с соответствующей структурой заголовка.


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

Ротация IP-адресов

Прокси - незаменимый элемент системы при парсинге.


По способу создания существует 2 типа прокси-адресов: серверные и пользовательские (резидентские).


Серверная прокси-сеть создается непосредственно на коммерческих серверах.


Резидентная прокси-сеть состоит из реальных частных пользовательских IP-адресов, которые арендуются или покупаются непосредственно у пользователей устройств или у интернет-провайдеров.


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


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

Ограничение количества запросов с одного IP

Ограничение количества запросов с одного IP-адреса за единицу времени является еще одним способом удержать скорость обращений бота к сайту в пределах лимита и избежать блокировки.

Эмуляция общественного IP-адреса

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


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

Результаты эксперимента парсинга Alibaba, Google, Amazon. Сравнение количества обращений до блокировки парсера при применение ротации IP и эмуляции публичного адреса.

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


Чтобы это сработало, один сеанс пользователя всегда должен маршрутизироваться по одному и тому же IP-адресу. Система защиты может идентифицировать такие сеансы пользователей на основе файлов cookie, токенов аутентификации или подписи/отпечатка пальца браузера HTTP.

Выводы

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

Хотите автоматизировать бизнес-процессы?