L'intestazione User-Agent è stata storicamente inclusa nelle richieste di offerta per fornire dati di targeting utili, come il browser e la piattaforma del dispositivo di invio. Tuttavia, spesso i browser oscurano notevolmente l'user agent a causa della sua difficoltà d'uso e per proteggere meglio la privacy degli utenti. In risposta a questo problema, Google supporta i client hint User-Agent, che vengono inclusi nelle richieste di offerta, se disponibili, per integrare l'intestazione User-Agent. Questi client hint (per brevità) possono essere ricavati dagli intestazioni Sec-Ch-UA* o dall'API Client Hints di JavaScript.
L'intestazione User-Agent viene visualizzata come stringa nel campo BidRequest.device.ua
.
Un messaggio UserAgent
viene compilato con i client hint quando sono disponibili, ma in caso contrario viene compilato in base ai valori analizzati dall'intestazione User-Agent. Questo valore è visualizzato nel campo BidRequest.device.sua
.
Consigliamo vivamente agli offerenti di utilizzare il messaggio UserAgent
anziché la stringa User-Agent.
Come viene compilato il campo UserAgent
A differenza dell'intestazione User-Agent, il messaggio UserAgent
rappresenta le informazioni dello user agent suddivise in più campi per informazioni specifiche.
A seconda che gli indicatori client siano disponibili nella richiesta di annuncio, il messaggioUserAgent
può essere compilato nei seguenti modi:
- Se la richiesta contiene almeno un
UserAgent
Client Hints con entropia bassa, il valore viene completato in base ai relativi contenuti. - Se la richiesta contiene solo l'intestazione User-Agent,
UserAgent
viene compilato in base a ciò che può essere analizzato dall'intestazione.
Esempio: compilazione di UserAgent
in base all'intestazione User-Agent
Supponiamo che esista una richiesta di annuncio in cui il browser invii le seguenti intestazioni:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Un UserAgent
compilato esclusivamente in base all'intestazione User-Agent potrebbe avere il seguente aspetto:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
Esempio: compilazione di UserAgent
in base ai client hint
Supponiamo che esista una richiesta di annuncio in cui il browser invii le seguenti intestazioni:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
Se sono inclusi almeno client hint a bassa entropia, il campo UserAgent
viene compilato in base ai contenuti di queste intestazioni anche se sono presenti intestazioni User-Agent. L'aspetto sarà simile al seguente:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
Completamento in base all'intestazione User-Agent rispetto ai client hint
Alcuni campi vengono compilati in modo diverso a seconda che si basino sull'intestazione User-Agent o sui Client Hints. Di seguito è riportato un riepilogo di queste differenze:
- Per piattaforme e browser identici, i valori
UserAgent.browsers.brand
eUserAgent.platform.brand
saranno spesso diversi da un valoreUserAgent
in base all'intestazione User-Agent o ai client hint. Ad esempio,UserAgent.platform.brand
potrebbe essere visualizzato come "Windows NT" se si basa sull'intestazione User-Agent o "Windows" se si basa sui client hint. - Alcune voci
UserAgent.browsers
sono univoche per l'intestazione User-Agent o per i client hint. Ad esempio, "AppleWebKit" viene visualizzato seUserAgent
si basa sull'intestazione User-Agent, mentre "Chromium" viene visualizzato solo se si basa su Client Hints. - Solo un
UserAgent
basato sull'intestazione User-Agent può contenere valori bloccati. Ad esempio, se la piattaforma fosse Windows 11 22H2,UserAgent.platform.brand
verrebbe impostato su "Windows NT" eUserAgent.platform.version
su[“10”, “0”]
perché è il valore congelato per qualsiasi versione di Windows pari o superiore a 10.
In genere, i dati in UserAgent
basati su Client Hints non rappresentano un
sostituzione imprecisa delle informazioni bloccate o oscurate. In caso di
incoerenza tra l'intestazione User-Agent e un UserAgent
basato su Client
Hints, è preferibile dare la precedenza alle informazioni del UserAgent
.
Campi dell'oggetto UserAgent
Questa sezione riassume ogni campo, con un'attenzione particolare al comportamento specifico di Google RTB e alle best practice per l'utilizzo.
Browser
Contiene un elenco di voci BrandVersion generalmente ordinate in base alla specificità. Ad esempio, se elencassi i contenuti di browsers
, i valori brand
di ogni voce potrebbero essere visualizzati nel seguente ordine:
Brand | Significato |
Mozilla | Compatibile con Mozilla |
AppleWebKit | Basato su AppleWebKit, un sottoinsieme di Mozilla. |
Chrome | Browser Chrome, un sottoinsieme di browser compatibili con AppleWebKit |
Safari | Versione desktop, rispetto a quella mobile. |
UserAgent
non elenca sempre i browser in un ordine specifico, soprattutto se si basa su Client Hints. Di seguito sono descritte altre differenze
che puoi aspettarti di vedere in base al valore di source
:
USER_AGENT
: il campoversion
può essere ridotto a una versione principale o bloccato (dipende dalle norme specifiche dell'agente). Tieni presente che non verrà visualizzata alcuna indicazione che il valore è bloccato.CLIENT_HINTS_LOW_ENTROPY
eCLIENT_HINTS_HIGH_ENTROPY
: le voci non sono ordinate in base a nessun criterio; ad esempio, lo stesso browser potrebbe inviare queste voci in ordini diversi in ogni richiesta. Potrebbero anche contenere un elemento GREASE, che deve essere ignorato.CLIENT_HINTS_HIGH_ENTROPY
: tutti i campiversion
trovati nei browser possono essere impostati su versioni complete.
Piattaforma
Un'entrata BrandVersion
che descrive la piattaforma. Questo potrebbe non essere compatibile con l'intestazione User-Agent e con Client Hints, pertanto il targeting di alcune piattaforme potrebbe richiedere il test di due nomi. Ad esempio, il sistema operativo Macintosh di Apple è identificato come "Macintosh" nell'intestazione User-Agent, ma come "macOS" in Client Hints.
Di seguito sono descritte altre differenze che puoi aspettarti di vedere in base al valore di source
:
USER_AGENT
: il campoversion
potrebbe essere ridotto a una versione principale o bloccato. Tieni presente che non verrà visualizzata alcuna indicazione del fatto che il valore è bloccato.CLIENT_HINTS_LOW_ENTROPY
: il campoversion
non verrà compilato.CLIENT_HINTS_HIGH_ENTROPY
: il campoversion
può essere impostato sulla versione completa.
Dispositivi mobili
Indica se i contenuti, come gli annunci, devono essere ottimizzati per schermi piccoli e/o input tocco. Tieni presente che questo non è necessariamente un indicatore del tipo di dispositivo, poiché i browser mobile possono essere configurati per richiedere un "sito desktop".
Architettura
Identifica l'architettura della piattaforma, ad esempio "x86" o "arm".
Tieni presente che per un UserAgent
basato su Client Hints, questo valore verrà compilato solo quando source
è impostato su CLIENT_HINTS_HIGH_ENTROPY
.
Bitness
Identifica la piattaforma a 32 o 64 bit. Il campo è una stringa di numeri interi che fornisce informazioni aggiuntive sulla sua architettura. Ad esempio, un'architettura "x86" può avere una dimensione in bit impostata su "32" o "64".
Tieni presente che per un UserAgent
basato su Client Hints, questo valore verrà compilato solo quando source
è impostato su CLIENT_HINTS_HIGH_ENTROPY
.
Modello
Identifica il modello del dispositivo. Per i dispositivi mobili, ovvero non laptop o computer, verrà inserito il nome di un modello come "Pixel 6 Pro".
Di seguito sono descritte le differenze che puoi aspettarti di vedere in base al valore di source
:
USER_AGENT
- Dispositivi non mobili: il campo
model
spesso contiene un valore combinato di architettura e accoppiamento a bit, ad esempio "x64" per Windows. Questo valore non è cross-platform; ad esempio, Linux potrebbe utilizzare "x86_64" per lo stesso hardware. - Dispositivi mobili: questo campo non include l'architettura e la dimensione in bit.
Se ti interessano questi valori, consulta
UserAgent.architecture
eUserAgent.bitness
.
- Dispositivi non mobili: il campo
CLIENT_HINTS_LOW_ENTROPY
: il campomodel
non verrà compilato.CLIENT_HINTS_HIGH_ENTROPY
: il campomodel
verrà compilato solo per il modello di dispositivo mobile. Nessun valore è impostato per le piattaforme desktop.
Origine
Identifica le intestazioni utilizzate per creare il UserAgent
. Per gli indicatori client,
viene inoltre fatta distinzione tra i seguenti due casi:
CLIENT_HINTS_LOW_ENTROPY
: sono disponibili solo i client hint di base.CLIENT_HINTS_HIGH_ENTROPY
: sono disponibili i client hint, incluso almeno un campo classificato come ad alta entropia.