Какие User-Agent пропускать на сайт, а какие блокировать: полное руководство для веб-разработчиков и админов
В 2025 году трафик на сайты стал ещё более разнообразным: миллиарды устройств, тысячи браузеров, миллионы ботов. User-Agent (UA) — это строка, которую браузер отправляет серверу в HTTP-заголовке, рассказывая о себе: ОС, версия браузера, устройство. Но не все UA одинаково полезны. Некоторые — реальные пользователи, которых нужно пускать и радовать. Другие — боты, сканеры уязвимостей или фрод, которых лучше блокировать сразу.
В этой статье разберём по полочкам: как анализировать UA, какие пропускать, какие блокировать, как выявлять подделки и почему это важно для безопасности, производительности и SEO. Приведу реальные примеры из логов 2025 года.
Почему User-Agent вообще важен?
- Безопасность: старые браузеры — дыры для RCE-эксплойтов.
- Производительность: древние устройства не тянут тяжёлый JS.
- SEO: Google штрафует за уязвимый контент и плохой Core Web Vitals.
- Фрод: 40% кликфрода идёт со старых Android-устройств (данные Cloudflare 2025).
- Статистика: в рунете 70% мобильного трафика — устройства 2019–2022 годов.
Блокировать всех подряд нельзя — потеряете аудиторию. Нужно умный фильтр.
Как правильно разбирать User-Agent
UA состоит из частей:
Mozilla/5.0 (ОС; архитектура; версия Android; модель) AppleWebKit/xxx (KHTML, like Gecko) Браузер/версия Доп.инфо
Ключевые маркеры:
- Версия ядра (Chrome/XXX, Firefox/XXX, Version/4.0).
- Флаги: wv — WebView (часто старый), SA/3 — Lite.
- Модель устройства — если указана точно (Redmi Note 8T), скорее реальный.
- Локаль (ru-ru) — подсказка о регионе.
Инструменты для анализа:
- Библиотеки: ua-parser-js, uap-python.
- Онлайн: whatismybrowser.com, useragentstring.com.
Реальные пользователи: кого пускать без вопросов
Это 95% вашего трафика. Признаки:
- Актуальное ядро ≥ Chrome 110 / Firefox 115 / Safari 16.
- ОС не старше 3 лет (Android ≥ 11, iOS ≥ 15, Windows ≥ 10).
- Устройство тянет современный веб (≥ 4 ГБ ОЗУ).
Примеры хороших UA (пускать!):
- Яндекс Браузер Lite на Mi 10T Lite
Mozilla/5.0 (Linux; arm_64; Android 13; M2101K6G) AppleWebKit/537.36 ... Chrome/116.0.5845.80 YaBrowser/23.9.2.80.00 SA/3 ...Android 13, Chromium 116 (ещё живой), реальное устройство. 15% трафика в рунете.
- Chrome на Mi Note 10 Lite
Mozilla/5.0 (Linux; arm_64; Android 12; Mi Note 10 Lite) ... Chrome/114.0.4785.103 ...Android 12 (патчи до октября 2025), полноценный Chrome. Премиум-середнячок.
- Chrome на Redmi Note 8T с MIUI-браузером
Mozilla/5.0 (Linux; U; Android 10; ru-ru; Redmi Note 8T ...) Chrome/116.0.0.0 ... MiuiBrowser/12.13.0-gnДа, Android 10 старый, но ядро 116 — максимум для этого телефона. 2,5% трафика в СНГ.
Такие юзеры — ваша основная аудитория. Оптимизируйте под них: WebP/AVIF, lazy-load, < 1 МБ бандл.
Устаревшие User-Agent: мягко предупреждать или блокировать
Это устройства 5+ лет. Проблемы:
- Дыры в безопасности.
- Тормоза на современном JS.
- Часто источники фрода (Африка, ЮВА).
Примеры плохих UA (блокировать с предупреждением):
- VivoBrowser на Vivo Y15
Mozilla/5.0 (Linux; Android 11; vivo 1906; wv) ... Chrome/87.0.4280.141 ... VivoBrowser/8.9.0.0Ядро 87 (2020 год!). 4 года без патчей. 3% трафика из Индонезии — 70% фрод.
- Chrome 94 на TECNO Spark 8
Mozilla/5.0 (Linux; Android 11; TECNO KG5n) ... Chrome/94.0.4606.85 ...2 ГБ ОЗУ, Helio P22, ядро 2021 года. Главный источник кликфрода в Африке.
- Firefox 108 на Windows 7
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0ОС без патчей 5 лет, браузер — 2 года. Офисы в СНГ.
Рекомендация: показывать баннер "Обновите браузер" или редирект на статичную версию.
Поддельные User-Agent: 100% блокировать без разговоров
Боты подделывают UA, чтобы обойти защиту. Признаки подделки:
- Несоответствие: старое ядро + новая модель.
- Пустые/общие строки: "Mozilla/5.0" без деталей.
- Редкие комбинации: Firefox 4 на Windows 7.
- Массовые сканеры: меняют UA, но IP один.
Примеры поддельных UA (блокировать сразу):
- Древний Firefox — классика сканеров
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0Firefox 4.0 — 2011 год! 99,9% таких — ZMap, Masscan, старые эксплойт-паки. Легитимных пользователей 0 с 2014 года.
- Пустой или generic
Mozilla/5.0Или
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)Но приходит не с IP Google — подделка.
- Несоответствие версий
Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 ... Chrome/89.0...Pixel 8 на Android 14 не может иметь Chrome 89 (2021). Это бот притворяется новым устройством.
Как используются подделки:
- Сканеры уязвимостей: ищут SQLi, XSS, отправляя старые UA.
- Кликфрод/спам: имитируют пользователей из бедных стран.
- Парсеры: Scrapy/Yandex.Tank подделывают UA для обхода rate-limit.
- DDoS: инструменты типа MHDDOS меняют UA каждые 10 запросов.
Правила блокировки: готовый чек-лист
Пускать (зелёный список):
- Chromium ≥ 110
- Android ≥ 11 + не WebView
- iOS ≥ 15
- Windows 10+ / macOS 12+
- Яндекс/Chrome/Edge/Firefox актуальные
Предупреждать (жёлтый):
- Chromium 100–109
- Android 10–11 с wv
- Windows 10 + старый Edge
Блокировать (красный):
- Chromium < 100
- Firefox < 115 ESR
- Vivo/Oppo/Realme Browser
- Windows 7/8 (NT 6.x)
- Любые UA старше 2018 года
- Подозрительные комбинации (проверка через ua-parser)
Код для блокировки
Nginx:
if ($http_user_agent ~* "(Chrome/[0-9][0-9]\.|Chrome/10[0-3]\.|VivoBrowser|Firefox/[0-9]\.|Windows NT 6\.)") {
return 403;
}
JS на клиенте:
if (/Chrome\/9[0-9]\./.test(navigator.userAgent) || /wv/.test(navigator.userAgent)) {
location.href = '/update-browser.html';
}
Заключение: безопасность важнее 5% трафика
В 2025 году блокировать старые/поддельные UA — не прихоть, а необходимость. Вы защищаете не только сайт, но и пользователей от drive-by атак. Потеряете 3–7% "зомби-трафика" из Африки/ЮВА — получите +15% к производительности и меньше жалоб в поддержку.
Начинайте с логов: соберите топ-100 UA за месяц, разберите через ua-parser, настройте WAF (Cloudflare, Fastly). И помните: хороший сайт — это сайт, который работает для живых людей, а не для ботов из 2011 года.
Если у вас есть свои примеры UA — кидайте в комментарии, разберём вместе!