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

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

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

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

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

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.

Будьте осторожны, чтобы случайно не заблокировать реальных пользователей.
Оцените, пожалуйста, статью, я старался :) (голосов: 1, оценка: 5,00 из 5)

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

восемь − 3 =