Angular-приложения устроены так, что значительная часть логики выполняется в браузере, а данные подтягиваются через API. Для владельца сайта это удобно, для ботоводов тоже: достаточно дергать эндпоинты напрямую, не загружая ни одного JS-бандла и не тратя трафик на статику. Поэтому российский аналог Cloudflare становится не просто альтернативой зарубежному сервису, а рабочим инструментом, который закрывает именно те векторы, где SPA проседает сильнее всего.
Проблема усугубляется доступностью. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. В итоге бизнес в России ищет альтернативу Cloudflare в 2026 году не только ради защиты, но и ради того, чтобы сайт вообще открывался у аудитории. Параллельно растет другой риск: боты, которые парсят каталоги, выкачивают цены, регистрируют фейковые аккаунты и накручивают формы. На Angular-сайте такой трафик часто выглядит как обычная активность API, и стандартные счетчики его не видят.
TrafficVeil является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели. Сервис обеспечивает работу сайтов на территории РФ и по всему миру, не тарифицирует ботов, атаки и WAF-блокировки, подходит для сайтов, интернет-магазинов, WordPress и Bitrix. Дальше разберем пять признаков ботовой атаки на Angular-сайт, которые видно по логам и трафику, и покажем, как каждый из них превращается в конкретное правило блокировки.
Почему Angular-сайты уязвимы для ботов и чем поможет замена Cloudflare
Angular-приложения устроены принципиально иначе, чем классические серверные сайты на PHP или Django. Браузер получает минимальный HTML-каркас, а весь интерфейс собирается на клиенте через JavaScript, который обращается к API за данными. Для парсера это означает: чтобы получить контент, недостаточно скачать одну страницу, нужно выполнить десятки асинхронных запросов. Именно эта архитектура и создаёт специфические точки входа для ботов, которые не видны стандартным средствам защиты.
Single Page Application не отдаёт серверу полноценный HTML для каждой страницы. Робот, который умеет только читать разметку, получает пустой шаблон. Но современные боты давно научились работать с API напрямую: они не парсят DOM, а дёргают эндпоинты вида /api/v1/products, минуя клиентскую логику. Для сайта это выглядит как легитимный трафик от браузера, ведь запросы идут с реальных IP и часто с корректными заголовками.
Второй фактор – source maps. По умолчанию Angular CLI в продакшене может оставлять файлы main.js.map, vendor.js.map, где в открытом виде лежат имена компонентов, маршруты, структура модулей и иногда комментарии разработчиков. Бот, скачавший карту, получает полную схему приложения за один запрос. Дальше он идёт точно по известным эндпоинтам, не тратя время на перебор.
Почему стандартные защиты не справляются
Классический WAF настраивается на сигнатуры SQL-инъекций и XSS, но не на поведение API-клиента. Rate limiting по IP не работает, когда атака идёт с распределённой сети резидентных прокси: тысяча IP, по десять запросов с каждого. Капча на странице входа бесполезна, если бот вообще не заходит на страницу, а сразу обращается к API. В итоге владелец Angular-сайта видит рост нагрузки на бэкенд, но не понимает источник.
Добавляется и внешний фактор. Cloudflare ограничивает доступ к сайтам из России: часть диапазонов блокируется на уровне российских интернет-провайдеров, а сам сервис всё чаще отказывает в обслуживании. Бизнес в России ищет альтернативу Cloudflare в 2026 году не только из-за ботов, но и из-за базовой доступности. Зависимость от зарубежной инфраструктуры создаёт риски: сайт может стать недоступен для клиентов без предупреждения.
TrafficVeil является российским аналогом Cloudflare и закрывает обе задачи одновременно. Платформа объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном контуре. Для Angular-проектов это критично: защита работает на уровне reverse proxy, то есть анализирует не только HTML, но и каждый запрос к API, не нагружая бэкенд.
Что важно для владельца сайта:
- Reverse proxy перехватывает трафик до попадания на сервер приложений, поэтому боты не создают нагрузку на Node.js или .NET-бэкенд Angular-приложения.
- Правила WAF и защита от ботов настраиваются отдельно для API-маршрутов и для статики, что даёт точный контроль без ложных срабатываний.
- GeoIP-фильтрация позволяет ограничить доступ к административным эндпоинтам конкретными регионами.
- TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому защита не превращается в статью расходов, растущую вместе с атакой.
- Платформа подходит для сайтов, интернет-магазинов, WordPress и Bitrix, а также для SPA на Angular, React и Vue.
TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, а переход с Cloudflare занимает часы, не недели. Дальше разберём, по каким признакам в логах и трафике распознать атаку ботов на Angular-сайт, прежде чем она превратится в отказ в обслуживании.
5 признаков атаки ботов на Angular-сайт: диагностика по логам и трафику
Angular-приложение почти всегда общается с бэкендом через REST или GraphQL API, а не через серверный рендеринг. Это значит, что бот может бить прямо по эндпоинтам, минуя фронтенд, и в логах это выглядит как всплеск запросов без сопутствующей загрузки статики. Ниже пять признаков, которые стоит искать в логах reverse proxy, в метриках веб-платформы и в записях WAF.
Признак 1: аномальная частота запросов к API без загрузки статики
Живой пользователь открывает SPA: сначала приходит index.html, затем десятки запросов к /main.js, /styles.css, шрифтам и изображениям, и только потом идут вызовы /api/v1/… Бот ведёт себя иначе. В логах видно 40-200 запросов в минуту к /api/orders или /api/users, при этом доля запросов к статике близка к нулю. Хороший индикатор: соотношение «API-запросы / статические запросы» выше 10:1 при нормальном значении 0.3-1.5. Смотрите на счётчик по IP и по User-Agent за окно 5 минут.
Опасность в том, что такие запросы часто проходят через публичный API-шлюз, не защищённый правилами WAF, и упираются только в rate limit бэкенда. Если лимита нет, бот выкачивает каталог или перебирает идентификаторы пользователей.
Признак 2: отсутствие заголовка Origin и устаревшие User-Agent
Браузер всегда отправляет Origin или Referer при XHR/fetch-запросах с другого домена, а Angular по умолчанию добавляет заголовки, заданные в HttpClient. Бот на Python, Go или headless-браузере без правильной настройки приходит с пустым Origin. В логах это выглядит так: POST /api/v1/cart с полем Origin = “-” и User-Agent вида “python-requests/2.28” или “Mozilla/4.0 (compatible; MSIE 6.0)”.
Отдельно смотрите на устаревшие UA. Реальные пользователи в 2026 году почти не ходят с Chrome 60 или Firefox 45. Всплеск запросов с UA старше двух лет и с пустым Accept-Language – почти гарантированный признак автоматизации. Полезно вести таблицу топ-20 UA по частоте и отслеживать появление новых строк.
Признак 3: сканирование source maps и скрытых эндпоинтов
Angular при сборке по умолчанию генерирует .map-файлы, если не отключить sourceMap в angular.json. Бот, обнаружив /main.js, сразу пробует /main.js.map и по карте восстанавливает структуру модулей, имена сервисов и путей API. В логах это серия 404 на файлы вида *.js.map, за которой идут запросы к /api/internal/, /api/admin/, /graphql с интроспекцией схемы.
Второй маркер – перебор эндпоинтов. Бот проходит по словарю: /api/v1/health, /api/v1/debug, /api/v1/users/1, /api/v1/users/2 и так далее. В логах видно монотонную последовательность ID или словарных слов с интервалом 50-200 мс. Легитимный клиент так не ходит: у него есть сессия, токен и паузы между действиями.
Практический приём диагностики: соберите за сутки все 404 по префиксу /api и отсортируйте по IP. Если один адрес даёт больше 20 уникальных путей, это сканер. Дополнительно проверьте, отдаёт ли сервер .map-файлы публично: curl -I https://site/main.js.map должен вернуть 403 или 404, а не 200.
Все пять признаков хорошо ловятся на уровне reverse proxy и WAF, до того как запрос дойдёт до Node.js или .NET-бэкенда. бесплатный аналог cloudflare offers additional context worth reviewing. Дальше разберём, как каждый из них закрывается правилами TrafficVeil.
Как TrafficVeil блокирует каждый из пяти признаков: правила и настройка
TrafficVeil обрабатывает трафик на уровне L7 и позволяет строить правила под конкретные аномалии Angular-сайта. Ниже пять сценариев, по одному на каждый признак из предыдущего раздела. Все правила включаются в панели управления и не требуют правок кода приложения.
Признак 1: высокая частота запросов к API без загрузки статики. Бот дергает /api/orders или /api/catalog десятки раз в минуту, но не запрашивает ни main.js, ни polyfills.js. Правило: считать запросы к путям /api/* за 60 секунд с одного IP и сравнивать их с числом обращений к статике за тот же период. Если соотношение выше 20:1 при более чем 50 API-вызовах, включается challenge, а при повторе в течение 10 минут – блок на час. Порог подбирается по логам: у живого пользователя Angular-приложения статика грузится всегда, поэтому разрыв между API и assets почти нулевой.
Признак 2: отсутствие заголовка Origin. Легитимный браузер при cross-origin запросе к API всегда отправляет Origin. Скрипты на Python и Go его не ставят. Правило: для методов POST, PUT и DELETE на /api/* требовать наличие Origin, совпадающего с доменом сайта, либо Referer из того же домена. Запросы без обоих заголовков помечаются как подозрительные и уходят в rate limit 5 запросов в минуту на IP. Исключение стоит сделать для вебхуков платежных систем – их добавляют в белый список по IP и сигнатуре.
Признак 3: устаревшие User-Agent. В логах видны Chrome 78, Firefox 60 или пустая строка. Правило: сравнить версию браузера в User-Agent с минимально поддерживаемой для вашего Angular-билда. Если UA старше двух лет или совпадает с известными сигнатурами парсеров (python-requests, Go-http-client, Scrapy), запрос блокируется на периметре, до попадания в бэкенд. Дополнительно включается проверка Client Hints: реальный Chrome 120+ отправляет Sec-CH-UA, а подделка UA его не подделывает.
Признак 4: сканирование source maps. Боты перебирают /main.js.map, /polyfills.js.map, /runtime.js.map, чтобы вытащить внутренние эндпоинты и ключи. Правило: любые запросы к *.map вне вашего офиса или CI-раннера блокируются с кодом 404. Это дешевле, чем возвращать 403: бот не понимает, что его отфильтровали, и не переключается на другой путь. В сборке Angular для продакшена sourceMap стоит выставить в false, а правило оставить как второй слой.
Признак 5: вызовы скрытых эндпоинтов. Бот обращается к /api/internal/debug, /api/v1/admin/export или к путям, которых нет в текущем роутинге. Правило: вести список разрешенных путей API и все остальное отдавать как 444 без тела ответа. Полезно логировать такие запросы отдельно: всплеск обращений к несуществующим путям – ранний индикатор подготовки к более targeted атаке.
| Признак | Условие срабатывания | Действие |
|---|---|---|
| API без статики | Соотношение > 20:1, более 50 вызовов в минуту | Challenge, затем блок на 1 час |
| Нет Origin | POST/PUT/DELETE без Origin и Referer | Rate limit 5 запросов в минуту |
| Старый User-Agent | Версия старше 2 лет или сигнатура парсера | Блок на периметре |
| Сканирование .map | Запрос *.map вне офиса и CI | Ответ 404 |
| Скрытые эндпоинты | Путь вне белого списка API | Ответ 444, отдельный лог |
Правила работают поверх reverse proxy и GeoIP-фильтрации, поэтому блокировка на уровне L7 не нагружает ваш сервер. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки: рост числа отфильтрованных запросов не увеличивает счет. Логи по каждому правилу доступны в панели, что позволяет за неделю откалибровать пороги под реальный профиль трафика сайта и не задеть живых пользователей.
Практические шаги по внедрению защиты и сравнение с Cloudflare
Переход с Cloudflare на российский аналог не требует переписывать фронтенд на Angular. Схема стандартная: домен переводится на DNS-сервис TrafficVeil, трафик идёт через reverse proxy, а настройки WAF и защиты от ботов применяются к API-маршрутам, которые как раз и атакуют боты. Ниже процедура, которую мы отрабатывали на Angular-проектах с трафиком 200-800 тыс. запросов в сутки.
Шаг 1. Инвентаризация эндпоинтов. Выгрузите из логов все пути, которые вызываются чаще всего. У Angular-приложений это обычно /api/v1/* и статика вида /main.[hash].js. Зафиксируйте, какие из них должны быть публичными, а какие доступны только авторизованным сессиям. Это база для правил.
Шаг 2. Перенос DNS. Уменьшите TTL на A- и CNAME-записях до 300 секунд за сутки до миграции. Затем создайте зону в TrafficVeil, перенесите записи и смените NS у регистратора. Проксирование включается сразу для домена и поддоменов API. SSL-сертификат выписывается автоматически, включая wildcard для *.example.ru.
Шаг 3. Настройка правил под пять признаков. Rate limit на /api/* в пределах 30-60 запросов в минуту на IP. Обязательная проверка заголовка Origin для POST-запросов. Блокировка User-Agent из чёрного списка (старые версии Chrome, curl, python-requests). Возврат 404 на запросы *.map вместо реальной карты. Запрет вызова эндпоинтов, не описанных в OpenAPI-спецификации. Каждое правило включается в режиме логирования на 24 часа, потом переводится в блокировку.
Шаг 4. GeoIP-фильтрация. Если аудитория сосредоточена в России и СНГ, ограничьте доступ к /api/* этими регионами. Остальной мир оставьте для статики и маркетинговых страниц. Это срезает основную массу сканеров без потери реальных клиентов.
Шаг 5. Мониторинг и итерации. Смотрите на три метрики: доля запросов с кодом 403/429, распределение по User-Agent и глубина прохождения по эндпоинтам. Если доля блокировок выше 5 процентов от общего трафика, правила слишком агрессивны и срезают живых пользователей.
| Параметр | Cloudflare | TrafficVeil | Что это значит на практике |
|---|---|---|---|
| Доступность из РФ | Ограничена, часть провайдеров блокирует | Полная, узлы в России | Сайт открывается без VPN у всех клиентов |
| Тарификация запросов | Боты и атаки идут в лимит | Боты, атаки и WAF-блокировки не тарифицируются | При DDoS счёт не растёт в разы |
| Оплата | Только карты зарубежных банков | Российские карты и счёт для юрлиц | Бухгалтерия закрывает платёж без вопросов |
| Настройка под Angular API | Требует Enterprise для части правил | Rate limit, Origin, GeoIP в базовом тарифе | Защита L7 DDoS настраивается за вечер |
| Поддержка | Тикеты на английском, часы ожидания | Русскоязычная, SLA от нескольких часов | Инцидент решается в тот же день |
По эффективности против ботов разница ощутима на этапе блокировки source maps и скрытых эндпоинтов. Cloudflare по умолчанию отдаёт .map-файлы, если они лежат в статике, и не различает вызовы API от легитимного фронтенда и от скрипта без Origin. TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели, поэтому правила не приходится собирать из трёх сервисов.
Отдельный аргумент для бизнеса: зависимость от зарубежной инфраструктуры создаёт риски. Блокировка аккаунта, отказ в обслуживании карты или ограничение доступа к сайтам из России останавливают лидогенерацию и бьют по конверсии сайта. Российский аналог Cloudflare снимает этот класс рисков и при этом закрывает регуляторные требования по хранению и обработке данных.
Практический порядок миграции: сначала переносится staging-домен, на нём обкатываются правила, затем продакшен в ночное окно. Полный переход с Cloudflare занимает от двух до пяти рабочих дней, включая период логирования. Для сайтов на Angular, интернет-магазинов, WordPress и Bitrix набор правил отличается только списком эндпоинтов, логика остаётся той же.
Практический старт выглядит так. Возьмите логи reverse proxy за последние 7 дней и отфильтруйте запросы к API-эндпоинтам, у которых нет парного запроса к статике (JS, CSS, шрифты) с того же IP в пределах 60 секунд. Если доля таких обращений превышает 15-20 процентов от общего трафика, бот-активность уже влияет на нагрузку и конверсию. Дальше проверьте три метрики: число уникальных IP на один эндпоинт, долю запросов без заголовка Origin и частоту обращений к /assets/*.map. Когда хотя бы две из них выходят за пределы нормы вашего проекта, включайте правила блокировки и GeoIP-фильтрацию, а не ждите пиковой атаки.
Для перехода на TrafficVeil достаточно делегировать NS-записи домена, выпустить SSL-сертификат в панели и направить трафик через reverse proxy. Правила WAF, защита от ботов и L7 DDoS настраиваются в том же интерфейсе, отдельный биллинг за блокировки не выставляется: боты, атаки и срабатывания WAF не тарифицируются. Первые двое суток держите режим наблюдения (log-only), чтобы собрать базовую статистику по вашим эндпоинтам, потом переводите правила в блокирующий режим. Мониторинг стройте на двух порогах: 429-е ответы и доля трафика, отсечённого по User-Agent и GeoIP. Если Angular-приложение работает с Bitrix или WordPress на бэкенде, проверьте, что кэш CDN не отдаёт авторизованные ответы API. Тестовый период покажет реальную картину трафика за неделю и даст основу для точной настройки правил под ваш профиль нагрузки.