Мережа/HTTP

User-Agent Parser

Розібрати рядок User-Agent на браузер, рушій, операційну систему і тип пристрою.


                    

Рядок User-Agent, який браузер надсилає з кожним запитом, виглядає як хаотичний набір назв і версій через історичну звичку браузерів видавати себе за інші (наприклад, усі сучасні браузери містять "Mozilla/5.0"). Інструмент розбирає цей рядок на браузер, рушій, ОС і тип пристрою.

Як користуватися

Типові сценарії

Що варто памʼятати

User-Agent повністю контролюється клієнтом і легко підробляється — покладатися на нього для безпекових рішень не варто.

Через ініціативу User-Agent Reduction сучасні браузери дедалі частіше «заморожують» чи спрощують деталі про ОС і пристрій заради приватності — точність визначення поступово знижується.

Стаття про цей інструмент: User-Agent: чому цей рядок такий заплутаний

Часті запитання

Чому так багато рядків User-Agent згадують "Mozilla" навіть у Chrome чи Safari?

Це історичний артефакт — браузери продовжували додавати "Mozilla/5.0" до своїх рядків User-Agent для сумісності зі старими серверними перевірками, написаними для раннього Netscape Navigator, і ця конвенція так і не зникла.

Наскільки надійний розбір User-Agent для визначення реального браузера й ОС?

Достатньо надійний для типових випадків, але рядки User-Agent можна підробити, а деякі браузери тепер заморожують чи спрощують частини рядка заради приватності, тож точність виявлення не гарантована.

Чи надсилається рядок User-Agent, який я вставляю сюди, кудись?

Ні. Розбір відбувається повністю у вашому браузері — нічого не завантажується на сервер.

Що таке User-Agent Client Hints?

Сучасна альтернатива єдиному рядку User-Agent — набір окремих заголовків (Sec-CH-UA, Sec-CH-UA-Platform тощо), які сервер має явно запросити й отримує у структурованому вигляді, замість парсингу одного нагромадженого рядка.

Чому деякі браузери приховують точну версію ОС чи пристрою в User-Agent?

Це частина ініціативи "User-Agent Reduction" заради приватності — детальні відомості про версію ОС чи модель пристрою можуть використовуватися для унікальної ідентифікації (фінгерпринтингу) користувача, тож браузери поступово спрощують чи "заморожують" ці частини рядка.

Статті: Мережа/HTTP

Розбір URL: з яких частин складається веб-адреса

Чому в URL є частина після символу # , яку сервер навіть не отримує.

Query String проти JSON: чому GET-параметри такі обмежені

Чому передати масив або вкладений об'єкт через query string URL не так просто, як через JSON.

Basic Authentication: як найпростіший спосіб автентифікації працює в HTTP

Чому Basic Auth обов'язково потребує HTTPS, адже Base64 — це не шифрування, а лише кодування.

HTTP-заголовки: що приховано в кожному запиті й відповіді

Чому заголовок Content-Type визначає, як браузер інтерпретує тіло відповіді сервера.

Cookies: як невеликий шматок тексту зберігає стан сесії

Чому атрибут HttpOnly захищає cookie від крадіжки через шкідливий JavaScript-код.

CORS: чому браузер блокує "звичайні" запити до іншого домену

Чому помилка CORS виникає в браузері, а не на боці сервера, і хто насправді блокує запит.

Заголовки email: як простежити шлях листа від відправника до вас

Чому заголовки Received потрібно читати знизу вгору, щоб простежити шлях листа.