20 млн рублей в год на парсинге сайтов. Часть 2

Меня зовут Максим Кульгин, моя компания xmldatafeed занимается парсингом сайтов в России порядка четырёх лет. Ежедневно мы парсим более 500 крупнейших интернет-магазинов в России. Теперь делимся опытом.

Первая часть статьи (см. ссылку ниже) была воспринята сообществом VC положительно (31к просмотров — мой личный рекорд). Решил собрать все наиболее интересные вопросы, которые прозвучали в комментариях и на их основе сделать вторую часть, которая, как мне кажется, получилась даже более откровенной (хотя не все вопросы далее следуют логически друг за другом).

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

1. Что такое парсинг? По одному из определений парсинг есть синтаксический анализ информации. Человеку, не вовлечённому в конкретные задачи сбора и обработки информации для Интернет-проектов, это не говорит ни о чём. Да и само определение лишь в общих чертах обозначает огромный объём работы, которую ежеминутно совершают сотни миллионов людей и десятки миллионов виртуальных роботов по всему миру. А ведь эта задача обычное для человека дело — что в сравнении цен на билеты онлайн, что в выборе подходящей электроники на сайтах магазинов… Следя за ценами и акциями в удобном мобильном приложении ближайшего к дому гипермаркета, никто из нас и не подумает окрестить себя парсером.

А если совсем по простому: парсинг — это автоматизированный сбор общедоступной информации из интернета, осуществляемый без использования API сайтов (хотя ряд сайтов легко можно парсить именно по открытому API). Можно представить, как человек открывает браузер, ходит по сайтам и копирует с них данные. Парсинг — то же самое, только ходит не человек, а робот.

2. Какая рентабельность вашего бизнеса по парсингу (выручка есть, а где прибыль?). ~40%. Вообще тут надо отметить, что у нас несколько бизнесов, которые «делят» между собой, например, аренду помещения/бухгалтера/связь и т. п. — это сильно усложняет оценку прибыльности, т. к. нужно считать доли между бизнесами. Мы этим не занимаемся, оцениваем «палец-пол-потолок».

20 млн рублей в год на парсинге сайтов. Часть 2

3. Много ли парсеров «работают» на популярных магазинах? Очень. Сложно дать количественную характеристику, т. к. мы не видим данные изнутри, но судя по количествам предложений на популярных площадках — бизнес «цветет». Услуги парсинга предлагают на AVITO, FL, KWORK и т. п. Тысячи специалистов готовы парсить что угодно (довольно дешево, кстати).

20 млн рублей в год на парсинге сайтов. Часть 2

4. Можно ли получит ИТ — аккредитацию, если мы занимаемся парсингом? Считаю что да, т. к. в законе есть пункты связанные с «обработка информации, создание баз данных». Сейчас требования к ИТ-аккредитации ужесточаются.

5. VC. RU парсите? Нет.

6. Я поставил защиту CloudFlare на свой сайт, это поможет предотвратить парсинг? Да, но частично. Этот сервис может замедлить отклик вашего сайта (замечали сами не раз), но и отсечь часть ботов. Есть технически детальные руководства для программистов, как обойти этот сервис (или минимизировать его влияние). Мы внедряем эти руководства — помогает в работе. Сейчас не совсем удобно оплачивать этот сервис по картам, что тоже добавляет хлопот защищающимся.

20 млн рублей в год на парсинге сайтов. Часть 2

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

Еще можно кроме ватермарков ставить скрытые метки. И если фото где-то засветится, то можно в суд за нарушение авторских прав. Там иски бывают по 100-200к рублей за фотографию. Конечно не все фотографии защищены авторскими правами. Например картинки от производителя товара могут быть свободно распространяемыми. Но никто не мешает подсунуть в коллекцию картинок товара несколько своих фотографий/рисунков. И за них потом привлекать к ответственности.

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

И тут мы возразим сами себе: возможно, по отдельности это всё не поможет, но все вместе осложнит «жизнь» при парсинге настолько, что станет нецелесообразным. При этом все эти техники вообще не требуют больших затрат. Правда, все эти техники прекрасно обходятся, так что по сути — защиты нет. Динамические прокси, сервисы распознающие капчи индусами, и selenium с хорошо прописанным алгоритмом действий. Всё, чего можно добиться — разработка парсера будет стоить подороже, возможно кого-то это и отпугнет, но если целевой сайт — это не каталог на полторы страницы местного офиса «Рога и Копыта», то повышение затрат мало кого отпугивает.

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

8. Что я могу сделать сам, чтобы максимально защититься от парсинга?

  • Ограничения по User Agent.
  • Ограничения по странам. Если вы продаете товары в России, то скорее всего, трафик из Китая и Филиппин не является для вас целевым, если у вас нет доставки в эти страны. Со временем, после блокировок всех нежелательных стран, бороться с парсерами станет сложнее, так как боты «перетекают» в целевую страну. Например, если ранее боты приходили из Уругвая, то после блокировки страны этот же трафик будет идти из России. Это немного дороже для атакующего, но точно не остановит парсинг, особенно если за это платят.
  • Ограничения по провайдерам. Если вам не нужен трафик с Amazon или Digital Ocean, их подсети можно заблокировать. Согласитесь, редко когда нормальный пользователь будет заходить на ваш сайт с виртуального сервера Amazon.
  • Внедрение Captcha. Отлично убирает подозрительный трафик, но есть риск помешать реальным пользователям и вызвать раздражение людей. Эффективность далека от 100% — существуют готовые системы по автоматизированному и дешевому решению Captcha.
  • Ограничение количества/скорости запросов с одного IP или в рамках одной сессии. Отличный механизм для усложнения парсинга, но надо делать аккуратно, чтобы не навредить обычным пользователям.

9. Как я могу наказать по закону РФ тех, кто парсит мой сайт? В российских законах напрямую о парсинге не говорится ничего. Там нет раздела под заголовком «Парсинг» с определением и правилами, из которых сразу было бы понятно, что можно делать, а что нельзя. Это самая серьезная дилемма, т. к. рассуждать о юридической стороне парсинга проще, когда о нём известно и десять раз написано в законах, есть набор готовых судебных решений.

Есть общее правило, которое следует из Конституции РФ и Закона об информации — каждый вправе собирать информацию любым законным способом. Так что по общему правилу парсинг — это законно. Однако нужно помнить о многочисленных ограничениях и нюансах (авторское право, например). Иногда они приводят к фактическому запрету парсинга, иногда создают дополнительные сложности, а иногда правомерность парсинга зависит от конкретных обстоятельств.

10. Нормальный такой ваш «бизнес», по сути воровство контента! Это не вопрос, но постараюсь развернуто ответить. Наш договор заключается на услугу по сбору информации, которая находится в открытом доступе. Действительно, существуют юридически риски, т. к. мы для наших заказчиков собираем данные, которые далее выгружаются им в заданном формате и здесь может быть претензия на то, что сама база данных на сайтах защищена авторским правом. Cуть в том, что дальше происходит с данными. В большинстве случаев можно совершенно легально собирать данные из открытых источников для личного-коммерческого использования (не нарушая авторское право), для научной работы или для обучения. Но как только вы эти данные начинаете собирать с целью передачи третьим лицам (в данном случае нашим заказчикам), то тут уже могут возникнуть нюансы. А пока мы ориентируемся на заключение наших юристов, которые в первую очередь обращают внимание на нарушение авторского права и в работе не собираем эти данные.

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

11. Парсинг этичен и вероятно законен, но когда будут парсить ТВОЙ сайт, «жопа» будет гореть! Да.

12. А как технически реализовано? Мы скачиваем целую веб страницу, а потом разбираем её в формате html и ищем нужные части, где находится, например, цена товара, название и т. п.

13. Как узнать, можно ли парсить с того или иного сайта? Если вы можете открыть сайт в браузере, то его можно парсить. Да, весьма вероятно, что это будет требовать времени, разработки и денег, но спарсить вы его всегда сможете (делая поправку на скорость сбора — быстрее или медленнее).

14. А сколько у вас клиентов? ~45.

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

Описание может быть объектом авторского права, но если речь идет о магазинах с большим каталогом, то описания там зачастую генерированные на основе свойств. Если выгрузить в одно место все свойства, то нетрудно сгенерировать собственные описания на их основе (тем более есть готовые инструменты на базе ИИ).

Ряд клиентов занимается аналитикой присутствия — его бред vs. конкуренты (процент занимаемых позиций в результатах поиска, средняя позиция, видимость и т. п.).

17. У вас есть большой объем цен за разное время. Вы не прикидывали реальную инфляцию? Нет.

18. Вопрос — снимаете офис или все на удалёнке? Вся наша команда работает в офисе в г. Санкт-Петербург (дождливо у нас).

19. Наверняка просят парсить социальные сети – работаете с таким? Нет.

20. Если парсить например Яндекс в промышленных масштабах — это также с точки зрения легальности как и парсинг обычных сайтов? С точки зрения закона, как мне кажется, разницы нет, но мы не парсим поисковую выдачу Yandex/Google. Поступают запросы, но это не наш профиль. Более того — это довольно сложная задача.

21. Встречаются дублирующие запросы — т. е. несколько клиентов просят один и тот-же Леруа? Не так уж часто, как хотелось бы. Например, в дело вмешивается региональность. Кто-то просит цены в Москве, а кто-то в СПб.

22. Можно сделать бота, который будет покупать товар в момент появления скидки? Да, но наверное не покупать, а класть в корзину?

23. Как часто можете обновлять данные? Зависит от объема данных. Выгрузка и передача данных клиенту делается не чаще одного раза в сутки, а сам объем данных в рамках ТЗ, может собираться от нескольких часов до месяца.

24. Можно ли спарсить весь маркетплейс сегодня? Если речь идет про крупнейшие, не специализированные маркетплейсы, мы предлагаем дробить задачу. Сбор всей информации займет недели и ее актуальность будет снижаться. Плюс надо учитывать, что средняя скорость сбора данных от сайта к сайту от 15 до 30 тыс. позиций в сутки. Есть и другие ограничения на стороне отдельных маркетплейсов, делающих такую задачу не сильно целесообразной с точки зрения издержек.

25. Можете собрать базу с контактами ЛПР? Мы собираем данные из открытых источников. Если вам известны ресурсы, где законным образом собраны и открыты к использованию данные физических лиц, мы сможем автоматизировать сбор таких данных.

26. Можно ли написать парсер по нашему ТЗ и передать нам? Такая услуга относится к разработке ПО, стоимость значительно выше и требует постоянной тех. поддержки пользователя, что сильно усложняет работы для обеих сторон. Потому мы оказываем только услугу по сбору и передаче данных под конкретные цели и задачи. Это удобно, доступно и практично.

27. Можете ли вы собирать данные под учетной записью пользователя? Да, если это не противоречит законодательству и заказчик берет на себя риски по блокировке аккаунта.

28. Можете ли вы осуществлять обработку данных для корректной загрузки в нашу систему (1с, мой склад, интернет-магазин и пр.)? Эту задачу заказчик закрывает на своей стороне, заранее определяя в каком виде и формате файла, мы должны агрегировать данные для успешного продолжения работ. И описывая эту часть в техническом задании.

29. Где можно почитать больше информации? Я регулярно пишу в Телеграмм наш опыт.

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

p. s. Не ругайтесь:) я понимаю, что парсинг сразу настраивает на негатив. Но это обычный бизнес, которым, уверяю вас, занимаются 80% торговых компаний (в том или ином виде).

8888
117 комментариев

Парсинг - «это не только ценный мех». Это целая вселенная для человека, умеющего мыслить. Я руководил проектом, где приходилось парсить прогнозы финансовых аналитиков США с ежегодной подпиской на сервис = 20 000$, а наши ребята использовали бесплатный Puppeteer https://pptr.dev/, копировали полный цифровой fingerprint, выпускали еженедельно карточку банковскую, регистрировали ее, платили 7$ и парсили неделю триала, и так год подряд. Эти же навыки использовали для самовыкупов на Wildberries. Автоматом регистрация нового юзера, поиск товара, покупка…

Я рукожоп, поэтому парсинг через XPath прям в Google Sheet ImportHTML. Удобно когда нужно спарсить было характеристики из карточек товаров на Wilberries, сразу перевести на английский не покидая гугл таблиц. И скопироват сразу в Request For Quotation Alibaba, чтобы китайские поставщики сразу тебе искали подобный товар по характеристикам.

@Максим Кульгин, есть супер лайфхак от Wildberries: хочешь защититься от парсинга: херачь в продакшен говнокод, постоянно меняй структуру html, переделывай на лету все:) И это доставляет боль парсеру, но правки на 5-10 минут обычно, просто обидно, когда снова какую-то мелочь поменяли и регулярки не срабатывают:)

13
Ответить

Парсинг на регулярках - это сильно! Тем временем 22 год близится к концу.

3
Ответить

тоже парсер пишу, бывает разметка с элементами вообще без атрибутов, вот это боль

2
Ответить
Комментарий удалён модератором

:) спасибо.

Ответить

Какая лживая статья. В Петербурге уже пять лет как недождливо!

8
Ответить

на всякий случай выглянул в окно :) у нас дождик

9
Ответить