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>Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 


