Как защитить сайт от парсинга

У термина Парсинг есть несколько толковании. В нашем случае рассмотрим темную сторону парсига и способы защиты от нее.

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

Защитится от профессионального парсинга практически невозможно, но стоит постараться максимально осложнить им жизнь.

10 способов защитить сайт от парсинга.

1. Не «светитесь»
Заблокируйте все боты кроме ботов основных поисковых систем Яндека и Google. Незачем вашему сайту попадать в базу SimilarWeb или keys.so. Часто, посмотрев данные вашего сайта по этим сервисам, принимается решение о парсинге.

2. Маскируйтесь
Обычно посмотрев вот такие показатели сайта принимают решение о созданий копии сайта (парсинге):

Параметры сайта

Разбавляйте ваши трафиковые страницы новостями и пр. и вы не привлечете внимание парсеров.

3. Бан по IP адресу
Анализируйте вебвизор Яндекс Метрики/логи сервера хостинга, выявляйте нецелевых пользователей (пришедших не поиска) и баньте их по IP. Самое главное в этом методе — найти границу между естественной частотой и количеством запросов реальных пользователей и попытками парсинга, чтобы не заблокировать ни в чем неповинных пользователей. Рассматривали это в отдельной статье.

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

    Не показывайте страницы ошибок с подсказкой, например:

  • Слишком много запросов с вашего IP-адреса, повторите попытку позже.
  • Ошибка, заголовок User Agent отсутствует!

Вместо этого покажите дружественное сообщение, которое не сообщает парсеру, что вызвало ошибку. Что-то вроде этого:

Извините, что-то пошло не так. Вы можете обратиться в службу поддержки, если проблема не исчезнет.

К сожалению такую защиту реализуется только на уровне сервера (невозможно реализовать плагином WordPress). Если у вас выделенный сервер (или доступ на сервер хостинга) модуль libapache2-mod-evasive ограничит число запросов к одной странице от одного и того же IP в течение указанного интервала времени.

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

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

Например, если начнешь парсить Яндекс.Маркет, то уже через 5-10 страниц «нарвешься» на капчу.

6. Меняйте структуру страницы
Один из эффективных способов защиты от автоматического парсинга — это изменение структуры страницы. В простейшем случае это изменение URL медиафайлов WordPress (рассматривали здесь). Очень часто скопировав контент, картинки «подтягивают» с вашего сайта. Изменив путь до медиафайлов — вы сделаете «дырку» на спаршенном сайте.

7. Используйте «Honey Pot»
«Honey Pot» — это горшочек меда, по другому это «Приманка». Используйте страницы которые никогда не посетит пользователь, но на которую обязательно перейдет парсер. После анализа переходов занесите полученные IP в черный список. Подробнее на github.

8. Используйте отличия от браузера
Простой парсер отличить от современного браузера довольно просто — парсер считывает только HTML-страницу, но:

  • не считывает картинки;
  • не использует таблицы стилей;
  • и не исполняет JavaScript.

В серверное ПО можно заложить проверку: если пользователь зашел на страницу, но при этом не загрузил картинку или не исполнил JavaScript, то он робот и его можно смело банить.

9.
Использовать хостинг с защитой от парсинга
Например, CloudFlare обеспечивает защиту от ботов и anti-scraping.

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



Комментарии
  1. Максим

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

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

Задайте вопрос в комментариях