
Il tuo browser invia il suo agente utente a ogni sito web a cui ti connetti. Abbiamo già scritto sulla modifica dell'agente utente del tuo browser prima, ma che cos'è esattamente un agente utente, comunque?
Un agente utente è una “stringa”, ovvero una riga di testo, che identifica il browser e il sistema operativo sul server Web. Sembra semplice, ma gli user agent sono diventati un casino nel tempo.
Le basi
Quando il browser si connette a un sito Web, include un campo User-Agent nella sua intestazione HTTP. Il contenuto del campo dell'agente utente varia da browser a browser. Ogni browser ha un proprio user agent distintivo. In sostanza, un agente utente è un modo per un browser di dire “Ciao, sono Mozilla Firefox su Windows” o “Ciao, sono Safari su un iPhone” a un server web.
Il server Web può utilizzare queste informazioni per servire pagine Web diverse a browser Web diversi e sistemi operativi diversi. Ad esempio, un sito Web potrebbe inviare pagine mobili a browser mobili, pagine moderne a browser moderni e un messaggio “si prega di aggiornare il browser” a Internet Explorer 6.
Esaminare gli agenti utente
Ad esempio, ecco l'agente utente di Firefox su Windows 7:
Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 12.0) Gecko / 20100101 Firefox / 12.0

Questo agente utente dice parecchio al web server: il sistema operativo è Windows 7 (nome in codice Windows NT 6.1), è una versione a 64 bit di Windows (WOW64) e il browser stesso è Firefox 12.
Ora diamo un'occhiata al programma utente di Internet Explorer 9, che è:
Mozilla / 5.0 (compatibile; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)

La stringa dell'agente utente identifica il browser come IE 9 con il motore di rendering Trident 5. Tuttavia, potresti individuare qualcosa di confuso: IE si identifica come Mozilla.
Ci torneremo tra un minuto. Innanzitutto, esaminiamo anche l'agente utente di Google Chrome:
Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 536.5 (KHTML, come Gecko) Chrome / 19.0.1084.52 Safari / 536.5

La trama si infittisce: Chrome finge di essere sia Mozilla che Safari. Per capire il motivo, dovremo esaminare la cronologia dei programmi utente e dei browser.
Il pasticcio della stringa dell'agente utente
Mosaic è stato uno dei primi browser. La sua stringa agente utente era NCSA_Mosaic / 2.0. Più tardi arrivò Mozilla (in seguito ribattezzata Netscape) e il suo user agent era Mozilla / 1.0. Mozilla era un browser più avanzato di Mosaic, in particolare supportava i frame. I server Web hanno verificato che l'agente utente contenesse la parola Mozilla e ha inviato pagine contenenti frame ai browser Mozilla. Ad altri browser, i server Web hanno inviato le vecchie pagine senza frame.
Alla fine è arrivato Microsoft Internet Explorer e ha supportato anche i frame. Tuttavia, IE non ha ricevuto pagine Web con frame, poiché i server Web li hanno appena inviati ai browser Mozilla. Per risolvere questo problema, Microsoft ha aggiunto la parola Mozilla al proprio agente utente e ha aggiunto ulteriori informazioni (la parola “compatibile” e un riferimento a IE). I server Web sono stati felici di vedere la parola Mozilla e hanno inviato a IE le moderne pagine Web. Altri browser che sono arrivati dopo hanno fatto la stessa cosa.

Alla fine, alcuni server hanno cercato la parola Gecko – il motore di rendering di Firefox – e hanno offerto ai browser Gecko pagine diverse rispetto ai browser precedenti. KHTML – originariamente sviluppato per Konquerer sul desktop KDE di Linux – ha aggiunto le parole “come Gecko” in modo da ottenere anche le pagine moderne progettate per Gecko. WebKit era basato su KHTML – quando è stato sviluppato, hanno aggiunto la parola WebKit e hanno mantenuto la linea originale “KHTML, come Gecko” per motivi di compatibilità. In questo modo, gli sviluppatori di browser hanno continuato ad aggiungere parole agli agenti utente nel tempo.
I server web non si preoccupano davvero dell'esatta stringa dell'agente utente: controllano solo se contiene una parola specifica.
usi
I server Web utilizzano gli user agent per vari scopi, tra cui:
- Fornire pagine Web diverse a browser Web diversi. Questo può essere usato per il bene – per esempio, per servire pagine web più semplici a browser più vecchi – o per il male – per esempio, per visualizzare un messaggio “Questa pagina web deve essere visualizzata in Internet Explorer”.
- Visualizzazione di contenuti diversi su sistemi operativi diversi, ad esempio visualizzando una pagina ridotta sui dispositivi mobili.
- Raccolta di statistiche che mostrano i browser e i sistemi operativi in uso dai loro utenti. Se vedi mai statistiche sulla quota di mercato del browser, ecco come vengono acquisite.
Anche i robot che eseguono la scansione del Web utilizzano gli user agent. Ad esempio, il crawler web di Google si identifica come:
Googlebot / 2.1 (+ http: //www.google.com/bot.html)
I server Web possono offrire ai bot un trattamento speciale, ad esempio consentendoli attraverso schermate di registrazione obbligatorie. (Sì, questo significa che a volte puoi bypassare le schermate di registrazione impostando il tuo user agent su Googlebot.)
I server Web possono anche dare ordini a bot specifici (o tutti i bot) utilizzando il file robots.txt. Ad esempio, un server Web può dire a un bot specifico di andare via oppure un altro bot per indicizzare solo determinate aree del sito Web. Nel file robots.txt, i bot sono identificati dalle stringhe del loro user agent.

Tutti i principali browser contengono modi per impostare agenti utente personalizzati, in modo da poter vedere a quali server Web inviare a diversi browser. Ad esempio, imposta il tuo browser desktop su una stringa agente utente di un browser mobile e vedrai le versioni mobili delle pagine web sul desktop.
