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, виконанням скрипта й поведінкою. Тоді підроблений рядок не допомагає боту, а незвичний рядок не шкодить живому відвідувачу.



