Как справиться с внезапным ростом «Другого трафика» в аналитике сайта?

Всем привет,

Я недавно заметил огромный скачок в категории «Другой трафик» на странице «Здоровье сообщества» моего форума (панель администратора Discourse → Отчёты → Здоровье сообщества).

Вот детали:

•	Период: начало августа 2025 года

•	Ежедневный трафик: вырос до 100 тыс.+ «Другого трафика» в день

•	Пример: 16 августа 2025 года

•	Просмотры страниц авторизованными пользователями: 12 531

•	Просмотры страниц анонимными пользователями: 2 753

•	Известные краулеры: 6 865

•	Другой трафик: 102 054 (большая часть от общего трафика в 124 тыс.)

Этот «Другой трафик» кажется аномальным и значительно превышает активность реальных пользователей. Количество регистраций стабильно, поэтому это не похоже на настоящий рост.

Мои вопросы:

1\. Что обычно означает «Другой трафик» в Discourse?

2\. Может ли это быть боты, спам или неправильно настроенный обратный прокси/CDN?

3\. Как можно сократить или отфильтровать этот трафик? (например, Nginx, фаервол, настройки Discourse)

4\. Безопасно ли просто игнорировать это, или это повлияет на производительность/затраты?

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

Заранее спасибо!

“Другой трафик” — это, скорее всего, боты или краулеры. Подробнее здесь: Understanding pageviews and the site traffic report.

Вы можете проверить отчёт о краулерах на своей панели управления, чтобы найти возможный источник, и при желании замедлить его работу или заблокировать. Дополнительные сведения об этом здесь: Controlling Web Crawlers For a Site.

В июле у меня возникли проблемы с огромным количеством запросов из Сингапура. Я заблокировал диапазон IP-адресов, что сработало на какое-то время, но в августе проблема вернулась с новой силой (из Сингапура, Гонконга и Мексики), что привело к высоким и неожиданным затратам на CDN :face_with_steam_from_nose:

Я заметил высокий трафик просмотров страниц от Amazonbot, DataForSeoBot, meta-externalagent, SeekportBot и других…

В этой документации Controlling Web Crawlers For a Site сказано:

Этот список не содержит некоторых из самых активных ботов, которые посещают мой сайт, но у меня всё же есть вопрос.
Было бы разумно добавить весь этот список в настройку Заблокированные user-agent краулеров?
Есть ли способ массово добавить имена ботов из файла .txt?

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

  2. Наиболее вероятная причина роста вашего трафика — это боты, и вам следует проверить логи вашего сервера. Если вы знаете кого-то, кто хоть немного разбирается в Linux, я рекомендую этот инструмент настройки за 2 минуты для блокировки стран с плохой репутацией ботов (вы легко найдете его в интернете). После настройки всё равно стоит предупредить ваше сообщество, что им может понадобиться VPN для доступа к вашему сайту, если они окажутся в отпуске в этих странах. Вот этот инструмент: он эффективен и сократит на 80–90% ненужные запросы к вашему серверу. У вас есть два режима, и нужно выбрать один: разрешённые страны или запрещённые страны.

    GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux · GitHub

  3. Также можно использовать Geo Blocking plugin, но он блокирует только просмотр страниц, а не прямые запросы к вашему серверу, как это делает инструмент выше.

Что ж, думаю, это не решит мою проблему, поскольку боты всё равно будут потреблять пропускную способность CDN.

Вы абсолютно уверены в этом? Потому что если это правда, я сразу же настрою обратный прокси.

Редактирование

И ИИ здесь сказал то же самое. Значит, будет обратный прокси.

Ответ ИИ

Плагин GeoBlock для Discourse использует базу данных MaxMindDB для определения страны или сети (ASN) пользователя на основе его IP-адреса, но фактическая блокировка происходит на уровне приложения (внутри самого приложения Discourse), а не на уровне сервера или сети/фаервола.

На практике:

  • Если IP-адрес посетителя соответствует заблокированной стране или сети, приложение Discourse возвращает посетителю страницу с ошибкой вместо содержимого форума.
  • Блокировка не происходит до тех пор, пока HTTP-запрос не достигнет приложения Discourse. Иными словами, запросы всё ещё проходят через ваш веб-сервер (например, nginx) и контейнер Docker, достигая программного обеспечения Discourse, прежде чем пользователь будет заблокирован.
  • Это означает, что вы всё равно увидите эти запросы в логах вашего сервера и прокси/nginx, даже если пользователь в конечном итоге будет заблокирован системой Discourse.
  • Если вам требуется «жёсткая» блокировка (предотвращение доступа ещё до того, как запрос достигнет приложения Discourse), вам потребуется решение на уровне сервера с использованием GeoIP (например, блокировка на уровне nginx/iptables или использование внешнего инструмента).

Источники и дополнительная информация:

Резюме:
Плагин GeoBlock для Discourse не блокирует запросы на уровне сети/сервера, а только после того, как приложение Discourse обработает запрос. Если вам необходимо предотвратить любой доступ до того, как ваше приложение увидит запрос, вы должны использовать подход GeoIP на уровне сервера.

Я не использовал функцию «поделиться разговором», потому что задал вопрос на финском, а вы, вероятно, не сможете его прочитать :winking_face_with_tongue:

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

Инструмент, который я предложил, уже сокращает количество запросов на 80%, а Discourse — это безопасное приложение. Если же на вашем сервере размещены и другие вещи, например веб-сайт, обратный прокси может оказаться полезным. Тем временем существуют и другие решения для блокировки IP-адресов с плохой репутацией, например Crowdsec. Спросите у своего ИИ про Crowdsec Light :wink:

(здесь автор плагина геоблокировки)
Да, плагин геоблокировки останавливает запросы на уровне приложения, хотя и делает это на очень раннем этапе. Причина в том, что он разработан для отображения удобной для пользователя страницы ошибки, поэтому он должен иметь возможность загружать ресурсы Discourse и показывать эту страницу. Кроме того, он регистрирует все блокировки в /logs, если это настроено.

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

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