Что такое Веб-скрейпинг


Краткое содержание

  • Веб-скрейпинг – это деятельность по автоматическому сбору данных с веб-сайтов (и web API)
  • Скрейпинг может быть условно хорошим и плохим
  • Скрейпинг может быть условно законным и не законным
  • Законность зависит от юрисдикции
  • Бороться со скрейпингом очень сложно, но не невозможно
  • Простые методы защиты не работают, боты хорошо эмулируют человека
  • Сложные методы сложны

Определения

Веб-скрейпинг – это процесс использования ботов для извлечения данных с веб-сайтов.

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

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

Есть законный скейпинг, есть незаконный. Лучше использовать термины хороший и плохой, так как вопрос законности этих практик зависит от юрисдикции.

Хороший скрейпинг

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

Плохой скрейпинг

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

Инструменты для скрейпинга

Cкрейпинг-боты – это программы, заточенные на извлечение информации с веб-страниц.

Основные задачи бота:

  • Получить HTML-код страницы сайта. Это не всегда просто сделать;
  • Извлечь и очистить интересующие данные из HTML;
  • Сохранить данные в БД.

Как отличить хорошего бота от плохого

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

Частично можно ориентироваться по следующим признакам:

  1. Хороший бот идентифицируется с организацией, которая его использует. Например, Googlebot идентифицирует себя в HTTP-заголовке как принадлежащий Google. Вредоносные боты, наоборот, выдают себя за настоящий (человеческий) трафик, имитирую браузер на уровне HTTP-заголовков;
  2. Хорошие боты следуют правилам из файла robot.txt сайта, в котором перечислены те страницы, к которым боту разрешен доступ, и те, к которым нет. Вредоносные скрейперы игнорируют эти правила и обходят все страницы, которые могут найти.

Ресурсоёмкость скрейпинга

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

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

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

Примеры вредоносного скрейпинга

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

Скрейпинг цен

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

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

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

Скрейпинг контента

Скрейпинг контента включает в себя крупномасштабную кражу контента сайта.

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

Защита от скрейпинга

Простейшие методы защиты, такие как анализ заголовков http-запроса давно не работают. Так называемые безголовые (без пользовательского интерфейса, работающие исключительно в памяти компьютера) браузеры позволяют ботам полностью эмулировать поведение реального человека.

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

Компании, занимающиеся защитой от скрэйпинга, используют следующие стратегии:

  • Отпечаток HTML. Ведение базы данных HTML заголовков запросов, которые были опознаны, как вредоносные и проверка запросов об эту базу данных.
  • Репутация IP. Сбор информации об IP адресах, с которых когда либо проводились атаки на клиентов. Посещения с IP-адресов, которые в прошлом использовались в атаках, рассматриваются с подозрением и пристально изучаются при новых обращениях.
  • Анализ поведения. Отслеживание способов взаимодействия посетителей с веб-сайтом может выявить аномальные поведенческие модели, такие как подозрительно агрессивный уровень запросов и нелогичные модели просмотра. Это помогает идентифицировать ботов, которые выдают себя за посетителей.
  • Прогрессивные задачи. Набор логики на клиентской стороне (в браузере), которая позволяет отличить бота от человека. Примером такой задачи является CAPTCHA.

Постоянная ссылка