Как защитить цены и каталог от парсинга
Содержание
Поделиться
Файл robots.txt не закрывает каталог от парсинга. RFC 9309 описывает его как просьбу к автоматическим клиентам соблюдать правила доступа к адресам. Правила не являются разрешением на доступ. Клиент, который файл не читает, эту просьбу просто не увидит.
Парсинг в каталоге OWASP — сбор доступного содержимого, чтобы использовать его в другом месте, в том числе чтобы влиять на цены. Ниже — что реально меняет обход поисковых роботов и какие меры относятся к дефицитному товару, а не к чужому прайс-листу.
Что robots.txt умеет и чего не обещает
Владелец сервиса в файле robots.txt просит автоматических клиентов соблюдать правила доступа к URI. Группа без правил в конце файла неявно разрешает всё. Если для токена робота нет своей группы и нет группы *, правила не применяются. URI самого /robots.txt разрешён неявно. RFC описывает клиентов, которые протокол соблюдают. Он не обещает, что произвольная программа его прочитает. Скликивание этим файлом не лечится: файл про обход адресов, не про клик по объявлению.
Google в своём толковании поддерживает user-agent, allow, disallow и sitemap. Поля crawl-delay в списке поддерживаемых нет. Файл больше 500 КиБ: всё после предела игнорируется. Ответ 4xx, кроме 429, Google читает так, будто годного robots.txt нет, то есть ограничений на обход нет. Коды 401 и 403 для снижения частоты обхода справка использовать не велит: на частоту они не влияют. Запрет обхода не даёт проиндексировать содержимое страницы, но адрес может остаться в результатах без сниппета. Это правила Googlebot, не чужого парсера цен.
Яндекс с 22 февраля 2018 года перестал учитывать директиву Crawl-delay. Скорость, с которой роботы загружают страницы, задаётся в Вебмастере на странице «Скорость обхода», отдельно для основного домена и каждого поддомена. По умолчанию включено «Доверять Яндексу»: скорость считается так, чтобы загрузить больше страниц без лишней нагрузки. Значение, заданное вручную, для робота рекомендация: фактическая скорость может отличаться.
Как робот Яндекса снижает нагрузку
Индексирующий робот сам планирует визиты и регулирует нагрузку по тому, сколько новых и уже известных страниц надо обойти. Всплеск бывает, когда робот узнал о новом разделе или сменились адреса. Если загруженных страниц много больше, чем страниц в поиске, справка считает вероятными однотипные страницы и дубли. Disallow в robots.txt снимает обращения к указанным страницам в течение суток после правки файла. Ответ HTTP 429 справка называет знаком, что серверу тяжело: робот уменьшит число обращений. Поддомены Яндекс считает отдельными сайтами, поэтому обход каждого может умножить нагрузку на сервер.
Речь о роботе Яндекса, не о произвольном парсере и не о счёте хостинга в рублях. Директива Clean-param убирает параметры вроде UTM из индексирования, и срок «в течение суток» к ней эта справка не относит. Закрыть цены от чужого сборщика ответом 429 нельзя: 429 — сигнал своему роботу снизить частоту, а не запрет копировать каталог.
Что OWASP называет парсингом
OAT-011 Scraping — сбор содержимого приложения и других данных для использования в другом месте. Описание говорит о копировании доступных данных и обработанного вывода. Среди целей — эксплуатация собственных данных приложения и влияние на цены. Сбор может идти постоянно или периодами, с поддельной или захваченной учётной записью либо без входа. Если между человеком и приложением стоит другое приложение, описание отсылает к другому событию. Если цель — получить деньги или товар, тоже к другому. Порядок обхода и падение позиций исходного сайта в описании OAT-011 не зафиксированы.
Недействительные клики сбор цен не описывают. Кликфрод — про клик и показ. Кто скликивает рекламу, каталог не копирует. Возврат денег за скликивание от парсинга прайса не зависит.
Что ставить на дефицитный товар
Рекомендации OWASP по скальпингу и удержанию запаса называют первые меры: очередь или зал ожидания на ограниченный выпуск, предел покупки на учётную запись, который проверяет сервер, и удержание товара в корзине только до оплаты, после чего запас возвращается. Предел предлагается считать не только по записи, но и по повторам одного и того же плательщика, адреса и устройства. Число секунд удержания в этот порядок не входит. Очередь не обещает закрыть парсинг цен: она про товар, который разбирают, а не про чтение витрины. Номер события в рекомендациях и в таблице проекта расходится, поэтому в действие берите меру, а не номер.
Не считайте Disallow защитой цен. Это просьба к клиентам, которые её соблюдают. Google после запрета может оставить адрес в выдаче без сниппета.
Не ставьте Crawl-delay. Google поле не поддерживает. Яндекс не учитывает его с 22 февраля 2018 года и берёт скорость из Вебмастера.
Не отдавайте 401 и 403, чтобы «замедлить робота». На частоту обхода Google они не влияют. Ответ 4xx, кроме 429, Google читает как отсутствие годного robots.txt.
429 оставьте знаком нагрузки для робота Яндекса. Чужой сборщик цен им не останавливается.
Для дефицитного товара поставьте очередь, серверный предел на покупателя, плательщика, адрес и устройство и возврат запаса, если корзину не оплатили.
Следите за файлом: всё после 500 КиБ Google игнорирует, группа без правил в конце неявно разрешает всё.