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.
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.