Hogyan tiltsunk ki robotokat?

Napjainkban a webes forgalmak jelentős részét robotok generálják. Ennek a forgalomnak egy részére szükségünk van, hiszen a webes keresők adatbázisába szeretnénk bejuttatni a lapunkat, tehát az indexeléshez kellenek bizonyos botok. Vannak azonban olyan automatizált rendszerek, amelyeket egyáltalán nem látunk szívesen az oldalunkon. Némelyik olyan adatot gyűjt (pl. e-mail címeket), amelyet nem feltétlenül szeretnénk egy adatbázis részeként viszontlátni, mások egyszerűen csak a szerverterhelésben okoznak problémát.

robots.txt

Mit tehetünk a rossz robotok ellen?

Első lépésként győződjünk meg róla, hogy az adott bot látogatása valóban hasztalan vagy káros számunkra. A legtöbb robot user-agent stringje tartalmaz egy URL-t, amin bővebb információt kaphatunk a robotról.

Ha a robot biztosan nemkívánatos, akkor jöhet a tiltás.

Finom kérés = robots.txt

Elvileg egy botnak minden esetben a robots.txt állomány lekérésével kell kezdenie, illetve ezt ciklikusonként ismét ellenőriznie kell. Ebben a fájlban rendelkezhetünk róla, hogy az adott bot számára nem engedélyezzük az oldalaink felderítését.

A robots.txt egy nagyon egyszerű fájl, ime egy alap példa.

User-agent: BadBot
Disallow: /

A robots.txt fájlban meghatározhatjuk sok egyéb mellett a sitemap.xml elérhetőségét („Sitemap:”) és a két látogatás közötti legkisebb időt is („Crawl-Delay:”), de ezeket a beállításokat nem minden bot veszi figyelembe.

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Crawl-Delay: 30
Sitemap: http://www.madadmin.com/sitemap.xml

User-agent: BadBot
Disallow: /

HTML fájlok esetén némely bot figyelembe veszi a „robots” meta taget is, illetve nem HTML fájloknál az „X-Robots-Tag:” HTTP fejlécben foglaltakat. Ezekről nem írok most többet, mert a mi esetünkben, ha a robots.txt nem használ, akkor ezek sem fognak.

Megemlítenék itt egy érdekes esetet. A robots.txt tartalmát a legnagyobb keresőknek is figyelembe kellene venniük. Ehhez képest van olyan lapunk, amelyen 6 éve van egy a szintaktikailag helyes robots.txt Disallow: sor, a blokkolandó oldalak HTML kódjában pedig robots meta tag noindex tartalommal, ezek ellenére is igazoltan indexelt a legnagyobb kereső néhány letiltott lapot. Kicsit a Karib tenger kalózainak kalóztörvénye jut eszembe a robots.txt-ről, ami nem is igazán törvény, inkább csak afféle útmutató…

Kidobóember = .htacccess

Ha a szerverünket terhelő bot nem értett a robots.txt fájlban leírtakból, akkor kénytelenek vagyunk más módszerrel kitiltani. Apache webszerver esetén .htaccess fájlban létrehozhatunk olyan tiltást, amely hatékonyabban tarthatja távol a kártevőket.

setenvifNoCase User-Agent "BadBot" banned

<Limit GET POST HEAD>
  order allow,deny
  allow from all
  deny from env=banned
</Limit>

A fenti példában, ha a User-agent tartalmazza a „badbot” stringet, akkor a kérést visszautasítjuk.

Ha még mindig gond van

Elképzelhető, hogy egy-egy megvadult bot a tiltást követően is folyamatosan kérésekkel bombázza a szerverünket. Ebben az esetben a szerverünk üzemeltetője felé jelezzük a problémát, aki egy tiltással orvosolhatja azt. Lehetőleg jelezzük a problémát az adott bot üzemeltetője felé is, mert a legtöbb esetben nem rossz szándék, csak egy-egy kutyaütő programozó áll a gondjaink hátterében.

Nem ejtettem most szót azokról a robotokról, amelyeket nem lehet egyszerűen, User-agent alapján azonosítani. Ezek beazonosítására és blokkolására is vannak bevált módszerek, amelyeket egy későbbi cikkben vesézek majd ki.

Hivatkozások