Lo User-Agent storicamente è stata inclusa nelle richieste di offerta per fornire utili Dati di targeting come il browser e la piattaforma del dispositivo avviato. Tuttavia, spesso i browser oscurano in modo eccessivo lo user agent a causa della sua difficoltà di utilizzo e per proteggere meglio la privacy degli utenti. In risposta a ciò, Google supporta Client hint dello user agent, che sono incluse nelle richieste di offerta, se disponibili, per integrare l'intestazione User-Agent. Questi client hint possono essere ricavati dalle intestazioni Sec-Ch-UA* o dell'API JavaScript Client Hints.
A seconda del protocollo utilizzato, l'intestazione User-Agent viene esposta con uno dei i seguenti campi di stringhe:
- OpenRTB:
BidRequest.device.ua
- RTB Google (deprecato):
BidRequest.user_agent
Un messaggio UserAgent
verrà compilato con i client hint quando vengono visualizzati
disponibile, ma in caso contrario verrà compilato in base ai valori analizzati
Intestazione user agent. A seconda del protocollo utilizzato, verrà esposto come uno
dei seguenti campi:
- OpenRTB:
BidRequest.device.sua
- RTB Google (deprecato):
BidRequest.user_agent_data
Gli offerenti sono vivamente invitati a utilizzare il messaggio UserAgent
anziché il
Stringa dello user agent.
Come viene compilato UserAgent
A differenza dell'intestazione User-Agent, il messaggio UserAgent
rappresenta lo user agent
informazioni suddivise in più campi per ottenere informazioni specifiche.
A seconda della disponibilità dei client hint nella richiesta di annuncio,
UserAgent
messaggio può essere compilato nei seguenti modi:
- Se la richiesta contiene almeno
entropia bassa
client hint: il campo
UserAgent
viene compilato in base ai relativi contenuti. - Se la richiesta contiene solo l'intestazione User-Agent,
UserAgent
è vengono compilati in base a ciò che può essere analizzato dall'intestazione.
Esempio: completamento di UserAgent
in base all'intestazione User-Agent
Supponiamo che esista una richiesta di annuncio in cui il browser invia 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
le seguenti:
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: completamento di UserAgent
in base ai client hint
Supponiamo che esista una richiesta di annuncio in cui il browser invia 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
Nei casi in cui sono inclusi almeno client hint a bassa entropia, UserAgent
verrà compilato in base ai contenuti di tali intestazioni anche se User-Agent
intestazioni. L'URL avrà il seguente aspetto:
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 e ai client hint
Alcuni campi vengono compilati in modo diverso a seconda che siano basati o meno su l'intestazione User-Agent o i Client Hints. Di seguito è riportato un riepilogo differenze:
- Per browser e piattaforme identici,
UserAgent.browsers.brand
eUserAgent.platform.brand
sarà spesso diverso daUserAgent
in base a l'intestazione User-Agent o i Client Hints. Ad esempio:UserAgent.platform.brand
potrebbe essere visualizzato come "Windows NT" se si basava su l'intestazione User-Agent o "Windows" se erano basate su Client Hints. - Alcune voci
UserAgent.browsers
sono univoche per l'intestazione User-Agent o ai client hint. Ad esempio, "AppleWebKit" verrà visualizzato seUserAgent
si basano sull'intestazione User-Agent, mentre "Chromium" veniva visualizzato se si basavano su Client Hints. - Solo un valore
UserAgent
basato sull'intestazione User-Agent può contenere valori bloccati. Ad esempio, se la piattaforma era Windows 11 22H2,UserAgent.platform.brand
verrà impostato su "Windows NT" eUserAgent.platform.version
verrà impostato su[“10”, “0”]
perché è il valore bloccato per qualsiasi versione di Windows uguale o superiore a 10.
I dati di UserAgent
che si basano sui client hint in genere non saranno
sostituzione imprecisa di informazioni bloccate o oscurate. Se sono presenti
incoerenza tra l'intestazione User-Agent e un UserAgent
in base al client
Suggerimenti: è preferibile utilizzare le informazioni fornite da UserAgent
.
Campi oggetto UserAgent
Questa sezione riassume ogni campo, con particolare attenzione alle offerte in tempo reale di Google comportamento e best practice per l'utilizzo.
Browser
Contiene un elenco di
BrandVersion
articoli generalmente ordinati per specificità, ad esempio se
elenca i contenuti di browsers
, il brand
per ogni voce potrebbe essere
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 | Variante su computer, anziché su dispositivo mobile. |
UserAgent
non elenca sempre i browser in un ordine specifico, in particolare
se è basato sui client hint. Di seguito vengono 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 oppure bloccato (dipende dal criterio specifico dell'agente). Tieni presente che non ci saranno un'indicazione che il valore è bloccato.CLIENT_HINTS_LOW_ENTROPY
eCLIENT_HINTS_HIGH_ENTROPY
: i dati inseriti sono non ordinati in base a nessun criterio; ad esempio, lo stesso browser potrebbe inviare in ordini diversi in ogni richiesta. Potrebbero contenere anche un GREASE, che deve essere ignorato.CLIENT_HINTS_HIGH_ENTROPY
: tutti i campiversion
trovati nei browser potrebbero essere impostato sulle versioni complete.
Piattaforma
Una BrandVersion
che descrive la piattaforma. Potrebbe non essere compatibile con lo user agent
intestazione e client hint, quindi il targeting di alcune piattaforme potrebbe richiedere test
due nomi. Ad esempio, il sistema operativo Macintosh di Apple ha il nome
"Macintosh" nell'intestazione User-Agent, ma "macOS" in Client Hints.
Di seguito vengono descritte altre differenze che puoi aspettarti di notare in base ai
il valore di source
:
USER_AGENT
: il campoversion
potrebbe essere ridotto a una versione principale oppure bloccato. Tieni presente che non ci sarà alcuna indicazione del fatto che il valore sia bloccato.CLIENT_HINTS_LOW_ENTROPY
: il campoversion
non verrà compilato.CLIENT_HINTS_HIGH_ENTROPY
: il campoversion
può essere impostato completamente completamente gestita.
Dispositivi mobili
Indica se i contenuti come gli annunci devono essere ottimizzati per gli schermi piccoli e/o input tocco. Tieni presente che questo non è necessariamente un indicatore del tipo di dispositivo, perché i browser mobile possono essere configurati in modo da richiedere un "sito desktop".
Architettura
Identifica l'architettura della piattaforma, ad esempio "x86" o "arm".
Per un valore UserAgent
basato sui client hint, tieni presente che verrà compilato solo
quando source
è impostato su CLIENT_HINTS_HIGH_ENTROPY
.
A bit
Identifica la bit della piattaforma, ad esempio se ha un bit a 32 o 64 bit per la CPU. Il campo è una stringa in numero intero che fornisce informazioni aggiuntive su la sua architettura; Ad esempio, un'architettura "x86" può avere una quantità di bit impostata "32" o "64".
Per un valore UserAgent
basato sui client hint, tieni presente che verrà compilato solo
quando source
è impostato su CLIENT_HINTS_HIGH_ENTROPY
.
Modello
Identifica il modello del dispositivo. Per i dispositivi mobili, cioè non i laptop desktop, verrà compilato con il nome del modello, ad esempio "Pixel 6 Pro".
Di seguito vengono descritte le differenze che puoi aspettarti di notare in base al
valore di source
:
USER_AGENT
- Dispositivi non mobili: il campo
model
spesso contiene una combinazione come "x64" per Windows. Questo valore è non multipiattaforma. ad esempio, Linux potrebbe usare “x86_64” per la stessa hardware. - Dispositivi mobili: questo campo non includerà architettura e 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 del dispositivo mobile. Nessun valore impostato per le piattaforme desktop.
Origine
Identifica le intestazioni utilizzate per creare l'elemento UserAgent
. Per i client hint
questa opera fa una distinzione anche tra i due casi seguenti:
CLIENT_HINTS_LOW_ENTROPY
: sono disponibili solo client hint di base.CLIENT_HINTS_HIGH_ENTROPY
: sono disponibili client hint e almeno un campo classificato come alta entropia.