Come impedire a bot e software automatizzati di scansionare il mio sito per dati/immagini senza bloccare i motori di ricerca

TL;DR: aggiungendo regole nel tuo file robots.txt e usando una trappola honeypot (come in questo esempio: Use a simple bottrap to block bad bots)

Se assumiamo che i bot seguiranno le tue regole robots.txt, dovresti creare un file robots.txt nella tua directory principale e aggiungere il seguente:

User-agent: Googlebot
Disallow:
User-agent: googlebot-image
Disallow:
User-agent: googlebot-mobile
Disallow:
User-agent: bingbot
Disallow:
User-agent: MSNBot
Disconosci:
User-agent: Slurp
Disallow:
User-agent: *
Disallow: /

Questo impedirà a tutti gli spider (oltre a quelli esplicitamente elencati sopra) di scansionare il tuo sito web.

Tuttavia, se uno spider non rispetta le regole del tuo robots.txt, dovresti creare uno script per rilevare i browser automatici. Come farlo? Beh, ci sono diverse cose che i crawler hanno in comune (in generale) ma che i visitatori reali non hanno:

  1. Il numero di richieste al secondo al vostro sito web è molto più alto di un tipico visitatore
  2. Seguiranno qualsiasi link che incontrano
  3. Di solito non hanno javascript attivato, per ragioni di prestazioni. Tuttavia, non fatevi ingannare perché alcuni di loro potrebbero usare un browser headless (come PhantomJS)
  4. Di solito hanno alcune intestazioni specifiche (o ne mancano), a differenza dei browser reali (Chrome, Firefox)

Utilizzate una trappola honeypot per individuarli e bloccarli. Un buon esempio è qui: Usa un semplice bottrap per bloccare i bot cattivi

Spero che questo aiuti!