La stringa chiamata User Agent è un dato che è normalmente restituito, ancora oggi, non solo da qualunque browser Web ma anche da qualsiasi componente software che integra funzionalità per la navigazione online, la scansione o l’analisi delle pagine Web. La stringa User Agent ha svolto per anni un ruolo fondamentale per tutte quelle applicazioni Web che hanno adattato il loro funzionamento ai singoli client usati dagli utenti. Da quando si è iniziato a parlare di siti responsive, capaci di adattarsi al client, la stringa User Agent è rimasta in uso soltanto per esigenze specifiche.
Combinato con altre informazioni, può essere utilizzato per identificare e tracciare un utente sul Web anche se, a onor del vero, lo User Agent è forse diventato il dato meno attendibile. Come ha spiegato bene Fingerprint Pro (ex FingerprintJS), infatti, gli utenti online son riconoscibili univocamente usando ben altri segnali e non certo per via di un User Agent o di un semplice cookie.
L’azienda mostra come sia possibile riconoscere uno stesso dispositivo anche quando viene attivata la modalità di navigazione in incognito e in alcuni casi cambiando addirittura browser Web avviandone un altro installato sulla stessa macchina.
Già nel 2020 Google aveva anticipato che Chrome avrebbe accantonato la stringa User Agent e oggi conferma quella decisione descrivendo i passaggi che porteranno progressivamente a rendere obsoleto lo User Agent.
“Chrome sta riducendo le informazioni condivise per impostazione predefinita nella stringa User Agent e introducendo una nuova API, User-Agent Client Hints (UA-CH), che consentirà a siti e servizi di richiedere solo le informazioni di cui hanno bisogno“, si legge nella nota pubblicata da Google.
I Client Hints rappresentano un insieme di campi che possono essere aggiunti nell’intestazione (header) delle richieste HTTP: un server può richiedere al client informazioni sul dispositivo in uso, sulla rete, sull’utente e sulle preferenze specifiche dell’utente. Le informazioni da condividere su richiesta del server possono essere scelte lato client.
Rispetto alla stringa User Agent, con i Client Hints è il server che richiede esplicitamente a quali dati desidera accedere in modo molto specifico e granulare.
Mentre Chrome, Edge, Chromium e tutti i browser derivati da quest’ultimo supportano già i Client Hints, Mozilla Firefox ed Apple Safari non risultano compatibili. Anzi, Apple ha più volte criticato i Client Hints descrivendoli come una potenziale minaccia per la privacy degli utenti.
Google non è dello stesso avviso ed anzi ha fatto presente che il passaggio ai Client Hints permetterà di infondere tra gli utenti una maggiore consapevolezza circa le problematiche relative alla tutela della privacy durante la navigazione in rete.
Per gli sviluppatori, inoltre, le informazioni disponibili sotto forma di Client Hints sono evidentemente di utilizzo immediato.
Con il rilascio di Chrome 105 Google ha addirittura aggiunto nuove informazioni che gli sviluppatori Web possono richiedere ai client collegati. Un esempio è l’altezza della finestra del browser. In precedenza l’API Client Hints esponeva solo le informazioni sulla larghezza del viewport ma Google ritiene che sia utile recuperare anche l’altezza della finestra del browser per assicurarsi che certe immagini presenti nelle pagine Web vengano visualizzate correttamente.
Alcuni esempi di Client Hints letti da una normale applicazione Web sono descritti qui.
Nel 2020 gli sviluppatori di Apple WebKit scrivevano: “al momento siamo molto scettici sull’implementazione (soprattutto per alcuni Client Hints, n.d.r.) a causa della (potenziale, n.d.r.) espansione della superficie di fingerprinting“.