Preparati alla riduzione dello user agent di Chrome

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

A partire da Chrome 110 (febbraio 2023) stiamo introducendo 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 necessaria un'azione da parte tua. Continua a leggere per conoscere i dettagli.

Lo user-agent è una stringa che fornisce informazioni sul browser dell'utente e sul suo ambiente, ad esempio sapere che un visitatore del tuo sito utilizza la versione 110 di Chrome 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 informazioni dettagliate sul browser per impostazione predefinita su 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 per consentirti 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.

A partire da Chrome 101 abbiamo sostituito il numero di versione secondaria con zero, ad esempio Chrome/101.3.2.1 è diventato Chrome/101.0.0.0.

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

Versione di Android e modello del dispositivo corretti a partire da Chrome 110

A partire da Chrome 110, introdurremo gradualmente un valore fisso per la versione Android e il modello di dispositivo. Anziché vedere qualcosa come 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 mobile, Safari/537.36

Dopo: user agent ridotto con versione di Android e 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 dello user agent

La riduzione dello user-agent modifica i valori restituiti nello user-agent, ma il formato rimane invariato. Se usi 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 dovrai fare nulla.

Le parti della piattaforma, del nome del browser, della versione principale del browser e dell'indicatore dei dispositivi mobili nella stringa dello user agent continuano a essere aggiornati 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 invariate.

Alternative allo user agent

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

Ricorda sempre che lo user-agent è uguale a 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 oppure potrebbe non essere inviato affatto. Nella maggior parte dei casi, dovresti essere in grado di pubblicare contenuti funzionanti ai visitatori senza dati dello user agent.

Richiedi dati dettagliati con Client hint user agent

Esistono molti motivi validi per accedere a dati dettagliati degli user agent, ad esempio la fornitura di contenuti specifici per il dispositivo, funzionalità antifrode o logging granulare. 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 intestazioni HTTP o JavaScript.

Probabilmente hai 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 User-Agent Client Hints predefinite 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 dal 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 e il nome del modello Android:

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 preferisci: 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 tua pagina sono presenti risorse multiorigine che hanno bisogno di questi valori, puoi consentire l'accesso tramite l'intestazione HTTP Permissions-Policy o utilizzando il meta tag Delegate-CH nel codice HTML.

Se è necessario che il tuo sito abbia questi valori sensibili nella prima richiesta di primo livello, puoi utilizzare l'intestazione HTTP Critical-CH che indicherà al browser di riprovare la richiesta iniziale aggiungendo i suggerimenti aggiuntivi. Questo 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 come funziona la stringa user agent ridotta, controlla quanto segue:

  • Consulta la stringa dello user agent ridotta per il tuo dispositivo alla pagina goo.gle/reduced-ua-demo
  • Consulta tutti i client hint user agent per il tuo dispositivo dell'intestazione JavaScript e HTTP 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 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 man mano che continuiamo ad aumentare l'invio dello user agent ridotto per impostazione predefinita.

Sono disponibili altre risorse nella pagina di destinazione per la riduzione dello user-agent e puoi anche segnalare problemi nel nostro repository GitHub di riduzione user-agent-riduzione.