User agent (UA) — это строка, которой браузер или любая другая программа представляется серверу в заголовке каждого запроса: название и версия браузера, движок, операционная система, иногда модель устройства. Фильтрация по user agent означает, что сервер читает эту строку и по ней решает, кого пускать, кому показать другую страницу, а кого отсечь как бота.
Метод простой и дешёвый, поэтому его до сих пор встречают в самописных скриптах и плагинах «антибот». Но строку пишет сам клиент, и подделать её проще, чем любой другой признак визита. Ниже — что именно лежит в UA, где этой строке можно доверять, где нельзя и как её использовать в паре с другими сигналами.
Что такое user agent и что в нём написано
Типичная строка мобильного Chrome на Android выглядит так:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36
Читать её проще по частям:
| Фрагмент | Что означает |
|---|---|
Mozilla/5.0 |
Исторический префикс совместимости, есть почти у всех браузеров и ничего не говорит |
(Linux; Android 10; K) |
Платформа и ОС; модель устройства в современных браузерах часто заменена заглушкой |
AppleWebKit/537.36 (KHTML, like Gecko) |
Движок отрисовки и ещё одна дань совместимости |
Chrome/130.0.0.0 |
Браузер и мажорная версия; младшие цифры давно обнуляются |
Mobile Safari/537.36 |
Признак мобильной вёрстки |
Из этой строки сервер обычно извлекает четыре вещи: тип устройства (смартфон, планшет, компьютер, телевизор), операционную систему, браузер и признак того, что перед ним не браузер вовсе, а программа или робот.
Заметьте: в строке почти нет уникальной информации. Миллионы телефонов присылают одинаковый UA — именно поэтому браузеры его и «заморозили», чтобы по нему было труднее отслеживать людей.
Client Hints: куда переезжают подробности
Браузеры на движке Chromium постепенно сокращают классическую строку, а подробности отдают через Client Hints — набор заголовков Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform и других. Часть из них приходит с каждым запросом, часть — только если сервер явно попросил. Для фильтрации это полезно двумя способами: подсказки сложнее сочинить правдоподобно с нуля, и их можно сверить с основной строкой. Браузер, который в UA называет себя Chrome на Windows, а в подсказках сообщает другую платформу, ведёт себя странно.
Ограничение тоже есть: Safari и Firefox поддерживают подсказки иначе или не поддерживают вовсе, поэтому отсутствие Client Hints само по себе не говорит ни о чём.
Как устроена фильтрация по user agent
В самом простом виде это список подстрок: если в UA есть одно из запрещённых слов, посетитель уходит на заглушку. Чуть сложнее — парсер, который раскладывает строку на браузер, ОС и устройство, и правила поверх результата: «пускать только смартфоны», «не пускать Smart TV», «только Android».
Здесь важно разделять две разные задачи:
- Таргетинг — отбор целевой аудитории: нужен ли этому офферу десктоп, подходит ли iOS. Строка UA тут работает нормально, потому что обычные люди её не подделывают, а ошибка стоит недорого.
- Защита от ботов — отсев автоматизации. Здесь UA почти бесполезен как самостоятельный признак: тот, кто пишет бота, первым делом подставляет строку настоящего браузера.
Подробнее про фильтры аудитории по устройству, ОС и браузеру — в статье про фильтр по гео и устройству. Дальше речь пойдёт о второй задаче.
User agent бота: кто называет себя честно
Часть автоматического трафика действительно представляется как есть. Это два разных класса.
Грубые скрипты и утилиты. Библиотеки для HTTP-запросов, консольные загрузчики, парсеры по умолчанию отправляют собственный UA — с названием библиотеки и версией — или не отправляют его совсем. Пустая строка UA или имя библиотеки вместо браузера — надёжный признак: живой человек из рекламы так не приходит. Такие визиты отсекаются сразу и почти без риска.
Поисковые краулеры и «вежливые» роботы. Поисковики, сервисы превью ссылок, мониторинги доступности обычно честно указывают своё имя и ссылку на описание. Для обычного сайта это полезные гости, и их не блокируют. Но и тут есть оговорка: строку известного поискового робота часто копируют парсеры, чтобы их пустили туда, куда пускают поисковик. Поэтому сами поисковые системы советуют проверять робота не по UA, а обратным DNS-запросом к IP-адресу: настоящий краулер приходит из сети своей компании.
Вывод: фильтр по UA хорошо ловит тех, кто не пытается прятаться. Это заметная доля мусорных запросов, и отсекать её дёшево. Но это не та часть бот-трафика, которая съедает рекламный бюджет.
Подмена user agent: почему фильтр только по UA слаб
Любая программа, которая хоть немного маскируется, отправляет строку свежего Chrome или Safari. Это делается одной строкой кода, а в браузере — переключателем в инструментах разработчика. Дальше возникают три проблемы.
Подделку не видно по самой строке. Корректный UA настоящего браузера и такой же UA в запросе скрипта выглядят байт в байт одинаково. Проверить строку саму на себя нельзя — только сверить с другими признаками.
Списки устаревают. Чёрный список подстрок требует постоянного обновления: появляются новые инструменты, старые меняют имена, а живые браузеры меняют формат строки. Список, который не обновляли полгода, ловит в основном то, что и так давно не приходит.
Ложные срабатывания на живых. Встроенные браузеры приложений, WebView, старые телефоны, корпоративные сборки браузеров присылают непривычные строки. Правило «подозрительно всё, что не похоже на стандартный Chrome» режет как раз мобильный трафик из соцсетей — тот, за который вы платите. Про особенности встроенных браузеров подробно написано в материале про in-app трафик и фрод.
Совет. Если правило по UA срабатывает на заметной части платного трафика, скорее всего, оно режет живых людей, а не ботов. Боты, ради которых стоит строить защиту, приходят с идеальной строкой.
Где фильтрация по user agent всё-таки полезна
Несмотря на всё сказанное, UA — нормальный и нужный признак, если знать его место.
- Отсев грубой автоматизации. Пустой UA, имя библиотеки, консольной утилиты или фреймворка для парсинга — это сразу «нет». Дешёвый слой, который снимает нагрузку с остальных проверок.
- Определение типа устройства для таргетинга и маршрутизации. Смартфон или компьютер, Android или iOS — для распределения трафика по офферам строки UA обычно достаточно.
- Распознавание встроенных браузеров. По UA видно, что визит пришёл из браузера внутри приложения. Это важно не для блокировки, а наоборот — чтобы не наказывать такой визит за признаки, которые в WebView бывают ложными.
- Сверка с другими признаками. UA говорит «iPhone», а экран, набор шрифтов и поведение скрипта — нет. Само расхождение и есть сигнал.
- Аналитика. Срезы по браузеру и ОС в отчётах показывают, где конверсия проседает и откуда идёт подозрительный всплеск.
Сочетание с другими признаками: UA как один голос из многих
Хорошая защита не задаёт вопрос «какой у визита UA», она спрашивает «сходится ли UA со всем остальным». Вот признаки, с которыми его обычно сверяют:
| Признак | С чем сверяют UA |
|---|---|
| IP-адрес и сеть | Мобильный браузер из сети хостинга — повод присмотреться; про это подробнее в статье о VPN, прокси и IP дата-центров |
| Заголовки запроса | Набор и порядок заголовков настоящего браузера отличается от набора библиотеки, даже если строка UA одинаковая |
| Client Hints | Платформа и бренд браузера в подсказках должны совпадать со строкой |
| Выполнение JavaScript | Браузер, который заявил себя современным Chrome, но не выполнил скрипт, ведёт себя не как браузер |
| Свойства браузера в скрипте | Платформа, экран, признаки автоматизации; подробно — в материале про headless-браузеры и отпечаток браузера |
| Поведение | Время на странице, движение мыши и касания |
Каждый признак по отдельности ошибается. Вместе они дают оценку, которая ошибается гораздо реже. Так устроен любой современный умный фильтр трафика: одиночный признак добавляет немного подозрения, а уверенный вывод получается из совпадения нескольких. Общую схему слоёв защиты мы разбирали в статье о том, как отфильтровать ботов.
Как это устроено в ArtisanClo
В ArtisanClo строка user agent — один из сигналов, а не отдельное правило «по списку». Решение по визиту складывается из нескольких шагов, и UA участвует в каждом по-своему.
Сеть и запрос. Первый шаг смотрит на адрес, сеть, провайдера, заголовки, метку клика и правила потока — ещё до проверки браузера. Здесь отсекаются программы вместо браузера и роботы площадок для превью ссылок: такие визиты получают White Page всегда, при любых настройках, а в журнале видна причина «Программа, а не браузер» или «Превью-бот / краулер». Живых людей этот шаг задевает меньше всего.
Аудитории. В настройках фильтрации потока есть списки «Устройства», «Операционные системы» и «Браузеры» с кнопками «Разрешить» и «Заблокировать». Среди устройств отдельно выделены «Бот / краулер» и «Не определено». Это таргетинг: посетитель, не прошедший список, видит White Page с понятной причиной.
Проверка браузера. Тот, кто прислал строку настоящего браузера, проходит проверку скриптом, и уже её ответ показывает, похож ли визит на автоматизацию. Блокировка headless-браузеров при явных следах автоматизации отсекает сразу, менее явные признаки уходят в оценку доверия вместе с сетью, VPN, наличием провайдера и сайта-источника.
Встроенные браузеры. Встроенные браузеры Facebook, Instagram, TikTok и WebView в приложениях распознаются отдельно. Признак автоматизации у них не отсекает визит сразу, а учитывается в оценке доверия вместе с сетью, временем и реферером, потому что в таких браузерах он часто ложный.
Прозрачность. У каждого клика в журнале есть причина решения из десятков возможных, а ссылка «Разбор визита» показывает все сигналы и выводы по одному визиту. Если вы подозреваете, что фильтр ошибся, начните со статьи почему клик ушёл на White Page. Все возможности фильтрации собраны на странице возможностей.
Типичные ошибки при фильтрации по user agent
- Строить защиту на чёрном списке подстрок. Он ловит только тех, кто не прячется, и требует бесконечного обновления.
- Блокировать всё «нестандартное». Под удар попадают встроенные браузеры соцсетей и старые устройства — живой платный трафик.
- Верить строке, которая выглядит правильно. Идеальный UA современного браузера — это как раз то, что присылает хорошо сделанный бот.
- Путать таргетинг с защитой. Отбор «только Android» — это решение про аудиторию оффера, а не способ избавиться от ботов.
- Не смотреть на причины отсева. Если не видно, какое правило сработало, нельзя понять, режет ли фильтр ботов или людей. Признаки, по которым бот-трафик видно в отчётах, собраны в статье про признаки бот-трафика.
Итог
Строка user agent — это то, что клиент говорит о себе сам. Ей можно верить, когда ставки низкие: для определения устройства, распределения трафика, аналитики. Ей нельзя верить как доказательству, что перед вами человек. Фильтрация по user agent хорошо снимает грубые скрипты и пустые запросы, но настоящая защита начинается там, где UA сверяют с сетью, заголовками, Client Hints, выполнением скрипта и поведением. Тогда подделанная строка не помогает боту, а непривычная строка не вредит живому посетителю.



