Фильтрация по user agent: что такое UA и почему его мало для защиты от ботов

Фильтрация по user agent — самый старый способ отсечь ботов: сервер читает строку, которой браузер представляется, и решает по ней. Разбираем, что в этой строке есть, где ей можно верить и почему одного UA для защиты рекламного трафика не хватает.

Боты и фрод9 мин чтения
Фильтрация по user agent: что такое UA и почему его мало для защиты от ботов
Содержание
  1. Что такое user agent и что в нём написано
  2. Как устроена фильтрация по user agent
  3. User agent бота: кто называет себя честно
  4. Подмена user agent: почему фильтр только по UA слаб
  5. Где фильтрация по user agent всё-таки полезна
  6. Сочетание с другими признаками: UA как один голос из многих
  7. Как это устроено в ArtisanClo
  8. Типичные ошибки при фильтрации по user agent
  9. Итог

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».

Здесь важно разделять две разные задачи:

  1. Таргетинг — отбор целевой аудитории: нужен ли этому офферу десктоп, подходит ли iOS. Строка UA тут работает нормально, потому что обычные люди её не подделывают, а ошибка стоит недорого.
  2. Защита от ботов — отсев автоматизации. Здесь 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

  1. Строить защиту на чёрном списке подстрок. Он ловит только тех, кто не прячется, и требует бесконечного обновления.
  2. Блокировать всё «нестандартное». Под удар попадают встроенные браузеры соцсетей и старые устройства — живой платный трафик.
  3. Верить строке, которая выглядит правильно. Идеальный UA современного браузера — это как раз то, что присылает хорошо сделанный бот.
  4. Путать таргетинг с защитой. Отбор «только Android» — это решение про аудиторию оффера, а не способ избавиться от ботов.
  5. Не смотреть на причины отсева. Если не видно, какое правило сработало, нельзя понять, режет ли фильтр ботов или людей. Признаки, по которым бот-трафик видно в отчётах, собраны в статье про признаки бот-трафика.

Итог

Строка user agent — это то, что клиент говорит о себе сам. Ей можно верить, когда ставки низкие: для определения устройства, распределения трафика, аналитики. Ей нельзя верить как доказательству, что перед вами человек. Фильтрация по user agent хорошо снимает грубые скрипты и пустые запросы, но настоящая защита начинается там, где UA сверяют с сетью, заголовками, Client Hints, выполнением скрипта и поведением. Тогда подделанная строка не помогает боту, а непривычная строка не вредит живому посетителю.

Частые вопросы

01

Что такое user agent простыми словами?

Это короткая текстовая визитка, которую браузер или программа отправляет серверу с каждым запросом. В ней указано, что это за программа, какой версии и на какой системе работает. Сервер по ней подбирает вёрстку, считает статистику и иногда решает, пускать ли посетителя.

02

Можно ли подделать user agent?

Да, и очень легко. В любой библиотеке для HTTP-запросов это одна строка настройки, в браузере — пункт инструментов разработчика или расширение. Поэтому совпадение UA с обычным Chrome ничего не доказывает, а вот явное несоответствие UA и остальных признаков визита — уже весомый сигнал.

03

Как узнать свой user agent?

Проще всего открыть консоль разработчика в браузере и выполнить navigator.userAgent — строка выведется целиком. Ещё её видно во вкладке сети в заголовках любого запроса. Многие сайты-проверки тоже показывают её, но для работы хватает встроенных средств браузера.

04

Почему поисковых роботов не блокируют по user agent?

Для обычного сайта поисковые роботы полезны: без них страница не попадёт в выдачу. К тому же их UA часто подделывают, поэтому сами поисковики советуют проверять робота не по строке, а по обратному DNS-запросу к его IP-адресу. Блокировать или пускать их — решение владельца сайта, а не задача рекламного фильтра.

05

Заменят ли Client Hints строку user agent?

Частично. Браузеры на движке Chromium уже сокращают классическую строку и переносят подробности в заголовки Sec-CH-UA, причём часть из них сервер получает только по запросу. Другие браузеры поддерживают их не полностью, поэтому на практике сайты читают оба источника и сверяют их между собой.

Читать также

8 мин чтения

Фильтрация по гео, языку, устройству и расписанию: точный таргетинг на своей стороне

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

9 мин чтения

Как отфильтровать ботов в рекламном трафике и не потерять живых людей

Фильтрация ботов — это не одна галочка «антибот», а цепочка проверок от IP-адреса до поведения в браузере. Разбираем, как её выстроить, чтобы бюджет уходил на людей.

9 мин чтения

Умный фильтр трафика: как устроена система обнаружения ботов

Умный фильтр трафика не просто проверяет визит по списку правил, а взвешивает десятки признаков, учится на истории и подстраивается под ваш трафик. Разбираем, что за этим стоит, где он ошибается и как контролировать его решения.

Проверьте свой трафик на деле

Подключите ArtisanClo к своему сайту, посмотрите, кто на самом деле приходит по рекламе, и почему каждый клик получил своё решение.