User-Agent Client Hints: що прийшло на зміну рядку User-Agent
Роками рядок User-Agent повідомляв кожному сайту точну версію браузера, операційну систему, а часто й модель пристрою. Браузери на Chromium його урізали й перенесли ці деталі в User-Agent Client Hints: набір HTTP-заголовків і JavaScript API, які за замовчуванням розкривають менше, а більше лише на запит.
Перевірте свій браузер просто зараз
Перевіряю браузер…
Чому User-Agent урізали
Повний рядок User-Agent був готовим відбитком і надсилався з кожним запитом, потрібен він сайту чи ні. Chrome завершив скорочення у 2023 році: молодші номери версії тепер нулі, версія Windows завжди показується як Windows NT 10.0, а моделі Android-пристроїв приховані. Деталі не зникли, вони переїхали в Client Hints, де сайт має про них попросити.
Що надсилається за замовчуванням
Без запиту браузери на Chromium надсилають з кожним запитом три підказки з низькою ентропією:
- Sec-CH-UA: список брендів і старших версій, наприклад Google Chrome і Chromium.
- Sec-CH-UA-Mobile: ?1 на телефонах, ?0 в інших випадках.
- Sec-CH-UA-Platform: назва операційної системи, наприклад "Windows" чи "Android".
У списку брендів є ще навмисно дивний запис на кшталт "Not(A:Brand". Він змінюється між версіями, щоб сайти розбирали список як слід, а не шукали фіксовані рядки.
Детальні підказки
Більше деталей доступно на запит: точна версія платформи, архітектура й розрядність процесора, модель пристрою і повна версія кожного бренду. Сервер просить їх заголовком відповіді Accept-CH і отримує в наступних запитах; скрипт отримує їх через navigator.userAgentData.getHighEntropyValues(). Так, наприклад, надійно відрізняють Windows 11 від Windows 10: у Windows 11 версія платформи починається з 13.
Які браузери їх підтримують
Chrome, Edge, Opera, Brave та інші браузери на Chromium. Firefox і Safari Client Hints не реалізують, тож для них сайтам досі доводиться читати рядок User-Agent. Відсутність підказок для Firefox і Safari нормальна й нічого не каже про підробку.
Чому Client Hints допомагають помітити підробку
Ті самі факти тепер є в кількох місцях: заголовок User-Agent, заголовки Sec-CH-UA, navigator.userAgent і navigator.userAgentData на сторінці, а також ті самі значення всередині Web Worker. Справжній браузер тримає їх узгодженими. Інструменти підробки часто змінюють рядок User-Agent і забувають про підказки або змінюють значення в JavaScript, але не заголовки.
Перевірка SpoofLens порівнює все це: версію браузера в User-Agent і в Client Hints, платформу, яку називає кожне джерело, чи сходяться вони щодо мобільного пристрою, і чи збігається заголовок Sec-CH-UA-Platform із тим, що повідомляє JavaScript. Кожна розбіжність показується з поясненням.
Для власників сайтів
- Читайте Client Hints для браузерів на Chromium, а для решти використовуйте рядок User-Agent.
- Запитуйте лише ті детальні підказки, які справді використовуєте: кожна додає ідентифікаційних деталей.
- Не вважайте відсутність підказок у Firefox чи Safari підозрілою.
- Розбіжність між User-Agent і підказками вважайте сигналом ризику, а не доказом.
Часті запитання
- Чи можна побачити свої Client Hints?
- Так. Повна перевірка браузера SpoofLens показує Client Hints, які надіслав ваш браузер, поруч зі значеннями з JavaScript.
- Чи ускладнюють Client Hints відбитки?
- Трохи: за замовчуванням надсилається менше, а запит на більше видно. Але сайт, що просить усі детальні підказки, все одно отримує докладні дані.
- Рядок User-Agent зникне?
- Ні. Він і далі надсилається, лише з меншою деталізацією в браузерах на Chromium. Багато сайтів і інструментів досі на нього покладаються.