Bloccare gli spider indesiderati (Spam, Russi, Cinesi) con Robots.txt e file .htaccess

I nostri siti sono accessibili da ogni parte del mondo e navigabili da qualsiasi tipo di utente. Questo è un bene, ma anche una possibile vulnerabilità o senza essere catastrofisti, potrebbe rivelarsi uno spreco di risorse (banda, server, database, etc.) nel momento in cui serviamo un “utente non desiderato” oppure un software indesiderato (spider, spam-engine, software di download dei siti, programmi di analisi, etc.).

Blocca gli spider indesiderati da robots.txt

Cosa possiamo fare per “ottimizzare” anche questo aspetto del nostro progetto internet?

Il nostro lavoro, in fondo, è anche quello di farci risparmiare energie e nel periodo di austerity in cui viviamo, ogni piccolo risparmio oggi può darci un enorme vantaggio domani.

La soluzione a questo problema è solo una: individuo gli spider/robots/crawler che non desiderati e gli blocco l’accesso (creo una sorta black-list che impedisce l’accesso al web-server ai visitatori elencati).

Tecnicamente abbiamo due alternative per fare ciò:

  1. Bloccare l’accesso tramite il file .htaccess (soluzione più sicura, ma attuabile solo su server linux e anche il livello di programmazione richiesto è un tantino più elevato)
  2. Bloccare l’accesso sfruttando il file robots.txt (soluzione un po’ meno sicura, però di facile applicazione e funziona nella maggior parte dei casi)

Trovare i nomi degli spider da inserire in black-list e da stoppare

Possiamo scoprire i robots che visitano e richiedono pacchetti di dati al nostro web-server analizzando i file di log del server (operazione pizzosa) oppure spulciando il nostro software di statistiche del server (sezione User Agent di Webalizer Version 2.01

Lista user-agent da statistiche web

Per farla ancora più semplice su questo sito http://www.user-agents.org/ abbiamo a disposizione una nutrita lista di “user-agents” (spider/bots/robots) con relative descrizioni e categorie (se si tratta di uno spider di un motore di ricerca, un software oppure un programma spam).

1] Bloccare i crawler usando l’.htaccess

Basterà aprire il nostro file .htaccess con un semplice editor testuale (il blocco note di Windows va benissimo, oppure per gli utenti Mac il TextEdit) e inserire questi comandi e salvare:

RewriteCond %{HTTP_USER_AGENT} ^NOME-ROBOT1 [NC,OR”
RewriteCond %{HTTP_USER_AGENT} ^NOME-ROBOTn
RewriteRule ^.*$ – [F”

Esempio:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [NC,OR”
RewriteCond %{HTTP_USER_AGENT} ^googlebot [NC,OR”
RewriteCond %{HTTP_USER_AGENT} ^Sogou
RewriteRule ^.*$ – [F”

Spiegazione:

  1. I vari User-Agents da bloccare vengono listati riga per riga (basta sostituire NOME-ROBOTn al nome effettivo del robots da bloccare
  2. Le varie condizioni (righe) sono connesse fra loro tramite l’operatore booleano “OR”
  3. “NC” = “no case” -> Significa che l’esecuzione sarà nella modalità case-insensitive (quindi insensibile alle maiuscole/minuscole)
  4. Il carattere “^” indica che il nome dell’User Agent deve iniziare con quella stringa di testo (quindi vengono filtrati tutti gli accessi che iniziano col nome dell’agente)
  5. “[F”” = offre allo spider l’istruzione “Forbidden” (accesso proibito)

2] Bloccare gli user-agents usando il file robots.txt

Il file robots.txt è nato appositamente per dare istruzioni ai bots che si approcciano alla scansione dei siti, è uno standard uniformemente adottato: in pratica uno spider prima di navigare il sito legge il contenuto del file robots.txt e segue le istruzioni in esso contenute.

Anche in questo caso apriamo col nostro editor di testo il file robots.txt che troviamo nella ROOT del nostro sito (se il file non esiste, lo possiamo creare tranquillamente da nuovo):

Sintassi:

User-agent: NOME-ROBOT1
User-agent: NOME-ROBOT2
User-agent: NOME-ROBOTn
Disallow: DIRECTORY _DA_BLOCCARE

Esempio:

User-agent: Googlebot-Image
User-agent: Yandex
User-agent: Slurp/2.0
Disallow: /

Spiegazione:

  1. User-agent: = indica il nome dell’agente al quale ci rivolgiamo
  2. Disallow: = significa NON accedere/indicizzare
  3. / = la root del sito (quindi l’intera directory del sito, avremmo potuto anche bloccare l’accesso solo alla directory di amministrazione “/admin” oppure solo quela relativa alle immagini “/images”)
  4. In questo esempio blocchiamo l’accesso agli spider di Google Images, Yandex (motore di ricerca Russo) e Inktomi (Hotbot-Lycos-NBCi)

Questa soluzione è pratica e veloce, ripeto non sicura al 100%, ma comunque efficacie. Per praticità allego qui la mia black-list (file Robots.txt) ideale per siti con pubblico esclusivamente italiano e mi raccomando sempre da controllare e personalizzare (il copia-incolla è una comodità ma se usato con raziocinio):

# MOTORI DI RICERCA GIAPPONESI
User-agent: moget
User-agent: ichiro
Disallow: /

# MOTORI DI RICERCA KOREANI
User-agent: NaverBot
User-agent: Yeti
Disallow: /

# MOTORI DI RICERCA CINESI
User-agent: Baiduspider
User-agent: Baiduspider-video
User-agent: Baiduspider-image
User-agent: sogou spider
User-agent: YoudaoBot
Disallow: /

# MOTORI DI RICERCA RUSSI
User-agent: Yandex
Disallow: /

Un’ultima raccomandazione: gli spider sono molto sensibili al file robots.txt, Googlebot in particolare, quindi fai molta attenzione quando usi questo strumento e inserisci solo istruzioni che sei sicuro non facciano danni, nel breve-medio e lungo termine…

Gli spider sono si ragni, ma con una memoria d’elefante!

Un abbraccio,
Michele

Scritto da    |   febbraio 1st, 2012   |   1 Commento
Michele De Capitani

One Response to Bloccare gli spider indesiderati (Spam, Russi, Cinesi) con Robots.txt e file .htaccess

Lascia un commento