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

Нужно ли защищаться от парсинга?

Можно ли защититься от парсинга своего сайта? Короткий ответ — нет. Никакой внятной защиты от получения открытых на сайте данных не существует. 

За последние годы мы в компании реализовали множество проектов, связанных с получением данных крупнейших сайтов. Это, например, HeadHunter, «Яндекс.Еда», Beru.ru, «Ламода». И сегодня спрашиваем сами себя — можно ли защититься от этого?

Скрапинг, или парсинг — это сбор данных с различных интернет-ресурсов. Общий принцип работы можно объяснить так: боты обращаются к открытым страницам целевого сайта, получают HTML-код, разбирают его на составляющие (парсят), ищут нужные данные и сохраняют в своей базе данных. Таким образом получается «чистая» копия данных, хранящихся на сайте, — товаров, резюме, изображений, текстов. Если над одним сайтом проводить скарпинг регулярно, то можно отслеживать изменения. Например, наблюдать за изменением цен или товарных запасов.

Самыми заметными парсерами являются поисковые системы. «Яндекс» и Google напрямую занимаются парсингом: они заходят на сайт и индексируют его — собирают информацию. Защищаясь от парсинга, подумайте — не заблокируете ли вы заодно и свое присутствие в поисковиках и любимый SEO?

У людей, далеких от IT, присутствует эдакое идеализированное представление о программировании как в компьютерных играх 80-х: вы надеваете шлем виртуальной реальности и погружаетесь в «Матрицу». На самом деле вся информация и все взаимодействия — это нули и единицы. Здесь нет ничего человеческого. Нет различия между данными, введенными компьютером или человеком. 

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

Давайте рассмотрим все технические способы, которыми веб-сайт может попытаться заблокировать бота.

Техническая защита от парсинга

Блокировка юзер-агента (user agent)

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

Решение: заголовки меняются произвольным образом и любой бот может имитировать реальных пользователей. Более того, на нашей стороне HTTP-заголовки рандомизируются между сеансами скрапинга, поэтому так заблокировать бот невозможно.

Блокировка IP-адресов

Хорошо, заголовки можно произвольно менять, но невозможно менять IP-адрес, с которого обращается клиент. Можно же определить адреса ботов и заблокировать их?

Решение: «поддельные» IP-адреса — прокси. Это более сложно, чем подмена HTTP-заголовков, но тоже ничего экстраординарного. Мы используем комбинацию из шедулинга запросов и ротации IP-адресов, чтобы избежать идентифицируемых шаблонов поведения бота. У нас есть доступ к большому количеству IP-адресов, к тому же, как и в предыдущем случае, по IP-адресу отделить ботов от живых пользователей практически невозможно.

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

Использование капчи

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

Решение: API для решения капчи. Капча только добавит неудобств обычным пользователям. Все методы капчи (в том числе для reCAPTCHA от Google) легко обходятся с помощью сторонних сервисов, вроде 2Captcha, в которых реальные люди решают задачи, поставленные перед нашими ботами. Стоимость услуг минимальна (например, 100 рублей за 1000 задач).

Невидимая капча

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

Нет единого рецепта, как это реализовать. Различные провайдеры используют разные параметры для профилирования пользователей. Эта услуга предоставляется некоторыми CDN (например, Cloudflare) и традиционными провайдерами капчи, например Google reCAPTCHA.

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

По словам бывшего руководителя отдела Google по распознаванию кликфрода Шумана Гоземаджумдера, невидимая капча «просто создает новый тип задач, с которыми продвинутые боты по-прежнему справляются, а для людей они становятся большой проблемой».

Проверка электронной почты

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

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

Изменение структуры сайта

Сайт может время от времени менять структуру, и в ответ на запрос HTML-код будет меняться. 

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

  • изменения структуры для вас «стоит» больше сил и времени, чем для нас;
  • наши системы уведомят, как только это произойдет;
  • это повлияет также на реальных пользователей.

В следующих сериях…

Есть еще несколько методов защиты, которые можно применять, — это защита на уровне SMS-верификации, защита на уровне API с помощью ключа, на уровне фреймворков. Были даже предложения сделать Flash-версию сайта или генерить страницы в виде картинок.

Но все они либо также достаточно понятно обходятся (с помощью других фреймворков или системных утилит), либо катастрофичны для бизнеса с точки зрения пользовательского опыта (представляете магазин на Flash в 2019 году?). Так что мы в данной статье их рассматривать не будем. Если хотите обсудить — напишите в комментариях, и я расскажу подробнее о каждом случае.

Блокировка 98% скраперов

Хотя нельзя заблокировать все парсеры, вы можете помешать или заблокировать самые простые из них (а таких большинство), используя комбинацию вышеуказанных методов.

Стоит ли это ваших усилий? Ответ зависит от следующих факторов:

  • Какое влияние оказывают боты на ваш сайт/бизнес?
  • Повлияет ли это на реальных пользователей?

Чаще всего ответ заключается в том, что оно того не стоит.

Моральная защита

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

Парсеры создают нагрузку

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

Вы тратите деньги компании, которая содержит сайт!

В общем случае — тоже нет. Электронный магазин или каталог товаров ничего от парсинга не теряет: трафик у него практически неограниченный, нагрузки боты, как мы говорили выше, не создают.

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

Парсинг сайтов незаконен!

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

Короткий ответ: нет. Ни в России, ни в США автоматизированное получение открытой информации с сайта не является преступлением. 

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

Резюме

Собирая данные с топ-100 российских eCommerce-магазинов, мы сталкивались с совершенно разными механизмами блокировок, но итог один: данные собираются.

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

Ни один из этих методов не блокирует ботов, а внедрение некоторых или всех этих механизмов дорого обойдется компании с точки зрения 1) стоимости технической разработки и 2) неудобств для реальных пользователей.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *