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

В рамках процесса скраппинга веб-страниц злоумышленник пытается извлечь данные с ресурса: парсинг email адресов с сайта или даже целых. Идеальным способом извлечения этих данных является отправка периодических HTTP-запросов на сервер, которые отправляют веб-страницу в программу. Затем злоумышленник анализирует полученный HTML-код и извлекает требуемые данные. Этот процесс повторяется для сотен или тысяч веб-страниц, содержащих требуемые данные.
- Как запретить парсинг сайта с юридической точки зрения
- Предотвращение атак влекущих за собой отказ в обслуживании (DoS)
- Использование токенов подделки межсайтовых запросов (CSRF)
- Использование .htaccess для предотвращения копирования
- Предотвращение парсинга картинок с сайта
- Черный или белый список конкретных IP-адресов
- Запросы для регулирования нагрузки
- Создайте «приманки»
- Часто изменять структуру DOM
- Предоставление API
- Донести на злоумышленника поисковым системам и интернет-провайдерам
- Так как же бороться с парсингом сайта
С технической точки зрения процесс парсинга данных с сайта не может быть незаконным, поскольку злоумышленник просто извлекает информацию, доступную ему через браузер.
Поэтому, как вебмастер, вы должны быть оснащены так, чтобы не допустить кражу данных. Неконтролируемое копирование с помощью огромного количества запросов может привести к тому, что сервер и размещенные на нем ресурсы перестанут отвечать.
Парсинг страниц сайта может привести к потере конкурентного преимущества и дохода. В худшем случае копирование может привести к дублированию контента в другом месте, что повлечет за собой потерю доверия к первоначальному источнику. С технической точки зрения, копирование может привести к избыточной нагрузке на сервер, замедлению его работу и повышению расходов.
Рассмотрим несколько способов, с помощью которых можно противостоять потенциальным злоумышленникам. Но вы должны знать, что все, что видно на экране, может быть скопировано, и абсолютной защиты не существует.
Как запретить парсинг сайта с юридической точки зрения
Самый простой способ противостоять парсинга — запретить это юридически. Например, условия использования сайта 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 также можно контролировать и ограничивать их использование.
Донести на злоумышленника поисковым системам и интернет-провайдерам
Если все остальное не приносит положительного результата, можно сообщить поисковой системе о скраперах, чтобы они исключили из своей выдачи скопированный контент. А также интернет-провайдерам скраперов, чтобы убедиться, что они блокируют их запросы.
Так как же бороться с парсингом сайта
Любая защита от парсинга сайта может быть преодолена кем-то. Но ключевая идея заключается в том, чтобы оставаться осторожным и следить за трафиком.
Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, подписки, лайки, дизлайки, отклики!