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
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
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.
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.