Casi d’uso dell’User-agent
Gli User-agents sono stati a lungo utilizzati per fornire ai team di marketing e sviluppatori informazioni importanti sul modo in cui browser, sistemi operativi e dispositivi visualizzano il contenuto del sito e sul modo in cui gli utenti interagiscono con i siti web. Gli User-agents vengono inoltre utilizzati per bloccare spam e filtrare bot che esaminano i siti per diversi scopi aggiuntivi.
Tuttavia, negli ultimi anni alcuni proprietari di siti e fornitori di marketing hanno utilizzato user-agent, insieme ad altre informazioni incluse nelle intestazioni della richiesta, per creare impronte digitali che possono essere utilizzate come mezzo per identificare gli utenti senza esserne a conoscenza. Nonostante lo scopo importante che user-agent svolge per i proprietari del sito, gli sviluppatori del browser hanno deciso di apportare modifiche al modo in cui gli user-agents operano per limitare potenziali problemi di privacy per i visitatori del sito.
Gli sviluppatori di browser hanno creato User-Agent Client Hints come soluzione a questa sfida. I Client Hints consentono ancora ai siti di raccogliere le informazioni necessarie su browser, sistema operativo e dispositivo, fornendo al tempo stesso una maggiore protezione contro i metodi di tracciamento nascosti, come la impronta digitale.
Client Hints
User-Agent Client Hints forniscono ai proprietari del sito web la possibilità di accedere a gran parte delle stesse informazioni disponibili nell’user-agent, ma in un modo più rispettoso della privacy. Quando i browser moderni inviano un user-agent a un server Web, l’intero user-agent viene inviato su ogni richiesta, indipendentemente dal fatto che sia necessario. I Client Hints, invece, impongono un modello in cui il server deve chiedere al browser le informazioni aggiuntive che desidera conoscere sul client. Dopo aver ricevuto questa richiesta, il browser può applicare i propri criteri o la propria configurazione utente per determinare quali dati vengono restituiti. Invece di esporre l’intero user-agent per impostazione predefinita su tutte le richieste, l’accesso viene ora gestito in modo esplicito e verificabile.
I User-Agent Client Hints. sono disponibili in Chrome dalla versione 89. Le versioni recenti dei browser basati su Chromium, come Microsoft Edge, Opera, Brave, Chrome Android, Opera Android e Samsung Internet, supportano anche l’API dei Client Hints.
I Client Hints contenuti nelle intestazioni della prima richiesta effettuata dal browser a un server Web contengono il marchio del browser, la versione principale del browser e un indicatore che suggerisce se il client è un dispositivo mobile. Ogni elemento di dati ha un proprio valore di intestazione, anziché essere raggruppato in una singola stringa user-agent.
Ad esempio, ecco alcuni Client Hints:
Sec-CH-UA: "Chromium";v="101", "Google Chrome";v="101", " Not;A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "macOS"
…considerando che si tratta dell’agente utente per lo stesso browser:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
Sebbene le informazioni siano simili, la prima richiesta al server contiene Client Hints che contengono solo un sottoinsieme di ciò che è disponibile nella stringa user-agent. L’architettura del sistema operativo, la versione completa del sistema operativo, il nome del motore di layout, la versione del motore di layout e la versione completa del browser mancano nella richiesta. Tuttavia, nelle richieste successive, l’API dei Client Hints consente ai server Web di richiedere ulteriori dettagli di entropia elevata sul dispositivo. Quando si richiedono questi valori entropici elevati, a seconda della policy del browser o delle impostazioni utente, la risposta del browser può includere tali informazioni.
L’esempio seguente è un oggetto JSON restituito dall’API Client Hints quando vengono richiesti valori di entropia elevati:
{
"architecture":"x86",
"bitness":"64",
"brands":[
{
"brand":" Not A;Brand",
"version":"99"
},
{
"brand":"Chromium",
"version":"100"
},
{
"brand":"Google Chrome",
"version":"100"
}
],
"fullVersionList":[
{
"brand":" Not A;Brand",
"version":"99.0.0.0"
},
{
"brand":"Chromium",
"version":"100.0.4896.127"
},
{
"brand":"Google Chrome",
"version":"100.0.4896.127"
}
],
"mobile":false,
"model":"",
"platformVersion":"12.2.1"
}
I valori di entropia elevati includono diverse informazioni aggiuntive che non sono disponibili nelle informazioni predefinite dei Client Hints. La tabella seguente contiene i dettagli dei dati disponibili nella richiesta predefinita rispetto alle informazioni sui User-Agent Client Hints entropici elevati.
Intestazione HTTP | JavaScript | User-agent | Client hint | Client hint entropico elevato |
---|---|---|---|---|
Sec-CH-UA | marchi | Sì | Sì | No |
Sec-CH-UA-Platform | piattaforma | Sì | Sì | No |
Sec-CH-UA-Mobile | dispositivi mobili | Sì | Sì | No |
Sec-CH-UA-Platform-Version | platformVersion | Sì | No | Sì |
Sec-CH-UA-Arch | architettura | Sì | No | Sì |
Sec-CH-UA-Model | modello | Sì | No | Sì |
Sec-CH-UA-Bitness | numero di bit | Sì | No | Sì |
Sec-CH-UA-Full-Version-List | fullVersionList | Sì | No | Sì |