User-Agent Client Hints и сокращение UA
Браузеры на базе Chromium отправляют сокращённую строку User-Agent: детали, которые точнее всего идентифицировали устройство, заморожены на фиксированных значениях, а точные данные перенесены в User-Agent Client Hints (UA-CH), которые сайт должен запросить. В этом руководстве устаревшая строка Chrome на Android разбирается рядом с сокращённой.
Разобранный пример
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
- Браузер
- Chrome 99.0.4844.88
- Движок
- Blink
- Операционная система
- Android 12
- Класс устройства
- Мобильный
- Устройство
- Samsung SM-G991B
- Архитектура CPU
- Неизвестно
- Бот / краулер
- Нет
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
- Браузер
- Chrome 120.0.0.0
- Движок
- Blink
- Операционная система
- Android 10
- Класс устройства
- Мобильный
- Устройство
- K
- Архитектура CPU
- Неизвестно
- Бот / краулер
- Нет
Устаревшая строка раскрывает Android 12, модель Samsung SM-G991B и полную версию 99.0.4844.88. В сокращённой строке Android 10 и модель K — заглушки, которые отправляет любое устройство Android, а версия заканчивается на .0.0.0. Парсер сообщает ровно то, что написано в строке, — Android 10, модель K, — поэтому реальную информацию несут только основная версия 120 и токен Mobile.
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List
Основные правила
- В сокращённых строках Chrome остаётся только основная версия; минорная версия, сборка и патч всегда равны 0.0.0.
- На Android версия ОС зафиксирована на 10, а модель устройства заменена на K. На настольных системах платформа заморожена на значениях вроде Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7 или X11; Linux x86_64.
- По HTTPS браузеры на Chromium по умолчанию отправляют три низкоэнтропийные подсказки: Sec-CH-UA (бренды и основные версии), Sec-CH-UA-Mobile и Sec-CH-UA-Platform.
- Подробные подсказки, такие как Sec-CH-UA-Platform-Version, Sec-CH-UA-Model и Sec-CH-UA-Full-Version-List, отправляются только после того, как сервер запросит их в заголовке ответа Accept-CH. В JavaScript используйте navigator.userAgentData.getHighEntropyValues().
- Список брендов содержит намеренно поддельную запись «GREASE», например «Not_A Brand». Ищите нужный бренд, а не сравнивайте заголовок целиком.
- Windows 11 по-прежнему отправляет Windows NT 10.0 в строке User-Agent; Windows 11 определяется по значению Sec-CH-UA-Platform-Version 13.0.0 или выше.
- Client hints — функция Chromium, поэтому для других браузеров оставляйте запасной вариант на основе User-Agent. Этот парсер читает только строку User-Agent, а не client hints.