Command Palette

Search for a command to run...

Cos'è una stringa User-Agent e come leggerla

Cos'è una stringa User-Agent e come leggerla

T
Toolz Team
|Aug 31, 2026|16 min letto
Preferisci Toolz.dev su Google

Parte della raccolta Strumenti web

Parser dell'agente utente

Incolla una stringa User-Agent e leggi il browser, il motore di rendering, il sistema operativo, il tipo di dispositivo e la CPU che descrive, tutto nel tuo browser.

Usa il Parser dell'agente utente

La prima volta che ho dovuto dare un senso a una stringa User-Agent in blocco è stato durante un progetto SEO su wpadminify.com, fissando un registro di accesso al server cercando di capire quanto del traffico era gente reale e quanto erano i crawler Avevo una colonna di stringhe con cui tutto iniziava Mozilla/5.0tutti hanno menzionato Safari, e metà di loro mentivano sull'essere un browser mentre in realtà ne erano un altro Leggendoli a occhio era senza speranza Questo è il lavoro che fa un parser User-Agent, e dopo averlo fatto nel modo più duro troppe volte ne ho integrato uno Toolz.dev. Questa è la guida e l'intestazione sorprendentemente disordinata dietro di essa.

tl; dr: Il Toolz parser agente utente prende una stringa User-Agent e la divide in browser, motore di rendering, sistema operativo, tipo di dispositivo e architettura CPU Applica l'ordine di rilevamento richiesto dall'header's quirks, quindi Edge non viene letto male poiché Chrome e Safari mobile vengono letti dal suo token di versione reale Inoltre contrassegna i bot noti Tutto viene eseguito lato client: nessun upload, nessuna registrazione, sicuro per le linee di registro reali.

Che cosa è una stringa User-Agent?

Una stringa User-Agent è il valore del User-Agent header di richiesta che un browser o un client HTTP invia con quasi ogni richiesta L'header è definito in RFC9110, la specifica HTTP Semantics, che lo descrive come una sequenza di identificatori di prodotto e commenti che consentono a un server di identificare il software che effettua la richiesta In pratica nomina il browser, la sua versione, il motore di rendering, il sistema operativo e spesso il dispositivo.

L'intento era ragionevole: dare ai server un modo per sapere cosa si sta connettendo in modo che possano adattare le risposte o raccogliere statistiche La realtà è che la stringa è diventata uno dei pezzi meno affidabili di dati auto-riportati sul web, non perché sia dannoso ma perché due decenni di hack di compatibilità hanno sovrapposto token su token fino a quando la lettura ovvia è solitamente quella sbagliata.

Ecco una moderna stringa di Chrome su Windows:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36

Sostiene di essere Mozilla, menziona AppleWebKit e termina con la parola Safari Non è nessuna di quelle cose; è Chrome Ogni token prima Chrome/126 è un sedimento storico Un parser esiste proprio perché non ci si può fidare dei token che sembrano più autorevoli.

Perché l'analisi di un agente utente è così soggetta a errori?

L'intestazione crebbe per imitazione Nelle prime guerre tra browser i server controllavano l'User-Agent per decidere quale versione di una pagina inviare, e controllavano maldestramente, spesso con una semplice substring match, un nuovo browser che voleva ricevere la buona e moderna pagina doveva contenere il token che il server stava cercando, quindi ogni browser copiava il vincitore precedente Netscape si faceva chiamare Mozilla, quindi Internet Explorer affermava di essere compatibile con Mozilla, quando arrivarono i browser WebKit portavano i token Mozilla e KHTML Chrome biforcato da WebKit e manteneva sia AppleWebKit che Safari in modo che i server di WebKit-sniffing lo trattassero bene Il risultato è che una singola stringa può onestamente contenere i nomi di quattro diverse linee di browser.

Questo crea trappole di cemento per chiunque legga la stringa:

  • Edge e Opera contengono entrambi Chrome. Microsoft Edge aggiunge Edg/126.0.0.0 e l'Opera si aggiunge OPR/, ma entrambi portano anche il pieno Chrome/126 token perché sono basati su Chromium Prova prima per Chrome e etichetterai ogni utente Edge e Opera come Chrome.
  • Safari nasconde la sua versione reale. Sul desktop e su iOS, Safari segnala la sua versione rivolta all'utente in un Version/17.5 token, mentre il Safari/604.1 token vicino alla fine è il numero di build WebKit, non la versione del browser Leggi Safari/ come la versione e si ottiene un numero senza senso.
  • Chrome su iOS non è Chrome's motore. Apple richiede a tutti i browser iOS di utilizzare WebKit, quindi Chrome su un iPhone segnala CriOS ed esegue WebKit, non Blink Firefox su iOS è FxiOS, anche WebKit.
  • Windows 11 non esiste nella stringa. Microsoft non ha mai urtato il token del kernel NT, quindi sia Windows 10 che Windows 11 riportano Windows NT 10.0. La stringa non può distinguerli affatto.

Un parser è un piccolo mucchio di regole ordinate che sanno di queste trappole Questo è davvero tutto, ma ottenere l'ordine giusto è l'intero gioco.

Come funziona il parser dell'agente utente Toolz?

la parser esegue una sequenza di controlli il cui ordine codifica le trappole sopra Cerca i browser che incorporano un altro browser' s token prima Edge prima di Chrome, Opera prima di Chrome, Samsung Internet e UC Browser prima di Chrome, quindi il prestito Chrome token non vince mai per sbaglio Si legge Safari dal suo Version/ token piuttosto che il suo Safari/ gettone di compilazione. Riconosce le varianti iOS CriOS e FxiOS rispettivamente come Chrome e Firefox mentre riportano correttamente il loro motore come WebKit.

Per il sistema operativo mappa il numero del kernel di Windows NT al nome di marketing, quindi Windows NT 6.1 diventa Windows 7 e Windows NT 10.0 diventa Windows 10 o 11, dichiarato onestamente come coppia perché la stringa non è veramente in grado di distinguerli Ripristina la forma tratteggiata delle versioni iOS e macOS, che l'intestazione scrive con trattini di sottolineatura come 17_5, e riconosce Android, Chrome OS e Linux.

Per il dispositivo classifica la richiesta come desktop, mobile, tablet, o bot La regola del tablet è quella del fiddly: un iPad è un tablet, un dispositivo Android senza il Mobile token è un tablet, e qualsiasi cosa corrispondente Mobile, iPhone, o Windows Phone è un telefono Laddove la stringa espone un modello di dispositivo, come una stringa di build Android o un nome di prodotto Apple, il parser lo fa emergere.

Inoltre contrassegna i bot Questo è il campo che raggiungo per la maggior parte, perché quando stai leggendo un registro di accesso la singola domanda più utile è quanto del traffico è automatizzato Il parser corrisponde a un ampio insieme di firme che coprono crawler di ricerca, fetcher di anteprima sociale e client della riga di comando.

Cosa può dirti un User-Agent e cosa no?

Vale la pena essere precisi sui limiti, perché trattare la stringa come un fatto porta a decisioni sbagliate.

Domanda L'UA può rispondere? banconote
Quale famiglia di browser Di solito sì Con ordine di rilevamento corretto
Versione esatta del browser Di solito sì Sempre più congelato o ridotto
Nome del sistema operativo Di solito sì Windows 10 vs 11 è impossibile
Tipo dispositivo Decisamente Euristico, non garantito
Modello di dispositivo esatto A volte Solo quando la stringa lo include
Se il cliente è genuino no Banalmente spoofable
Dimensioni o capacità dello schermo no Utilizza invece il rilevamento delle funzionalità

Le ultime due righe contano di più Un User-Agent è auto-segnalato e può essere cambiato in una riga di codice, impostato da qualsiasi client HTTP, o congelato dal browser per la privacy Uno scraper può annunciarsi come Chrome su Windows e non c'è nulla nella stringa che lo contraddica Quindi il risultato analizzato ti dice cosa afferma di essere il client, che è utile per le statistiche e il debug ma non è la prova di nulla Quando devi sapere cosa può effettivamente fare un browser, rileva funzionalità in JavaScript anziché dedurre funzionalità dal nome Questo è lo stesso principio dietro la scrittura di codice front-end resiliente che il Toolkit per sviluppatori web roundup ritorna a ripetutamente.

Le stringhe User-Agent stanno andando via?

Non esattamente, ma vengono deliberatamente ridotti I browser Chromium congelano e tagliano la stringa legacy da alcuni anni, limitando il livello di dettaglio che espone, in particolare i numeri di versione minori e alcune specifiche della piattaforma La sostituzione è Suggerimenti per il cliente agente utente, un meccanismo in cui il server richiede esattamente le informazioni del client di cui ha bisogno Sec-CH-UA richiesta intestazioni e il navigator.userAgentData API JavaScript, piuttosto che ricevere una lunga stringa deve analizzare Suggerimenti client è anche il luogo in cui la distinzione Windows 10 contro 11 diventa finalmente disponibile, attraverso Sec-CH-UA-Platform-Version.

Il risultato pratico per i prossimi anni è che entrambi esistono. Il classico User-Agent l'intestazione viene ancora fornita su ogni richiesta da ogni browser e da ogni client non browser e una grande quantità di strumenti, analisi e logica lato server la legge ancora. Quindi l'analisi della stringa rimane il modo più portatile per identificare un client, anche se i dati più ricchi si spostano su suggerimenti client. Se stai costruendo qualcosa di nuovo e desideri esattamente la versione della piattaforma, leggi suggerimenti client; se stai analizzando un registro esistente o supportando la gamma più ampia di client, analizza la stringa.

Come faccio a usare il parser?

Il flusso è volutamente semplice Incolla una stringa User-Agent nella casella, oppure fai clic su uno dei campioni incorporati per visualizzare una stringa rappresentativa di desktop, dispositivi mobili o bot Per afferrare la tua, apri la console del browser e digita navigator.userAgent, quindi incolla il risultato Mentre digiti, il browser, il motore, il sistema operativo, il tipo di dispositivo, l'architettura della CPU e l'aggiornamento del flag del bot in diretta, senza pulsante da premere Quando desideri che il risultato sia altrove, copialo come una tabella separata da schede che incolla in modo pulito in un foglio di calcolo o in una segnalazione di bug.

Poiché l'intera faccenda viene eseguita nel browser, puoi incollare linee di registro di accesso grezze o stringhe di visitatori reali senza che nessuna di esse lasci la tua macchina. Quel modello lato client è intenzionale ed è lo stesso dietro ogni strumento sul sito, spiegato nel strumenti online per la privacy dei dati guida Per una credenziale si sta eseguendo il debug insieme a una richiesta, il generatore auth base E il Decodificatore JWT seguire lo stesso approccio senza caricamento.

Dove il parser si adatta agli altri strumenti web

Il parser dell'agente utente si trova in un piccolo cluster di strumenti di richiesta e risposta sul sito Quando si sta ispezionando il traffico verso un dominio, il ricerca dominio tool risponde a chi lo possiede e lo gestisce Quando una richiesta porta un token portante è necessario ispezionare, il Decodificatore JWT legge le affermazioni fuori di esso Quando si sta costruendo una richiesta autenticata in primo luogo, il generatore auth base costruisce il Authorization intestazione. E quando lavori su come una pagina si presenta ai crawler, che leggono le tue pagine sotto i propri User-Agent, il generatore di tag meta modella i tag che consumano.

Per chiunque ne assembli un set personale, il Strumenti di produttività per sviluppatori guida copre come le utilità basate su browser sul sito si inseriscono in una giornata lavorativa Il punto di tenerli insieme è che il debug di un'interazione HTTP raramente coinvolge solo una di queste domande.

Un flusso di lavoro pratico: leggere un registro del traffico

Lasciate che renda questo concreto con il compito che mi ha avviato lungo questa strada Avete esportato una fetta del vostro registro di accesso e volete capirlo L'approccio ingenuo è quello di guardare la colonna User-Agent, che è esattamente dove le trappole mordono Un crawler che si identifica educatamente come Googlebot è facile, ma un raschietto senza testa che si annuncia come una normale build di Chrome sembra identico a un visitatore reale finché non controlli gli altri segnali.

Il parser aiuta in due modi In primo luogo, il flag bot cattura immediatamente i crawler onesti e i client di automazione comuni, in modo da poter separare il traffico macchina evidente dal traffico umano in un unico passaggio In secondo luogo, la corretta suddivisione del browser e del sistema operativo del traffico rimanente ti dice qualcosa di reale sul tuo pubblico: se distorce il mobile, quali sistemi operativi dominano, se un vecchio browser conta ancora abbastanza da testare. Sul lavoro di WP Adminify, quel guasto ha cambiato quali browser abbiamo dato priorità al test e ha confermato che una parte di quello che sembrava traffico organico era l'anteprima e il monitoraggio dei bot piuttosto che dei lettori L'analisi delle stringhe ha trasformato un muro di rumore in una decisione.

L'unica disciplina da mantenere è quella della sezione dei limiti: il risultato analizzato è un'affermazione, non una prova Un determinato raschietto forgerà una stringa convincente e nessun parser può coglierla solo dall'Utente-Agente Combina l'analisi con i modelli di richiesta, la velocità e altri segnali quando la posta in gioco è alta Per le statistiche quotidiane e il debug, però, un'analisi corretta è esattamente ciò di cui hai bisogno, e farlo a mano è un errore.

Cosa mi dicono il motore di rendering e i campi CPU?

Due dei campi analizzati ricevono meno attenzione rispetto al browser e al sistema operativo, ma entrambi sono utili Il motore di rendering è il componente che trasforma effettivamente HTML e CSS in pixel, ed è un predittore migliore di come si comporta una pagina rispetto al nome del browser Chrome, Edge, Opera, Brave, Samsung Internet e la maggior parte degli altri condividono il motore Blink, quindi un bug di rendering che appare in uno di solito appare in tutti; Firefox utilizza Gecko; e Safari, insieme a ogni browser su iOS, utilizza WebKit Quando si sta effettuando il triage di un bug di layout, raggruppare il traffico per motore anziché per nome del browser indica quanti percorsi di rendering genuinamente distinti si devono testare, che spesso sono solo tre.

Il parser deriva il motore dai token della piattaforma piuttosto che dall'etichetta del browser, motivo per cui può segnalare Blink per un browser Chromium e WebKit per Safari anche se entrambi discendono dallo stesso token AppleWebKit Cattura anche i motori più vecchi, Trident per Internet Explorer ed EdgeHTML per Edge legacy, che vengono ancora visualizzati nei registri aziendali.

Il campo dell'architettura della CPU legge i token della piattaforma per x86_64, Win64, arm64, e i loro parenti, che segnalano se il client è una macchina a 64 bit, 32 bit o ARM. È il campo da controllare quando si servono download specifici della piattaforma e è necessario sapere quale build può eseguire un visitatore, ed è un segnale silenzioso di quanto sia moderno il tuo hardware audience's.

Domande frequenti

Che cosa è una stringa User-Agent? Una stringa User-Agent è il valore dell'intestazione HTTP User-Agent che un browser o un client invia ad ogni richiesta, è una lista di token di prodotto che nominano il browser, il suo motore di rendering, il sistema operativo, e spesso il dispositivo, definito nella RFC 9110 I server lo leggono per identificare il software che si collega ad essi.

Come trovo il mio User-Agent? Apri il tuo browser's console sviluppatore e digita navigator.userAgent, quindi premi Invio La stringa che stampa è esattamente ciò che il tuo browser invia ai server Incollala nel parser dell'agente utente per vedere il browser, il sistema operativo e il dispositivo su cui decodifica.

Perché Chrome's User-Agent contiene la parola Safari? Per compatibilità con le versioni precedenti Chrome ha biforcato il suo motore da Apple's WebKit, e i primi server hanno controllato il token Safari prima di servire le pagine moderne, quindi Chrome lo ha mantenuto per evitare di essere declassato La stessa cronologia è il motivo per cui quasi tutti i browser iniziano ancora la loro stringa con Mozilla/5.0.

Un User-Agent può comunicare a Windows 10 da Windows 11? No. Entrambi riportano Windows NT 10.0 perché Microsoft non ha mai incrementato il token del kernel NT per Windows 11, quindi la stringa da sola non può distinguere i due Il modo moderno per distinguerli sono i suggerimenti client utente-agente, in particolare l'intestazione Sec-CH-UA-Platform-Version.

Un User-Agent è affidabile per identificare un dispositivo? È un suggerimento utile, non una prova Gli User-Agent possono essere modificati in una riga di codice, impostati da qualsiasi client HTTP, falsificati da scraper o congelati dal browser per motivi di privacy Tratta il risultato analizzato come ciò che il client afferma di essere e combinalo con altri segnali quando l'accuratezza è importante.

Come fa il parser a rilevare bot e crawler? Corrisponde alla stringa rispetto a un ampio elenco di firme note, inclusi crawler di ricerca come Googlebot e Bingbot, fetcher di anteprime social e client di automazione come curl, wget e Chrome headless Qualsiasi corrispondenza imposta il flag bot e classifica il dispositivo come crawler.

È sicuro incollare il registro di produzione User-Agents qui? Sì. Tutto l'analisi avviene nel browser con JavaScript e la stringa non viene mai inviata a nessun server. Puoi incollare righe di registro di accesso grezze o agenti utente visitatori reali senza che lascino il tuo dispositivo.

Le stringhe User-Agent vengono deprecate? L'intestazione viene congelata e ridotta, non rimossa I browser Chromium ora ricoprono i dettagli nella stringa legacy ed espongono invece dati più ricchi tramite suggerimenti client utente-agente La stringa classica viene ancora spedita su ogni richiesta, quindi l'analisi rimane il modo più portatile per leggere i dettagli del client.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!