Ogni volta che un browser web invia una richiesta a un server web, l’intestazione della richiesta include informazioni sul browser e sull’ambiente in cui viene eseguito il browser. Tutti questi dati sono aggregati in una stringa, denominata User-Agent stringa.
Di seguito è riportato un esempio di User-Agent stringa simile a una richiesta proveniente da un browser Chrome in esecuzione su un Mac OS dispositivo.
Nel corso degli anni, la quantità di informazioni sul browser e sul dispositivo incluse User-Agent la stringa è cresciuta e modificata più volte. L’esempio seguente mostra una selezione dei più comuni User-Agent informazioni.
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36`
Campo | Valore |
---|---|
Nome software | Chrome |
Versione software | 105 |
Versione software completa | 105.0.0.0 |
Nome del motore di layout | AppleWebKit |
Versione del motore di layout | 537.36 |
Sistema operativo | Mac OS X |
Versione del sistema operativo | 10.15.7 |
Dispositivo | Mac OS X 10_15_7 |
User-Agent Le stringhe sono state a lungo utilizzate per fornire ai team di marketing e sviluppo informazioni importanti sul modo in cui i browser, i sistemi operativi e i dispositivi visualizzano i contenuti del sito e sul modo in cui gli utenti interagiscono con i siti web.
User-Agent Le stringhe vengono inoltre utilizzate per bloccare lo spam e filtrare i bot che esaminano i siti per diversi scopi aggiuntivi.
Le soluzioni Adobe Experience Cloud utilizzano User-Agent in vari modi.
Negli ultimi anni, proprietari di siti e fornitori di marketing hanno utilizzato User-Agent insieme ad altre informazioni incluse nelle intestazioni della richiesta per creare impronte digitali. Queste impronte digitali possono essere utilizzate come mezzo per identificare gli utenti all'insaputa di questi ultimi.
Nonostante l'importante scopo che User-Agent le stringhe vengono utilizzate dai proprietari dei siti; gli sviluppatori dei browser hanno deciso di modificare le modalità User-Agent Le stringhe funzionano per limitare potenziali problemi di privacy per gli utenti finali.
La soluzione che hanno sviluppato si chiama User-Agent Client Hints. Gli hint client consentono ancora ai siti web 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.
Gli hint client consentono ai proprietari di siti web di accedere a gran parte delle stesse informazioni disponibili in User-Agent stringa, ma in modo più rispettoso della privacy.
Quando i browser moderni inviano un utente a un server web, l’intero User-Agent stringa viene inviata a ogni richiesta, indipendentemente dal fatto che sia necessaria. Gli hint client, 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, in tutte le richieste l’accesso viene ora gestito in modo esplicito e verificabile.
User-Agent Client Hints sono stati introdotti con Google Chrome versione 89.
Altri browser basati su Chromium supportano l’API dei Client Hints, ad esempio:
Esistono due categorie di User-Agent Client Hints:
Gli hint client a bassa entropia includono informazioni di base che non possono essere utilizzate per gli utenti di impronte digitali. Informazioni quali il marchio del browser, la piattaforma e se la richiesta proviene da un dispositivo mobile.
Gli hint client a bassa entropia sono abilitati per impostazione predefinita in Web SDK e vengono trasmessi a ogni richiesta.
Intestazione HTTP | JavaScript | Incluso in User-Agent per impostazione predefinita | Incluso negli hint client per impostazione predefinita |
---|---|---|---|
Sec-CH-UA |
brands |
Sì | Sì |
Sec-CH-UA-Platform |
platform |
Sì | Sì |
Sec-CH-UA-Mobile |
mobile |
Sì | Sì |
Gli hint client ad alta entropia sono informazioni più dettagliate sul dispositivo client, come la versione della piattaforma, l'architettura, il modello, il bit (piattaforme a 64 bit o a 32 bit) o la versione completa del sistema operativo. Queste informazioni potrebbero essere potenzialmente utilizzate per il rilevamento delle impronte digitali.
Intestazione HTTP | JavaScript | Incluso in User-Agent per impostazione predefinita | Incluso negli Client Hints per impostazione predefinita |
---|---|---|---|
Sec-CH-UA-Platform-Version |
platformVersion |
Sì | No |
Sec-CH-UA-Arc |
architecture |
Sì | No |
Sec-CH-UA-Model |
model |
Sì | No |
Sec-CH-UA-Bitness |
Bitness |
Sì | No |
Sec-CH-UA-Full-Version-List |
fullVersionList |
Sì | No |
Gli hint client ad alta entropia sono disabilitati per impostazione predefinita in Web SDK. Per abilitarli, devi configurare manualmente Web SDK per richiedere hint client ad alta entropia.
Alcune soluzioni Adobe Experience Cloud si basano sulle informazioni incluse negli hint client ad alta entropia durante la generazione dei rapporti.
Se non abiliti gli hint client ad alta entropia nell’ambiente, i rapporti e le caratteristiche di Adobe Analytics e Audience Manager descritti di seguito non funzioneranno.
Il Sistema operativo la dimensione include la versione del sistema operativo memorizzata come hint client ad alta entropia. Se gli hint client ad alta entropia non sono abilitati, la versione del sistema operativo potrebbe non essere accurata per gli hit raccolti dai browser Chromium.
Google ha aggiornato il Chrome funzionalità del browser per ridurre al minimo le informazioni raccolte tramite User-Agent
intestazione. Di conseguenza, Audience Manager i clienti che utilizzano DIL non riceverà più informazioni affidabili sulle caratteristiche basate su chiavi a livello di piattaforma.
Audience Manager i clienti che utilizzano chiavi a livello di piattaforma per il targeting devono passare a Experience Platform Web SDK invece di DIL, e abilita Client Hints ad alta entropia per continuare a ricevere dati affidabili sulle caratteristiche.
Per abilitare gli hint client ad alta entropia nella distribuzione Web SDK, devi includere gli hint aggiuntivi highEntropyUserAgentHints
come descritto nella sezione documentazione di configurazione, insieme alla configurazione esistente.
Ad esempio, per recuperare gli hint client ad alta entropia dalle proprietà web, la configurazione sarà simile alla seguente:
context: ["highEntropyUserAgentHints", "web"]
Gli hint client contenuti nelle intestazioni della prima richiesta effettuata dal browser a un server web conterranno il marchio del browser, la versione principale del browser e un indicatore che indica se il client è un dispositivo mobile. Ogni elemento di dati avrà un proprio valore di intestazione anziché essere raggruppato in un singolo User-Agent come mostrato di seguito:
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
Equivalente User-Agent l’intestazione per lo stesso browser sarà simile alla seguente:
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 suggerimenti client. Questi includono solo un sottoinsieme di ciò che è disponibile in User-Agent stringa. Mancano nella richiesta 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.
Tuttavia, su richieste successive, Client Hints API consente ai server web di richiedere ulteriori dettagli sul dispositivo. Quando questi valori vengono richiesti, a seconda della policy del browser o delle impostazioni utente, la risposta del browser può includere tali informazioni.
Di seguito è riportato un esempio dell’oggetto JSON restituito da Client Hints API quando sono richiesti valori entropici 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"
}