Preparati alla riduzione dello user agent di Chrome

Chrome continua a ridurre le informazioni condivise nella stringa user agent per contribuire a proteggere la privacy dell'utente.

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 allo user agent per rilevare la versione del sistema operativo, il modello di dispositivo Android o la versione dettagliata del browser di un visitatore, potrebbe essere necessario un intervento da parte tua. Continua a leggere per conoscere i dettagli.

Lo user-agent è una stringa che fornisce informazioni sul browser dell'utente e sull'ambiente, ad esempio sapere che un visitatore del tuo sito sta utilizzando Chrome versione 110 su Android. Il browser invia queste informazioni in un'intestazione HTTP e la rende disponibile tramite JavaScript.

Il problema con la stringa completa dello user agent è che condivide per impostazione predefinita informazioni dettagliate sul browser a ogni richiesta, il che è un fattore importante nel consentire il monitoraggio tra siti. Il nostro obiettivo è ridurre le opportunità di raccolta passiva di questi dati, fornendo al contempo API che consentano di accedere attivamente ai dati quando ne hai bisogno.

Riduzione dello user agent finora

Abbiamo già iniziato a rimuovere alcuni dati dello user agent disponibili per impostazione predefinita e a sostituirli con valori fissi.

Da Chrome 101 abbiamo sostituito il numero di versione secondario 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.

MacMacintosh; Intel Mac OS X 10_15_7
WindowsWindows NT 10.0; Win64; x64
ChromeOSX11: CrOS x86_64 14541.0.0
LinuxX11: Linux x86_64

Correzione della versione di Android e del modello del dispositivo a partire da Chrome 110

A partire da Chrome 110, introdurremo gradualmente un valore fisso per la versione di Android e il modello di dispositivo. Invece di visualizzare Android 13 su Pixel 7, il valore predefinito sarà sempre Android 10 su un modello K.

Prima: lo user agent include la versione di Android e il modello del dispositivo

Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, come Gecko) Chrome/95.0.0.0 per dispositivi mobili, Safari/537.36

Dopo: riduzione dello user agent con la versione di Android e il modello di dispositivo corretti

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 user agent

La riduzione dello user agent modifica i valori restituiti nello user agent, ma il formato rimane invariato. Se utilizzi lo user agent solo per leggere il tipo di sistema operativo o la versione principale del browser, i dati continueranno ad essere aggiornati come prima e non è richiesta alcuna azione da parte tua.

La piattaforma, il nome del browser, la versione principale del browser e le parti degli indicatori mobile della stringa dello user agent continuano ad aggiornarsi come prima.
Il tipo di sistema operativo, il modello di dispositivo e la versione secondaria del browser sono valori statici.
Tutte le altre parti della stringa user agent rimangono così come sono.

Alternative allo user agent

Se al momento utilizzi dati più dettagliati, è sempre consigliabile verificare se puoi invece utilizzare il miglioramento progressivo o il rilevamento delle funzionalità.

Ricorda sempre che lo 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 o da altri client o, semplicemente, non può essere inviato. Nella maggior parte dei casi, dovresti essere in grado di inviare contenuti funzionanti ai visitatori senza dati dello user agent.

Richiedi dati dettagliati con client hint dello user agent

Esistono molti motivi validi per accedere a dati dettagliati sugli user agent, ad esempio fornire contenuti specifici per i dispositivi, funzionalità antifrode o un logging dettagliato. Se hai bisogno di dati più dettagliati, puoi utilizzare l'API User-Agent Client Hints (UA-CH) per accedervi. Come lo user agent, UA-CH è disponibile tramite le intestazioni HTTP o JavaScript.

Potresti aver già visto le intestazioni predefinite inviate con il prefisso Sec-CH-UA-, che indica il browser, la versione principale, il sistema operativo e se il browser è un dispositivo mobile.

Intestazioni delle richieste dei client hint predefiniti dello user agent da 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 a Sec-CH-UA-Platform-Version e Sec-CH-UA-Model di recuperare quella versione di Android e quel tipo di dispositivo nelle richieste successive.

Intestazione della risposta del server che specifica la versione e il modello della piattaforma:

Accept-CH:
  Sec-CH-UA-Platform-Version,
  Sec-CH-UA-Model

Richiedi le intestazioni da Chrome, inclusi 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() sull'API userAgentData, passando un array dei valori che vuoi: platformVersion e model. Questo restituisce 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 iniziali o multiorigine

Se nella pagina sono presenti risorse multiorigine 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 che questi valori sensibili siano presenti nella prima richiesta di primo livello, puoi utilizzare l'intestazione HTTP Critical-CH che comunica al browser di riprovare la richiesta iniziale aggiungendo i suggerimenti aggiuntivi. Questa opzione può essere utile per i sistemi precedenti difficili da aggiornare, ma idealmente dovresti non fare affidamento su questi valori sensibili per pubblicare il codice HTML iniziale.

Scopri di più

Per vedere come funziona la stringa dello user agent ridotta, controlla quanto segue:

  • Visualizza la stringa dello user agent ridotta per il tuo dispositivo su goo.gle/reduced-ua-demo
  • Vedi tutti i client hint dello user agent per le intestazioni JavaScript e HTTP per il tuo dispositivo su goo.gle/ua-ch-demo
  • Invia la stringa ridotta dello user agent nel tuo browser attivando il flag di Chrome #reduce-user-agent.

Puoi anche registrarti alla prova dell'origine della riduzione dello user agent per ricevere lo user agent ridotto sul tuo sito, anche se termineremo questa prova all'inizio di marzo mentre continueremo ad aumentare l'invio dello user agent ridotto per impostazione predefinita.

Sono disponibili ulteriori risorse nella pagina di destinazione della riduzione dello user agent e puoi anche segnalare problemi nel nostro repository GitHub dedicato alla riduzione degli user-agent.