BotBan Защита сайта от ботов
Попробовать
Меню
BotBan Защита сайта от ботов
Тема оформления

Защита от парсинга цен: что работает в интернет-магазине, а что только мешает покупателям

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

7 мин чтения

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

Кто и зачем парсит цены

Чаще всего — конкуренты, и не вручную. Мониторинг цен продаётся как обычная услуга: сервис раз в несколько часов обходит сайты из списка и присылает таблицу, а иногда сам переценивает товары у заказчика. Продавцы маркетплейсов следят так за интернет-магазинами, чтобы не продавать дороже. Производители и дистрибьюторы проверяют, держат ли дилеры рекомендованную цену.

Мотивы разные, механика одна: каталог целиком, регулярно, с карточками товаров. Для небольшого магазина это ещё и нагрузка. Обход нескольких тысяч карточек в несколько потоков сервер переносит как распродажу, только без заказов.

Почему закрыть цены полностью не получится

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

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

Что повышает стоимость парсинга

Темп и порядок обхода

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

Есть оговорка, которую нельзя пропускать. За одним адресом мобильного оператора могут сидеть сотни людей, поэтому одна частота не должна приводить к блокировке. В BotBan частота с одного адреса даёт максимум проверку браузера, и только при переходе на страницу: корзина и формы с того же адреса работают. Если парсер выглядит безупречным браузером и просто очень быстр, на этот случай есть настройка «Ограничить число запросов с одного адреса»: от 120 до 6000 в минуту, по умолчанию 600. Превысивший лимит до конца минуты получает короткий ответ 429 вместо страницы. Общие адреса операторов и адреса, с которых за час приходит пять и больше разных браузеров, лимит не трогает.

Проверка браузера вместо отказа

В спорном случае посетитель получает не отказ, а задачу: браузер подбирает число, при котором хеш начинается с нужного количества нулей. На компьютере это сотые доли секунды, на слабом телефоне — до секунды. Человек видит короткую заставку. Библиотека без JavaScript на ней останавливается. Безоконный браузер задачу решит, но пропуск привязан к адресу и строке браузера. Парсер, который меняет прокси на каждые несколько запросов, решает задачу заново на каждом новом адресе, а на каталоге в десятки тысяч карточек это уже ощутимые деньги. Подробнее о том, как это выглядит для покупателя, — в статье «Проверяем ваш браузер».

Признаки изнутри страницы

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

Рой, а не отдельные адреса

Серьёзный парсер делает с каждого адреса один-два запроса, и по адресу его не поймать. Зато его видно по рисунку: одна и та же строка браузера за сутки приходит с сотни и больше разных адресов, по паре запросов с каждого. Так выглядит ботнет на резидентных прокси, а не живая аудитория. Когда в конце сентября на магазин ковровых покрытий шёл зарубежный рой около 195 тыс. запросов в сутки, правило проверки при переходе снизило долю пропущенных ботов с 47 % до 3 %. Покупатели при этом не пострадали.

Мягкие ответы

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

Что вредит и почти не мешает парсеру

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

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

Ручной бан адресов. Адрес, найденный в логе, через час принадлежит другому участнику роя, а через неделю — обычному абоненту. Если это адрес мобильного оператора, вы закрыли сайт для района.

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

Цены только после входа. Каждый лишний шаг до цены — потерянная часть покупателей. Парсер регистрирует аккаунты пачкой.

Подсовывать боту неверные цены. Звучит остроумно, но цена ошибки высокая. Человек, которого ошибочно приняли за бота, увидит не ту цену, оформит заказ и придёт с претензией. Ложная блокировка покупателя хуже пропущенного парсера, а ложная цена — ещё хуже.

Как не задеть поисковики и агрегаторы

Поисковые роботы тоже обходят каталог подряд и тоже не грузят картинки. Отличать их надо по адресу, а не по имени в строке браузера: обратная запись DNS с прямой перепроверкой подделке не поддаётся. Подтверждённый робот Яндекса или Google должен проходить всегда, сколько бы страниц он ни запросил. Это его работа.

Робот Яндекс Директа проверяет посадочные страницы объявлений, и иногда очень настойчиво: у одного магазина напольных покрытий он делал около 10,8 тыс. запросов в сутки к тяжёлой странице. Блокировать его нельзя, показы остановятся.

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

Что делать по порядку

  1. Найдите парсер в логах и оцените масштаб: сколько карточек в сутки, с каких сетей, в какое время.
  2. Отдайте нужным партнёрам выгрузку и внесите их адреса в белый список.
  3. Поставьте защиту в режиме наблюдения и посмотрите неделю: кто попадает под подозрение и не задеты ли покупатели.
  4. Включите блокировку с проверкой браузера в спорных случаях, а для быстрых «безупречных» парсеров — лимит запросов с адреса.
  5. Если хочется, чтобы парсер не понял, что его вычислили, выберите для блокировки замедление вместо отказа.
  6. Не прячьте цены от людей и не ставьте капчу на каталог.

BotBan отличает парсер от покупателя по темпу, порядку обхода, признакам браузера и рисунку роя, а поисковых роботов подтверждает по адресу. Подробнее — на странице защиты от парсинга.

Решение по теме

Термины из статьи

Как это настроить в BotBan

Читайте также