User-Agent

User-Agent — HTTP-заголовок, которым клиент представляется серверу. Изначально задумывался чтобы сервер отдавал подходящую версию контента, но за 30 лет превратился в свалку токенов ради совместимости с говнокодом.

Пример

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
  (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36

Разбор

ТокенЗначит
Mozilla/5.0ритуал совместимости с Netscape (1998)
Windows NT 10.0ОС и версия ядра
Win64; x64архитектура
AppleWebKit/537.36движок (Chromium форкал WebKit)
KHTML, like Geckoсовместимость с Konqueror/Firefox
Chrome/125.0.0.0реально что за браузер
Safari/537.36ритуал совместимости

Почему такой цирк

1993 — Mosaic. 1994 — Netscape представился Mozilla/1.0. Сервера начали слать frames только тем кто "Mozilla". IE в 1996 приписал Mozilla/. Дальше — Safari скопировал у IE, Chrome у Safari, Edge у Chrome. Никто не смеет убрать токен — упадёт половина сайтов.

Разные браузеры

# Firefox
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0

# Safari iPhone
Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 
  (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1

# Edge
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
  (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0

# curl
curl/8.7.1

# Googlebot
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Для чего используется

User-Agent Client Hints

Google хочет заменить UA на структурированные Client Hints. Chrome шлёт компактный UA + отдельные заголовки:

Sec-CH-UA: "Chromium";v="125", "Not.A/Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
Sec-CH-UA-Full-Version-List: "Chromium";v="125.0.6422.60"
Sec-CH-UA-Arch: "x86"
Sec-CH-UA-Model: ""

Дедуплицированно, opt-in через Accept-CH. Safari/Firefox не хотят внедрять — приватность (можно снять модель устройства без разрешения).

UA-Reduction (Chrome)

С 2022 Chrome начал урезать UA — фиксированные значения ОС, minor-версии = 0.0.0. Меньше энтропии для трекеров. Полная информация — через Client Hints с явным запросом.

Как подделать

# curl
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..." https://...

# Chrome DevTools → Network conditions → User agent
# Firefox: about:config → general.useragent.override

Спуфинг = не хвид

UA легко меняется в любой прошивке браузера. Настоящая идентификация железа — HWID и device fingerprinting.

См. также

← на главную