Spesso i nostri siti subiscono la visita di user agent che servono agli scopi più disparati. Ci sono quelli buoni, che indicizzano le nostre pagine per i motori di ricerca, e quelli meno buoni, che causano solo inutile traffico o peggio ancora sono utilizzati per raccogliere indirizzi e-mail ed effettuare spamming.
ASP.NET ci viene incontro, attraverso la sua pipeline, mettendoci a disposizione la possibilità di creare facilmente HttpModule che possano intercettare, da un unico punto, le richieste alle nostre pagine.
L'HttpModule presente in questo script non fa altro che confrontare lo user agent con la lista contenuta nel web.config, bloccando quelli indesiderati:
using System; using System.Web; using System.Configuration; using System.Collections; using System.Net; namespace ASPItalia.com.Modules { public class BotStopModule : IHttpModule { // inizializzazione dell'HttpModule public void Init(HttpApplication Application) { Application.BeginRequest += new EventHandler(Application_BeginRequest); } public void Dispose() { } // intercetto ogni richiesta private void Application_BeginRequest(object objSender, EventArgs objEventArgs) { HttpContext context = HttpContext.Current; // controllo spider checkForSpiders(context); } // controllo se deve bloccare spider particolari private void checkForSpiders(HttpContext context) { // ricavo lo userAgent string browser = context.Request.UserAgent.ToLower(); try { // leggo browser bloccati da web.config string[] browsers = ConfigurationSettings.AppSettings["bots"].ToString().Split(';'); for (int i = 0; i < browsers.Length; i++) { // cerco e blocco lo useragent if (browsers<i> != String.Empty && browser.IndexOf(browsers<i>) >= 0) { context.Response.Clear(); context.Response.ClearHeaders(); context.Response.ClearContent(); context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; context.Response.End(); } } } catch {} } } }
Successivamente va poi inserito nel web.config la parte di registrazione dell'HttpModule con l'elenco dei bot da bloccare:
<configurtion> <appSettings> <add key="bots" value="teleport;ripper;wget" /> </appSettings> <system.web> <httpModules> <add name="BotStop" type="ASPItalia.com.Modules.BotStopModule, BotStopModule" /> </httpModules> </system.web> </configuration>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.