Con il termine User-Agent si fa riferimento ad un software che recupera, esegue e facilita l’interazione dell’utente finale con un contenuto web o con interfacce utente che sono implementate utilizzando tecnologie web.
Alcuni esempi di User-Agent, oltre i normali browser, sono i crawler dei motori di ricerca, i dispositivi mobili ed i lettori di schermo e browser braille usati da persone non vedenti.
Quando un utente visita un sito web, una stringa di testo è inviata per fare identificare al server lo User-Agent di riferimento. 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 l’indirizzo e-mail del proprietario, in modo tale che l’amministratore del sito possa eventualmente contattarlo.
La stringa dell’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.
È possibile bloccare uno o più User-Agent inserendo una regola apposita nel file .htaccess della propria installazione.
La regola da inserire in cima al file è la seguente:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} UserAgentName [NC] RewriteRule .* - [F,L]
Al posto del valore UserAgentName bisogna inserire il nome dell’User-Agent che si desidera bloccare.
Per esempio se si vuole bloccare l’User-Agent SCspider bisognerà inserire:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} SCspider [NC] RewriteRule .* - [F,L]
È possibile anche bloccare più User-Agent contemporaneamente utilizzando la seguente regola:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(UserAgentName|UserAgentName|UserAgentName).*$ [NC] RewriteRule .* - [F,L]
Si avrà quindi ad esempio:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|Textbot|s2bot).*$ [NC] RewriteRule .* - [F,L]
Infine, può capitare a volte di dover bloccare richieste provenienti da macchine con User-Agent mancante, in questo caso bisognerà utilizzare la seguente regola:
RewriteCond %{HTTP_USER_AGENT} ^-?$ RewriteRule ^ - [F]