Ответ
Сервер определяет клиентское окружение (браузер, ОС, устройство) через HTTP-заголовок User-Agent, который браузер отправляет в каждом запросе.
Структура заголовка User-Agent:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Mozilla/5.0— исторический токен совместимости.(Windows NT 10.0; Win64; x64)— информация об операционной системе.AppleWebKit/537.36— движок рендеринга.(KHTML, like Gecko)— токены для совместимости.Chrome/91.0.4472.124— браузер и его версия.Safari/537.36— указание на совместимость с Safari.
Обработка на сервере (Node.js с Express):
const express = require('express');
const app = express();
const useragent = require('express-useragent'); // Библиотека для парсинга
app.use(useragent.express());
app.get('/', (req, res) => {
const ua = req.useragent;
res.send(`
Браузер: ${ua.browser} (v${ua.version})
Платформа: ${ua.platform}
ОС: ${ua.os}
Это мобильное устройство? ${ua.isMobile}
`);
});
app.listen(3000);
Важные ограничения и best practices:
- Ненадёжность: Заголовок
User-Agentлегко подделать (например, через настройки браузера или библиотеки вродеrequestsв Python). - User-Agent Reduction: Современные браузеры (Chrome, Firefox) постепенно сокращают информацию в
User-Agentдля защиты приватности. Для точного определения устройств теперь рекомендуется использовать Client Hints API. - Использование: Чаще всего
User-Agentприменяется для:- Сбора аналитики и метрик.
- Обслуживания разных версий контента (например, мобильная vs десктопная версия сайта).
- Логирования и отладки.