# User agent

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:" 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:
* 1.0 su Windows 95 - Microsoft Internet Explorer/4.0b1 (Windows 95)
* 1.5 su Windows NT - Mozilla/1.22 (compatible; MSIE 1.5; Windows NT)
* 2.0 su Windows 95 - Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
* 3.01 su Windows 98 - Mozilla/2.0 (compatible; MSIE 3.01; Windows 98)
* 5.0 su SunOS - Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.9 sun4u; X11)
* 5.1.7 su Mac OS 9 - Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC)
* 5.2.3 su macOS - Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
* 5.5 su Windows 2000 - Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
* 6.0 in MSN 2.5 on Windows 98 - Mozilla/4.0 (compatible; MSIE 6.0; MSN 2.5; Windows 98)
* 6.0 su Windows XP SP2 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
* 6.0 su Windows XP SP2 with .NET Framework 1.1 installed - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
* 6.0 su Windows XP Media Center Edition 2005 with .NET Framework 1.0, 1.1, and 2.0 installed- Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)
* 6.0 su Windows Server 2003 SP1 with .NET Framework 1.1 installed - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
* 7.0 beta su Windows XP - Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)
* 7.0 beta 1 su Windows XP - Mozilla/4.0 (compatible; MSIE 7.0b; Win32)
* 7.0 beta su Windows Vista - Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
* 7.0 su Windows XP SP2 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
* 8.0 su Windows XP SP3 - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
* 9.0 su Windows XP SP3 - Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
* 10.0 su Windows 764 SP1 - Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
* 11.0 su Windows 764 SP1 - Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Versioni di Mozilla Firefox:
* 1.0 (Dutch) su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0
* 1.0.4 su Ubuntu, on AMD64 - Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050512 Firefox
* 1.0.4 su FreeBSD 5.4 on i386 - Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4
* 1.0.5 su Slackware - Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5
* 1.0.6 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
* 1.0.6 su macOS Mac OS X Tiger PPC - Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
* 1.0.7 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
* 1.0.7 su macOS Mac OS X Panther PPC - Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
* 1.5b1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
* 1.5b1 su macOS Mac OS X Panther PPC - Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
* 1.5 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5
* 1.5.0.1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
* 1.5.0.1 su Windows Vista - Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
* 1.6a1 su BeOS R5 - Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20051002 Firefox/1.6a1
* 2.0a1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060321 Firefox/2.0a1
* 2.0b1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1
* 2.0b2 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1b2) Gecko/20060710 Firefox/2.0b2
* 2.0RC1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1) Gecko/20060918 Firefox/2.0
* 2.0.0.12 su Ubuntu - Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12
* 3.0.10 su Ubuntu - Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10
Versioni di Safari:
* v125 su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125
* v125 su macOS, mascherato da MSIE - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)
* v312 su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312
* 2.0 (v412) su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412
Versioni di AOL Explorer (non classic AOL 8.0, 9.0) (aggiunge "America Online Browser X.X;"):
* 1.1 - Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.1; Windows NT 5.1;)
* 1.2 - Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1;)
* 1.5 - Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1;)
Versioni di Pocket Internet Explorer:
* Microsoft Pocket Internet Explorer/0.6 - PIE 1.0 (sembra si siano scordati di cambiarlo in 1.0) 1.0.
* Mozilla/1.1 (compatible; MSPIE 2.0; Windows CE) - PIE 2.0
* Su Windows Mobile 2003 - Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
* Su Windows Mobile 2003 Second Edition, su uno smartphone Motorola MPx220 - MOT-MPx220/1.400 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
Versioni di Avant Browser:
* Primitiva versione - Advanced Browser (http://www.avantbrowser.com)
* Vecchia versione - Avant Browser (http://www.avantbrowser.com)
* Versione più recente - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; iOpus-I-M; QXW03416; .NET CLR 1.1.4322)
Versioni di Konqueror:
* 3.1-RC1 - Mozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020515)
* 3.1 (French) - Mozilla/5.0 (compatible; Konqueror/3.1; Linux 2.4.22-10mdk; X11; i686; fr, fr_FR)
Versioni di Minimo:
* 0.007 su Windows Mobile 2003 - Mozilla/5.0 (Windows; U; Windows CE 4.21; rv:1.8b4) Gecko/20050720 Minimo/0.007
Versioni di Mozilla:
* su Linux - Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511
* 1.7.12 su Gentoo Linux - Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929
Versioni di Mozilla SeaMonkey:
* 1.0b su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051219 SeaMonkey/1.0b
* 1.0 su Windows 98 - Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0
Versioni Netscape Navigator (proprietario):
* 2.02 su OS/2 con opzione "-3" - Mozilla/3.0 (OS/2; U)
* 3.0 su SunOS con sicurezza debole - Mozilla/3.0 (X11; I; SunOS 5.4 sun4m)
* 4.61 su Macintosh con sicurezza debole - Mozilla/4.61 (Macintosh; I; PPC)
* 4.61 su OS/2 con sicurezza forte - Mozilla/4.61 [en] (OS/2; U)
* 4.7 su Macintosh - Mozilla/4.7C-CCK-MCD {C-UDP; EBM-APPLE} (Macintosh; I; PPC)
* 4.8 su Windows 2000 - Mozilla/4.8 [en] (Windows NT 5.0; U)
Versioni di Netscape (basate sul codice condiviso non proprietario di Mozilla):
* 6.1 su Windows 2000 - Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1
* 7 su Sun Solaris 8 - Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020920 Netscape/7.0
* 7.1 su Windows XP - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
* 8.0.1 su Windows XP (utilizzando Gecko) - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1
* 8.0.1 su Windows XP (utilizzando MSHTML con .NET installato) - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) Netscape/8.0.1
* 8.1 su Windows XP (utilizzando Gecko con .NET installato) - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1
Versioni di NetPositive:
* 2.2 su BeOS R5 - Mozilla/3.0 (compatible; NetPositive/2.2)
Versioni di Novarra:
* Palm Web Pro 3.0.1a su Palm OS - Mozilla/4.76 [en] (PalmOS; U; WebPro/3.0.1a; Palm-Arz1)
Versioni di OmniWeb:
* 5.1.1 (v563.51) su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.51
* 5.1.2 beta 1 (v563.57) su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.57
Versioni di Opera:
* 6.03 su Windows 2000, mascherato da MSIE - Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03 [en]
* 6.03 su Mac OS 9, mascherato da MSIE - Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [en]
* 7.23 su Windows 98 - Opera/7.23 (Windows 98; U) [en]
* 8.00 su Windows XP - Opera/8.00 (Windows NT 5.1; U; en)
* 8.00 su Gentoo Linux - Opera/8.0 (X11; Linux i686; U; cs)
* 8.02 su Windows XP - Opera/8.02 (Windows NT 5.1; U; en)
* 8.50 su Windows XP - Opera/8.50 (Windows NT 5.1; U; en)
* 8.50 su Windows XP, mascherato da MSIE - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50
* 8.50 su Windows XP, mascherato da Mozilla - Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50
* 8.50 su Gentoo Linux - Opera/8.5 (X11; Linux i686; U; cs)
* 8.50 su Nokia 6630 (in Spagnolo) - Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6630/4.03.38; 6937) Opera 8.50 [es]
* 8.51 su Windows XP - Opera/8.51 (Windows NT 5.1; U; en)
* 9.00 Preview 1 on Windows 2000, cloaked as Opera - Opera/9.0 (Windows NT 5.0; U; en)
* 9.00 Preview 2 su macOS - Opera/9.00 (Macintosh; PPC Mac OS X; U; en)
Versioni di PlayStation Portable:
* 2.00 - Mozilla/4.0 (PSP (PlayStation Portable); 2.00)
Versioni di WebExplorer (based on Mosaic):
* 1.1h su OS/2, HTTP/1.0 UA - IBM-WebExplorer-DLL/v1.1h
Versioni di Camino:
* 1.0b1 su macOS - Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8) Gecko/20051107 Camino/1.0b1
Versioni di ELinks:
* 0.4pre5 su Linux - ELinks (0.4pre5; Linux 2.4.27 i686; 80x25)
Versioni di Links:
* 0.99pre14 sotto Cygwin su Windows 2000 - Links (0.99pre14; CYGWIN_NT-5.0 1.5.16(0.128/4/2) i686; 80x25)
* 2.1pre17 su Gentoo Linux - Links (2.1pre17; Linux 2.6.11-gentoo-r8 i686; 80x24)
* 2.1pre19 su Gentoo Linux using X Window System - Links (2.1pre19; Linux 2.6.14-gentoo-r5 i686; x)
Versioni di Lynx:
* 2.8.4rel.1 su Linux - Lynx/2.8.4rel.1 libwww-FM/2.14
Versioni di Off By One:
* 3.5a su Windows XP - Mozilla/4.7 (compatible; OffByOne; Windows 2000)
Versioni di w3m:
* w3m su FreeBSD - w3m/0.5.1
Versioni di Google Chrome:
* 3.0.183.1 su Arch Linux - Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.183.1 Safari/531.0
* 17.0.963.56 su Windows 7 64bit - Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
* 39.0.0.0 su Android 5.1 da smartphone Bluboo Xtouch - Mozilla/5.0 (Linux; Android 5.1; Xtouch Build/LMY47D) AppleWebKit/537.36 ((KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
Versioni di Midori:
* 0.5.9 su Ubuntu - Mozilla/5.0 (X11; Linux) AppleWebKit/538.15 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/538.15 Midori/0.5

## 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) |
| Googlebot alternativo | Mozilla/5.0 (compatibile; googlebot/2.1; http://www.google.com/bot.html) |
| 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) |
| 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) |