In informatica uno user agent è un'applicazione installata sul computer dell'utente che si connette a un processo server. Esempi di user agent sono i browser web, i lettori multimediali e i programmi client (Mail User Agent) come Outlook, Eudora, Thunderbird, Pine ed Elm.

Oggi il termine è utilizzato soprattutto in riferimento ai client che accedono al World Wide Web. Oltre ai browser, gli user agent del web possono essere i crawler dei motori di ricerca, i telefoni cellulari, i lettori di schermo e i browser braille usati da persone non vedenti.

Quando gli utenti di Internet visitano un sito web, una stringa di testo è solitamente inviata per fare identificare al server lo user agent. Questo fa parte della richiesta HTTP, con prefisso "User-agent:" o "User-Agent:" e tipicamente include informazioni come il nome dell'applicazione client, la versione, il sistema operativo e la lingua. I bot spesso includono anche l'indirizzo web e la mail del proprietario, in modo tale che l'amministratore del sito possa contattarlo.

La stringa dello user-agent è uno dei criteri per i quali alcuni bot possono essere esclusi da alcune pagine usando il file robots.txt. Questo permette ai webmaster, che ritengono che alcune parti del loro sito (o tutto il sito) non debba essere incluso nei dati raccolti da un particolare bot o che quel particolare bot stia usando troppa banda, di bloccare l'accesso alle pagine.

Storia

In vari momenti della sua storia, il Web è stato dominato dall'utilizzo di un solo browser: si ricordano ad esempio le "ere" di Netscape e di Internet Explorer. Questo ha fatto sì che molti siti sono stati sviluppati per funzionare con il browser più diffuso, piuttosto che per essere compatibili con gli standard di gruppi come il W3C e l'IETF. Alcuni siti, quindi, utilizzano una tecnica detta "user agent sniffing", la quale consiste nel restituire un contenuto specifico per lo user agent che fa la richiesta (o nel restituire il contenuto solo se un determinato user agent lo richiede). Molti browser, quindi, sono in grado di falsificare, con una tecnica detta "user agent spoofing", il loro user agent in modo da avere del contenuto. Molti di questi browser aggiungono comunque la loro vera identità alla fine della stringa.

Un recente esempio può essere Internet Explorer, che utilizza una stringa che inizia con "Mozilla/<version> (compatible; MSIE <version>...", in modo da ricevere contenuti scritti per Netscape Navigator, il suo principale rivale ai tempi della sua creazione e del suo sviluppo. Va sottolineato che non ci si riferiva al browser Open Source Mozilla, che fu creato successivamente, ma al nome in codice di Netscape (nonché il nome della sua mascotte). Questo formato di stringa fu poi copiato da altri browser, in parte a causa del fatto che Internet Explorer, a sua volta, divenne il browser dominante.

Quando Internet Explorer diventò il browser più diffuso, rivali come Mozilla Firefox, Safari e Opera implementarono sistemi grazie ai quali l'utente poteva selezionare (o, in alcuni casi, inserire) una stringa falsa da inviare, ad esempio quella dell'ultima versione di Internet Explorer. Alcuni (come Firefox e Safari) copiano esattamente la stringa del browser, mentre altri (come Opera) aggiungono alla fine della stringa il vero nome del browser. Quest'ultimo sistema, ovviamente, produce una stringa con tre nomi e versioni di client diversi: per primo, la stringa dice di essere "Mozilla", poi dichiara di essere "MSIE" (Microsoft Internet Explorer) e infine aggiunge il vero nome, ad esempio "Opera".

Oltre ai browser, anche altri programmi che usano il protocollo HTTP, come la maggior parte dei download manager e dei browser offline, hanno la capacità di cambiare come l'utente vuole la stringa inviata al server. Questo, probabilmente, viene fatto per mantenere la compatibilità con quei siti che bloccano determinati programmi di questo tipo, a causa del fatto che spesso sono utilizzati con scarso criterio, fino a sovraccaricare il server.

Questo circolo vizioso pare voler continuare nel campo dei browser web. Molti sviluppatori di siti conformi agli standard hanno da tempo iniziato la campagna "visualizzabile con ogni browser" in modo da incoraggiare gli altri sviluppatori a creare siti compatibili con gli standard ufficiali, e non con quelli dei vari browser.

A partire dal 2005, ci sono stati molti più siti web standard che in qualunque altro momento della storia del web. Continuano però a esserci molti siti con vecchio codice JavaScript che tende a bloccare browser che non siano Internet Explorer o Netscape Navigator. Questo è dovuto fondamentalmente al fatto che molti sviluppatori web di scarsa esperienza copiano e incollano codice da altri siti senza sapere ciò che stanno facendo.

Il peggior effetto dello spoofing è il fatto che la stima di utilizzo di Internet Explorer, il browser con la stringa più spesso copiata, è molto probabilmente esagerata rispetto al reale utilizzo del programma, mentre gli altri browser hanno una stima inferiore a quella reale.

Esempi di stringhe di user agents

Versioni di Internet Explorer:

Versioni di Mozilla Firefox:

Versioni di Safari:

Versioni di AOL Explorer (non classic AOL 8.0, 9.0) (aggiunge "America Online Browser X.X;"):

Versioni di Pocket Internet Explorer:

Versioni di Avant Browser:

Versioni di Konqueror:

Versioni di Minimo:

Versioni di Mozilla:

Versioni di Mozilla SeaMonkey:

Versioni Netscape Navigator (proprietario):

Versioni di Netscape (basate sul codice condiviso non proprietario di Mozilla):

Versioni di NetPositive:

Versioni di Novarra:

Versioni di OmniWeb:

Versioni di Opera:

Versioni di PlayStation Portable:

Versioni di WebExplorer (based on Mosaic):

Versioni di Camino:

Versioni di ELinks:

Versioni di Links:

Versioni di Lynx:

Versioni di Off By One:

Versioni di w3m:

Versioni di Google Chrome:

Versioni di Midori:

Bot

Agent (proprietario/utilizzatore) Stringa
Alexa ia_archiver
Ask.com/Teoma Mozilla/2.0 (compatible; Ask Jeeves/Teoma)
Baidu Spider Baiduspider (http://www.baidu.com/search/spider.htm)
cURL su macOS / Darwin PPC (pubblico) curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7b zlib/1.2.2
GameSpy HTTP (GameSpy) GameSpyHTTP/1.0
Gigabot (Gigablast) Gigabot/2.0
Googlebot/(Google) Googlebot/2.1 (http://www.google.com/bot.html[collegamento interrotto])
Googlebot alternativo Mozilla/5.0 (compatibile; googlebot/2.1; http://www.google.com/bot.html[collegamento interrotto])
Googlebot-Image (Google) Googlebot-Image/1.0
Grub (uso pubblico, proprietario LookSmart) Mozilla/4.0 (compatible; grub-client-1.4.3; Crawl your own stuff with http://grub.org) Mozilla/4.0 (compatible; grub-client-2.3)
Inktomi Slurp (superato da Yahoo! Slurp) Mozilla/3.0 (Slurp/si; slurp@inktomi.com; https://web.archive.org/web/20040213105442/http://www.inktomi.com/slurp.html)
Msnbot (Microsoft MSN Search) msnbot/1.0 (http://search.msn.com/msnbot.htm[collegamento interrotto])
Scooter (AltaVista) Scooter-3.2.EX
Wget (pubblico) Wget/1.9
Yahoo! Slurp (Yahoo! Search) Mozilla/5.0 (compatible; Yahoo! Slurp;https://help.yahoo.com/help/us/ysearch/slurp)

Mozilla/5.0 (compatible; Yahoo! Slurp China; https://web.archive.org/web/20060409064958/http://misc.yahoo.com.cn/help.html)

Yahoo-MMCrawler (Yahoo! Search) Yahoo-MMCrawler/3.x (mms dash mmcrawler dash support at yahoo dash inc dot com)

Voci correlate