Chrome continua a ridurre le informazioni condivise nella stringa user-agent per contribuire a proteggere la privacy degli utenti.
A partire da Chrome 110 (febbraio 2023), introdurremo gradualmente un valore fisso per la versione di Android e il modello di dispositivo: il valore predefinito sarà sempre Android 10
su un modello K
.
Se ti affidi all'user-agent per rilevare la versione del sistema operativo, il modello di dispositivo Android o la versione dettagliata del browser di un visitatore, potresti dover intervenire. Continua a leggere per maggiori dettagli.
Lo user-agent è una stringa che fornisce informazioni sul browser e sull'ambiente dell'utente, ad esempio sapere che un visitatore del tuo sito utilizza Chrome versione 110 su Android. Il browser lo invia in un'intestazione HTTP e lo rende disponibile tramite JavaScript.
Il problema con la stringa completa dello user agent è che condivide informazioni dettagliate sul browser per impostazione predefinita in ogni richiesta, il che è un fattore importante per consentire il monitoraggio tra siti. Il nostro obiettivo è ridurre le opportunità di raccolta passiva di questi dati, fornendo al contempo API che ti consentano di accedere attivamente ai dati quando ne hai bisogno.
Riduzione degli user agent finora
Abbiamo già iniziato a rimuovere alcuni dei dati dell'agente utente disponibili per impostazione predefinita e a sostituirli con valori fissi.
A partire da Chrome 101, abbiamo sostituito il numero della versione secondaria con zeri, ad esempio Chrome/101.3.2.1 è diventato Chrome/101.0.0.0.
A partire da Chrome 107, abbiamo sostituito la versione del sistema operativo desktop e le informazioni sulla CPU con un valore fisso per la piattaforma.
Mac | ➡ | Macintosh; Intel Mac OS X 10_15_7 |
Windows | ➡ | Windows NT 10.0; Win64; x64 |
ChromeOS | ➡ | X11; CrOS x86_64 14541.0.0 |
Linux | ➡ | X11; Linux x86_64 |
Versione di Android e modello di dispositivo corretti a partire da Chrome 110
A partire da Chrome 110, stiamo introducendo gradualmente un valore fisso per la versione di Android e il modello di dispositivo.
Invece di vedere qualcosa come Android 13
su Pixel 7
, il valore predefinito sarà sempre Android 10
su un modello K
.
Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, come Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, come Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
Nessuna modifica al formato dello user agent
La riduzione dell'user-agent modifica i valori restituiti nell'user-agent, ma il formato rimane invariato. Se utilizzi l'user-agent solo per leggere il tipo di sistema operativo o la versione principale del browser, questi dati continueranno a essere aggiornati come prima e non dovrai intraprendere alcuna azione.

Alternative allo user-agent
Se al momento utilizzi i dati più dettagliati, è sempre consigliabile verificare se puoi utilizzare il miglioramento progressivo o il rilevamento delle funzionalità.
Ricorda sempre che l'user-agent è come qualsiasi altro valore fornito dall'utente: devi convalidarlo e non dare per scontato che sia accurato. Il valore dello user-agent può essere facilmente modificato dall'utente, dalle estensioni, da altri client o semplicemente non essere inviato. Nella maggior parte dei casi, dovresti essere in grado di pubblicare contenuti funzionanti per i visitatori senza dati degli user agent.
Richiedere dati dettagliati con User-Agent client hints
Esistono molti motivi validi per accedere a dati dettagliati dell'agente utente, ad esempio per fornire contenuti specifici per il dispositivo, funzionalità antifrode o registrazione granulare. Se hai bisogno di dati più dettagliati, puoi utilizzare l'API Client hint User-Agent (UA-CH) per accedervi. Come lo user-agent, UA-CH è disponibile tramite intestazioni HTTP o JavaScript.
Potresti aver già visto le intestazioni predefinite inviate con il prefisso Sec-CH-UA-
che indicano il browser, la relativa versione principale, il sistema operativo e se il browser è un dispositivo mobile.
⏫ Intestazioni delle richieste dei client hint dello user agent predefinite di Chrome:
Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"
Puoi utilizzare l'intestazione Accept-CH
nella risposta per richiedere ulteriori dati.
In questo caso, puoi chiedere Sec-CH-UA-Platform-Version
e Sec-CH-UA-Model
per recuperare la versione di Android e il tipo di dispositivo nelle richieste successive.
⏬ Intestazione della risposta del server che specifica la versione della piattaforma e il modello:
Accept-CH:
Sec-CH-UA-Platform-Version,
Sec-CH-UA-Model
⏫ Invia nuovamente gli intestazioni di richiesta da Chrome, inclusa la versione di Android e il nome del modello:
Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"
Puoi fare la stessa cosa in JavaScript chiamando getHighEntropyValues()
nell'API userAgentData
, passando un array dei valori che ti interessano: platformVersion
e model
.
Viene restituita una promessa con un oggetto contenente i valori specifici.
navigator.userAgentData
.getHighEntropyValues(
['platformVersion', 'model']
).then(ua => { console.log(ua)
});
{
"platformVersion": "13.0.0",
"model": "Pixel 7"
}
Richieste cross-origin o iniziali
Se nella tua pagina sono presenti risorse cross-origin che richiedono questi valori, puoi consentire l'accesso tramite l'intestazione HTTP Permissions-Policy
o utilizzando il meta tag Delegate-CH
nel codice HTML.
Se per il tuo sito è necessario avere questi valori sensibili nella primissima richiesta di primo livello, puoi utilizzare l'intestazione HTTP Critical-CH
che indica al browser di riprovare la richiesta iniziale con i suggerimenti aggiuntivi aggiunti.
Questa operazione può essere utile per i sistemi precedenti difficili da aggiornare, ma idealmente non dovresti fare affidamento su questi valori sensibili per pubblicare il codice HTML iniziale.
Scopri di più
Per vedere la stringa dello user agent ridotta in azione, dai un'occhiata a quanto segue:
- Visualizza la stringa user-agent ridotta per il tuo dispositivo all'indirizzo goo.gle/reduced-ua-demo
- Visualizza tutti i Client Hints relativi allo user agent dell'intestazione HTTP e JavaScript per il tuo dispositivo all'indirizzo goo.gle/ua-ch-demo
- Invia la stringa dello user-agent ridotta nel tuo browser attivando il flag di Chrome
#reduce-user-agent
.
Puoi anche registrarti per la prova dell'origine di riduzione dello user agent per ricevere lo user agent ridotto sul tuo sito, anche se termineremo questa prova all'inizio di marzo man mano che continuiamo ad aumentare l'invio dello user agent ridotto per impostazione predefinita.
Puoi trovare altre risorse nella pagina di destinazione della riduzione dell'intestazione user-agent e puoi anche segnalare i problemi nel nostro repository GitHub dedicato alla riduzione dell'intestazione user-agent.