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.
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 SourceMozilla, 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.
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)
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
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)
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