Бот SereneReader

Что делает наш сборщик лент, как он представляется и как его отклонить.

Что такое SereneReader

SereneReader — это ридер лент. Когда кто-то подписывается на ваш RSS или Atom, наши серверы загружают ленту и показывают читателю новые статьи.

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

User-Agent

Каждый запрос с наших серверов идентифицируется этой строкой:

SereneReader/1.0 (+https://serenereader.com/bot)

Что мы загружаем

  • URL лент, на которые подписаны пользователи.
  • Страницу каждой статьи — однократно, считывая не более 1 МБ HTML для поиска тега og:image.
  • Favicon вашего сайта.

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

Как часто

Ленты обновляются по расписанию. Если ваш сервер отправляет заголовок ETag или Last-Modified, при следующем обновлении мы передаём If-None-Match или If-Modified-Since — и неизменившаяся лента обходится вам ответом 304 без тела.

Страница каждой статьи загружается один раз — для получения превью-изображения. Если загрузка невозможна, мы останавливаемся: постоянная ошибка (например, 404) запоминается на 30 дней, а временная (тайм-аут или ошибка сервера) повторяется ещё до трёх раз с нарастающей задержкой, после чего оставляется в покое минимум на час.

Коды 429 или 503 сигнализируют нам о необходимости снизить нагрузку. Для лент мы откладываем следующее обновление с нарастающей задержкой, а при ответе 429 — не менее значения Retry-After. Для страниц статей возможно до трёх повторных попыток в течение примерно десяти минут, после чего мы ждём не менее часа или столько, сколько указано в Retry-After, но не более семи дней.

robots.txt

Перед загрузкой страницы статьи или фавикона мы читаем ваш robots.txt и соблюдаем правила Disallow и crawl-delay для группы User-agent: SereneReader, при необходимости переходя к группе *.

URL лент отличаются. Лента загружается от имени читателя, который на неё подписан, поэтому мы обрабатываем её так же, как Google Feedfetcher: правила Disallow группы * на неё не распространяются. Группа User-agent: SereneReader, запрещающая путь к ленте, по-прежнему учитывается, а crawl-delay применяется к лентам так же, как и ко всему остальному.

Если ваш robots.txt недоступен из-за ошибки сервера, мы считаем загрузку разрешённой. Подписка — это явное согласие читателя, и нестабильный файл robots не должен прерывать доставку ленты.

Как нас заблокировать

Заблокируйте или ограничьте приведённый выше User-Agent на уровне сервера или брандмауэра, либо запретите нам доступ в robots.txt с помощью группы, указывающей наш агент. Универсальное правило для всех ботов не останавливает загрузку лент — это правило останавливает:

User-agent: SereneReader
Disallow: /

Блокировка URL вашей ленты остановит обновления для всех подписчиков, а не только для одного читателя.

Подписи запросов

Запросы подписываются с помощью Web Bot Auth (HTTP message signatures, RFC 9421), чтобы вы могли убедиться в их подлинности. Наши публичные ключи опубликованы по адресу:

https://serenereader.com/.well-known/http-message-signatures-directory

Исходящие IP-адреса

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

162.220.234.241
152.55.180.242
152.55.180.243

Список в машиночитаемом формате/bot/ips.json

Контакт

Вопросы о нашем трафике или что-то, что нужно исправить? Напишите нам.