Jak zabránit robotům vstup na stránky

Na internetu je velké množství služeb, které využívají robota (zkráceně bota), pro procházení stránek. Takovýto robot  může být zcela neškodný a sbírat jen statistické informace (například zjišťuje jaký používáte redakční systém, zdali jste chráněni proti nějakému útoku anebo jen testuje použitý jazyk), někdy dokonce užitečný (vyhledávače používají roboty, aby zjistili co máte vlastně na stránkách), ale také potencionálně nebezpečný (hledá bezpečnostní díry, odesílá spam, sbírá emailové adresy). Každý den vaše webové stránky navštíví i desítky různých robotů. Ve většině případů jejich návštěva není nijak problémová a nemá cenu se jim bránit, ovšem za určitých okolností mohou zbytečně vytěžovat server, na kterém máte svůj web umístěný.

Klasickým příkladem jsou například cachovací pluginy redakčních systémů. Po vygenerování stránky, je část obsahu  uložena ve formě souboru anebo do databáze, aby váš redakční systém nemusel znovu generovat. Další návštěvníci, pak mají už web rychlejší. Zvláště u eshopů, se takto dají ušetřit nemalé systémové prostředky.

Problém ale nastane v okamžiku, kdy robot projde během krátké chvíle všechny vaše stránka a redakční systém či eshop na to reaguje vytvořením velkého množství nacachovaného obsahu. Ty se sice po uplynutí určité doby anebo když dojde ke změnám na stránce smažou, ale právě kvůli robotovy je vytvořeno v jeden okamžik třeba i 100 % cache webu. Za normálních okolností to mohou být třeba jen jednotky procent. Rázem tak web nabere na velikosti a to jak na disku tak i databázi.

Dalším problémem mohou být náročné výsledky vyhledávání. Roboti totiž často zkouší zadávat do formulářů různé údaje. Pokud máte eshop s desítkami tisíc položek, tak vyhledávání podle určitých parametrů a navíc klíčových slov zabere i několik vteřin. No a teď si představte, že nějaký nepořádný robot bude takto zkoušet zadávat různě věci několikrát za vteřinu. Váš web zahltí server a začne se objevovat chyba 50X (nejčastěji 503). Následně ještě dostanete od vašeho poskytovatele webhostingu informaci, že jim přetěžujete infrastrukturu a máte s tím něco dělat. No a co s tím dělat si ukážeme teď.

V první řadě je nutné zjistit, co za robota dělá neplechu. K tomu slouží takzvaný access log. Jedná se o soubor, do kterého zapisuje server všechny přístupy na vaše stránky. Najdete v něm i informace o robotovi. Stačí znát čas, anebo se prostě záznamy musíte prohrabat.

To co potřebujete zjistit je jméno robota (user agent) anebo IP adresu odkud byl vyslán. Na základě těchto informací pak můžete pomocí souboru .htaccess zakázat robotovi přístup na vaše stránky.

Pokud znáte IP adresu pak do .htaccess vložte následující řádky:

Order Deny,Allow
Deny from 255.255.0.1
Deny from 192.168.1.1

.htaccess je soubor pomocí kterého můžete ovlivnit chování serveru. Na rozdíl od zákazu například pomocí PHP ušetříte systémové prostředky.

První řádek nařizuje (Order) serveru, že pokud narazí na podmínku v Deny má zakázat přístup na server. V opačném případě (není v Deny) má přístup povolit (Allow).

Další řádky pak definují IP adresy, kterým má být přístup zamítnut. Sem pak stačí vložit IP adresy neposlušných robotů.

Tato forma je velice jednoduchá a bude fungovat na většině sdílených hostingů, které podporují .htacess.

Někdy však roboti mění postupem času IP adresy. Anebo robot může být spouštěn z více serverů. Pokud je slušný a identifikuje se pomocí user agent, můžeme mu podle jména zakázat přístup.

Například robotovi, který se jmenuje: „SbiramEmailyNaSpam 7.1 (+http://www.příklad.cz/bot.html)“ můžete zamezit přístup na web, tím že zakážete přístup komukoliv, kdo se identifikuje jako SbiramEmailyNaSpam.

Do .htaccess pak stačí vložit následující

BrowserMatchNoCase SbiramEmailyNaSpam seznam_robotu
Order Deny,Allow
Deny from env=seznam_robotu

Pomocí BrowserMatchNoCase přidáme cokoliv, co se jmenuje SbiramEmailyNaSpam do seznamu z názvem seznam_robotu

Druhý řádek známe z předchozího příkladu a ve třetím zakážeme přístup všem, kteří se nachází na našem seznam.

V případě, že potřebujeme zakázat více robotů musíme rozšířit náš seznam_robotu.

BrowserMatchNoCase SbiramEmailyNaSpam seznam_robotu
BrowserMatchNoCase RobotSpamer seznam_robotu
BrowserMatchNoCase ZlyRobot seznam_robotu
Order Deny,Allow
Deny from env=seznam_robotu

Tady jsme zakázali vstup hned třem robotům. Samozřejmě lze kombinovat jak zákaz přes IP adresu, tak i názvu, čemu se zřejmě nevyhnete, protože ti nejhorší roboti se vám rozhodně neidentifikují. Budou se maskovat za legitimní prohlížeč a ten často dokonce i měnit s každou návštěvou. Nakonec bude třeba dohledat všechny IP adresy a zakázat je.

Share Button

Tento článek byl byl přečten 2301 krát

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *