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

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

В рамках процесса скраппинга веб-страниц злоумышленник пытается извлечь данные с ресурса: парсинг email адресов с сайта или даже целых. Идеальным способом извлечения этих данных является отправка периодических HTTP-запросов на сервер, которые отправляют веб-страницу в программу. Затем злоумышленник анализирует полученный HTML-код и извлекает требуемые данные. Этот процесс повторяется для сотен или тысяч веб-страниц, содержащих требуемые данные.

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

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

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

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

Как запретить парсинг сайта с юридической точки зрения

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


Обход роботом служб разрешен, если это сделано в соответствии с директивами нашего файла robots.txt, но скрапинг запрещен.

Можно даже подать в суд на потенциальных скраперов, если вы запретили это в условиях. Например, как LinkedIn.

Предотвращение атак влекущих за собой отказ в обслуживании (DoS)

Скраппиннг может нарушить работу вашего сервера. Поэтому необходимо избегать возникновения подобных ситуаций.

Можно идентифицировать IP-адреса злоумышленников и блокировать их запросы путем фильтрации через ваш брандмауэр. Хотя поставщики облачных услуг предоставляют  доступ к инструментам, которые блокируют потенциальные атаки. Например, если вы пользуетесь Amazon Web Services, AWS Shield поможет защитить сервер от возможных атак.

Использование токенов подделки межсайтовых запросов (CSRF)

Используя токены CSRF в вашем приложении, вы предотвратите выполнение произвольных запросов на гостевые URL-адреса. Маркер CSRF может присутствовать как переменная сеанса или как скрытое поле формы.

Чтобы обойти маркер CSRF, нужно загрузить и проанализировать разметку, а также выполнить поиск нужного маркера. Этот процесс требует навыков программирования и использования профессиональных инструментов.

Использование .htaccess для предотвращения копирования

.htaccess — это файл конфигурации веб-сервера Apache, и его можно настроить так, чтобы предотвратить доступ скраперов к вашим данным. Первый шаг — определить парсеры, что может быть выполнено через Google Webmasters или Feedburner. После того как вы их идентифицируете, можно использовать большое количество методов защиты.

По умолчанию файл .htaccess не включен в Apache. Также мы предоставим аналоги для Nginx и IIS в рамках приводимых примеров. Подробную информацию о преобразовании правил перезаписи можно найти в документации Nginx.

Предотвращение парсинга картинок с сайта

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

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

В Nginx хотлинкинг может быть предотвращен с помощью директивы location в соответствующем файле конфигурации (nginx.conf). В IIS необходимо установить URL Rewrite и отредактировать файл конфигурации web.config.

Черный или белый список конкретных IP-адресов

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

В Nginx можно использовать ngx_http_access_module, чтобы выборочно разрешать или отклонять запросы с IP-адреса. Аналогично, в IIS можно ограничить доступ к IP-адресам, добавив роль в Диспетчере серверов.

Запросы для регулирования нагрузки

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

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

Создайте «приманки»

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

Часто изменять структуру DOM

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

Предоставление API

Можно выборочно разрешать извлечение данных с сайта при условии принятия определенных правил. Один из способов реализовать это — создать API-интерфейсы на основе подписки для мониторинга и предоставления доступа к данным. Через интерфейсы API также можно контролировать и ограничивать их использование.

Донести на злоумышленника поисковым системам и интернет-провайдерам

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

Так как же бороться с парсингом сайта

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

 

Перевод статьи «Protect your site against Web Scraping» выполнен дружной командой проекта Сайтостроение от А до Я.