Можно ли защитить свой сайт от парсинга? Нет, и вот почему

Моя компания занимается парсингом интернет-магазинов в России уже более трёх лет, ежедневно мы парсим около 400 крупнейших сайтов в РФ. И еще не встречали защиты, которую мы не смогли бы обойти.

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

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

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

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

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

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

Блокировка "плохого" юзер-агента

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что еще можно применить?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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

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

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

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

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

2626
141 комментарий

Комментарий недоступен

16

Комментарий недоступен

4

Где еще я не видел вброса про "сопротивление парсингу бесполезно"... Однако, 99% ботов отсекаются довольно-таки простыми средствами. Оставшемуся 1%  приходится использовать гораздо более дорогие ресурсы и сетки резидентальных проксей, которые и медленнее, и тоже палятся рано или поздно, и дороже.

4

Можете поподробнее описать средства отсечения 99% ботов?

1

Чел тебя не в России так в Европе или Америке засудят, когда компании подадут в суд на владельца вашего домена или компании, поверь за ворованные с фотостоков фотки прилетает по шапке... хули ты хвалишься что вы там умеете там парсить данные с чужих сайтов компаний, некоторые сайты в открытую предоставляют доступ к API. 
Парсинг тебе никак не поможет т.к. контент вторичен для поисковых систем - и там идут в бой уже механизмы - факторы реального поведения, 1 чел никогда не сможет разместить 10000 контента в день, в итоге твой сайт уйдет в пессимизацию как ГС (govnosite).

1. Закусывайте.
2. В принципе, завязывайте писать пьяным в этих наших интернетах.
3. Читать вашу малоадекватную писанину весьма тяжко, а уж отвечать на неё и вовсе мало кто захочет.

10

Парсят, значит ты популярен. И парсится все равно открытая информация

Есть ли мнение другой стороны, у кого бизнес реально страдает из за парсинга?

Это, например, HeadHunter, «Яндекс.Еда», Beru.ru, «Ламода»

Найди лишнее)

3