Apri le statistiche del server di un sito qualsiasi e scoprirai che una parte importante delle richieste non arriva da persone. Ci sono i motori di ricerca, i servizi di monitoraggio, le anteprime dei social, i lettori di feed. E poi ci sono gli altri: bot che copiano articoli e prezzi, che cercano pagine vulnerabili, che provano password. Il problema non è bloccare i bot: è bloccare quelli giusti.
Bot buoni e bot cattivi
| Bot utili | Bot da fermare |
|---|---|
| Motori di ricerca (Googlebot, Bingbot) | Scraper che copiano contenuti e prezzi |
| Anteprime di WhatsApp, Facebook, LinkedIn | Scanner che cercano pagine vulnerabili (/.env, /phpmyadmin, vecchi plugin) |
| Monitoraggio della disponibilità | Brute force su login e pannelli |
| Lettori di feed RSS | Bot che aggirano la cache con parametri casuali |
| Servizi che usi tu (pagamenti, spedizioni, backup) | Traffico da DDoS applicativo |
Il primo errore: fidarsi dello user agent
Ogni richiesta dichiara chi è con lo user agent. Il problema è che lo decide chi fa la richiesta: scrivere "Googlebot" nel proprio user agent è banale, ed è esattamente ciò che fanno molti scraper, perché sanno che quasi nessun sito blocca Google.
Quindi:
- bloccare per user agent funziona solo contro i bot più ingenui (quelli che si presentano come
python-requestsocurl); - fidarsi di chi si dichiara Googlebot apre la porta a chiunque si travesta da Google.
Come riconoscere il vero Googlebot
Google e Bing offrono due modi per verificare che una richiesta arrivi davvero da loro.
1. La verifica DNS inversa. Si prende l'IP, si chiede il suo nome e si controlla che finisca con googlebot.com o google.com (per Bing, search.msn.com); poi si chiede l'IP di quel nome e si controlla che coincida con quello di partenza.
host 66.249.66.1
host crawl-66-249-66-1.googlebot.com
2. Gli elenchi ufficiali di indirizzi. Google e Bing pubblicano gli intervalli di IP dei loro crawler in file aggiornati regolarmente. È il metodo più comodo da automatizzare.
Lo Shield di 1PrimeCDN scarica ogni giorno gli elenchi ufficiali di Google e Bing: gli indirizzi verificati non ricevono mai verifiche né blocchi, nemmeno con la modalità «sotto attacco» accesa. Chi si traveste da Google senza esserlo viene trattato come chiunque altro.
robots.txt non è una protezione
Il file robots.txt dice ai bot quali pagine non visitare. I motori di ricerca seri lo rispettano, e lo rispettano anche molti crawler dei servizi di intelligenza artificiale. Ma è una richiesta, non un blocco: i bot che vuoi fermare davvero lo ignorano, e a volte lo leggono proprio per scoprire le pagine che preferiresti nascondere.
Usa robots.txt per gestire l'indicizzazione, non per la sicurezza.
Come fermare i bot cattivi senza colpire le persone
Guarda il comportamento, non l'identità
Un bot si riconosce da cosa fa più che da come si presenta:
- fa molte più richieste al secondo di una persona;
- chiede solo pagine HTML, mai immagini o CSS;
- produce tanti errori (pagine inesistenti, accessi negati);
- usa parametri sempre diversi per aggirare la cache;
- prova percorsi tipici delle vulnerabilità che sul tuo sito non esistono.
Lo Shield di 1PrimeCDN assegna a ogni IP un punteggio su questi comportamenti, finestra dopo finestra. Sopra una soglia l'IP passa da una verifica; oltre, viene bloccato per un tempo limitato che raddoppia se insiste. Gli scanner, che vanno piano per non farsi notare, vengono contati su un periodo più lungo.
Usa una verifica invisibile, non un CAPTCHA
I CAPTCHA con le immagini fanno perdere clienti. La verifica di 1PrimeCDN chiede al browser di risolvere un piccolo calcolo: una persona vede una schermata per circa un secondo, poi naviga normalmente per ore. Un bot che fa migliaia di richieste dovrebbe ripetere il calcolo per ognuna, e smette di essere conveniente.
Limita le richieste per IP
Un limite di richieste al secondo per indirizzo non disturba nessuno che navighi normalmente e taglia le gambe agli scraper più aggressivi. Sulle pagine sensibili (accesso, ricerca, carrello) il limite può essere più stretto.
Blocca per paese solo se ha senso
Se il tuo pubblico è in Italia e ricevi migliaia di richieste da paesi lontani, un blocco per paese o una verifica per quei paesi riduce il rumore in un attimo. Non farlo alla cieca, però: potresti bloccare clienti in viaggio o servizi che usi, come i server del tuo fornitore di pagamenti.
Non dimenticare i bot che ti servono
Prima di stringere le regole, fai un elenco dei servizi automatici che devono raggiungere il sito: il monitoraggio, il gateway di pagamento che conferma gli ordini, il servizio di spedizioni, i backup, eventuali app. Aggiungili agli indirizzi sempre ammessi.
Su 1PrimeCDN il server d'origine del tuo sito è ammesso in automatico sulla sua zona: se il sito legge le proprie pagine attraverso la CDN, lo Shield non lo scambia per un bot.
In sintesi
- non fidarti dello user agent: verifica i crawler con gli elenchi ufficiali o la DNS inversa;
- giudica i bot da come si comportano;
- usa verifiche invisibili al posto dei CAPTCHA;
- limita le richieste per IP, di più sulle pagine sensibili;
- tieni un elenco dei servizi automatici che devono sempre passare.
Se i bot stanno già mettendo in difficoltà il sito, leggi come capire se il sito è sotto attacco o scrivici dalla pagina d'emergenza.
Vuoi un sito che regge anche sotto attacco?
1PrimeCDN mette il tuo sito dietro 8 nodi europei con cache, HTTPS e lo Shield contro bot e attacchi, a canone fisso dal 9,90 € al mese.