Vai al contenuto principale

User-Agent Client Hints e riduzione dello UA

I browser basati su Chromium inviano una stringa User-Agent ridotta: i dettagli che identificavano un dispositivo con maggiore precisione sono congelati su valori fissi, e i dati precisi sono passati agli User-Agent Client Hints (UA-CH), che un sito deve richiedere. Questa guida analizza una stringa legacy di Chrome su Android accanto a una ridotta.

Esempio pratico

Chrome su Android, stringa legacy (prima della riduzione)
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
Browser
Chrome 99.0.4844.88
Motore
Blink
Sistema operativo
Android 12
Classe dispositivo
Mobile
Dispositivo
Samsung SM-G991B
Architettura CPU
Sconosciuto
Bot / crawler
No
Chrome su Android, stringa ridotta
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
Browser
Chrome 120.0.0.0
Motore
Blink
Sistema operativo
Android 10
Classe dispositivo
Mobile
Dispositivo
K
Architettura CPU
Sconosciuto
Bot / crawler
No

La stringa legacy espone Android 12, il modello Samsung SM-G991B e la versione completa 99.0.4844.88. Nella stringa ridotta, Android 10 e il modello K sono segnaposto che ogni dispositivo Android invia, e la versione termina con .0.0.0. Il parser riporta esattamente ciò che dice la stringa — Android 10, modello K — quindi solo la versione principale 120 e il token Mobile portano ancora informazioni reali.

Client hints a bassa entropia che un browser Chromium invia per impostazione predefinita e un'intestazione di risposta Accept-CH che ne richiede altri
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

Regole principali

  • Le stringhe ridotte di Chrome conservano solo la versione principale; versione minore, build e patch sono sempre 0.0.0.
  • Su Android, la versione del SO è fissata a 10 e il modello del dispositivo è sostituito da K. Su desktop, la piattaforma è congelata su valori come Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7 o X11; Linux x86_64.
  • Su HTTPS, i browser Chromium inviano per impostazione predefinita tre client hints a bassa entropia: Sec-CH-UA (brand e versioni principali), Sec-CH-UA-Mobile e Sec-CH-UA-Platform.
  • Gli hints dettagliati come Sec-CH-UA-Platform-Version, Sec-CH-UA-Model e Sec-CH-UA-Full-Version-List vengono inviati solo dopo che il server li ha richiesti in un'intestazione di risposta Accept-CH. In JavaScript, usa navigator.userAgentData.getHighEntropyValues().
  • L'elenco dei brand include una voce “GREASE” volutamente falsa, come “Not_A Brand”. Cerca il brand che ti serve invece di confrontare l'intera intestazione.
  • Windows 11 invia ancora Windows NT 10.0 nella stringa User-Agent; un Sec-CH-UA-Platform-Version pari a 13.0.0 o superiore identifica Windows 11.
  • I client hints sono una funzionalità di Chromium, quindi mantieni un fallback basato su User-Agent per gli altri browser. Questo parser legge solo la stringa User-Agent, non i client hints.

Altre guide sugli user agent