logo najdou.cz

Roboti už jdou, aneb mluvíte jejich řečí?

Když k vám přijde webový crawler (označovaný také jako spider, pavouk, robot, nebo zkráceně crawler či bot), přečte si soubor robots.txt dříve, než se podívá na jinou stránku. Pomocí robots.txt zkontroluje, kam může a kam ne. Robot nebo bot vyhledá mapu stránek, která obsahuje seznam všech URL webu. Nyní prozkoumáme, co všechno boti umí a jak se dá ovlivnit jejich chování.

čtení zabere asi 30 minut

Soubor robots.txt spadá do kategorie technické SEO, ve které jde o to, aby se vyhledávače dostali ke všem důležitým stránkám. Crawler či bot prochází všechna URL. Poté vyhledávač zahájí crawling, tedy procházení obsahu. V dalším kroku přijde na řadu indexer, který si stránku rozdělí na jednotlivé části. Následuje hodnocení relevance, při kterém se rozhoduje, jestli je stránka relevantní vzhledem na zájem uživatele.

bot diagram crawlování a indexování
diagram crawlování a indexování
zdroj: Google

Aby byla stránka indexovatelná, musí být splněna následující kritéria: Indexování nesmí být zakázáno směrnicí meta robots, indexování nesmí být zakázáno směrnicí X-Robots-Tag hlavičky HTTP, adresa URL nesmí být nepřístupná robotům prostřednictvím direktivy Disallow v robots.txt

Meta tag robots je tag, který vyhledávačům říká, co mají sledovat a co ne. Do hlavičky vaší stránky lze vložit jednoduchý kód, který vám dá možnost rozhodovat o tom, jaké stránky chcete skrýt před vyhledávači a které stránky chcete, aby indexovaly a prohlížely. Meta tag je účinnější pro zakázání jednotlivých stránek.

<!DOCTYPE html>
<html><head>
<meta name=”robots” content=”noindex,nofollow” />
</head>
<body>(…)</body>
</html>

Kombinace noindex, nofollow říká vyhledávačům, aby stránku neindexovaly a nesledovaly odkazy na stránce, což znamená, že by se neměla předávat ani autorita odkazů. Pokud chcete zakázat některé části webu jako jsou například kategorie, je vhodnější použít soubor robots.txt. Jak jsem naznačil v úvodu, vyhledávače soubor robots.txt pravidelně kontrolují, aby zjistily direktivy pro procházení webové stránky. Těmto pokynům říkáme směrnice či direktivy.

Tvůrce prvního internetového vyhledávače Martijn Koster sestavil standard Robots Exclusion definující chování botů. Čtvrt století po jeho vzniku se Google protokol chystá přepracovat. Snahou bylo vyjasnit, jak mají crawlery řešit určité situace a jak mohou majitelé webových stránek nejlépe sdělit crawlerům své preference pro crawlování. Výsledný návrh rozšíření protokolu Robots Exclusion Protocol byl předložený skupině IETF.

Robotů či crawlerů existuje mnoho

Robotů či crawlerů jsou stovky, ale pro Českou republiku jsou důležití především roboti Google a Seznamu. Nejznámější roboti či boti:

  • Googlebot desktop
  • Googlebot mobile
  • Googlebot video – prochází videa na webu
  • Images Googlebot – prochází obrázky na webu
  • AdsBot – kontroluje relevanci a kvalitu reklam
  • SeznamBot – bot vyhledávače Seznam
  • Bingbot – bot vyhledávače Bing

Googlebot je obecný název pro dva typy crawlerů:

  • Googlebot desktop - desktopový crawler simuluje uživatele na počítači
  • Googlebot mobile - mobilní crawler simuluje uživatele na mobilním zařízení

Podtyp Googlebot je možné určit podle řetězce user agent v požadavku. Občas se nějaký škodlivý bot vydává za Googlebot, aby se dostal k webovým stránkám, které by ho jinak blokovaly.

K čemu je robots.txt a jak se používá

Robots.txt říká vyhledávačům, jaká jsou pravidla používání vašich webových stránek. SEO spočívá také ve vysílání správných signálů vyhledávačům a soubor robots.txt je jedním ze způsobů, jak vyhledávačům sdělit své preference procházení.

Soubor robots.txt je veřejně dostupný. Stačí přidat "/robots.txt" na konec libovolné kořenové domény, abyste viděli směrnice dané webové stránky.

Každý řádek v souboru robots.txt představuje pravidlo, kterým by se měl bot řídit. Je to nezbytné pro optimalizaci vašeho webu pro vyhledávače a u opravdu velkých webů to šetří crawl budget. Soubor robots.txt ukazuje robotům vyhledávačů, které stránky na vašem webu mohou být procházeny a indexovány, a které stránky byly z procházení vyloučeny. Robots.txt tedy určuje crawlerům vyhledávačů, ke kterým adresám URL na vašem webu se můžou dostat. Používá se hlavně k tomu, aby se zabránilo přetížení webu požadavky nebo k zabránění přístupu do citlivých míst jako je administrace.

Vyhledávač ukládá obsah robots.txt do mezipaměti, ale obvykle jej aktualizuje alespoň jednou denně. Pokud soubor změníte a chcete jej aktualizovat rychleji, můžete Google odeslat URL adresu souboru robots.txt.

Soubor robots.txt je pro vyhledávače souborem volitelných směrnic než příkazem.

Zástupné znaky v souboru robots.txt

Platné řádky souboru robots.txt se skládají z pole, dvojtečky a hodnoty. Mezery se doporučují kvůli lepší čitelnosti, jsou ale nepovinné. Mezera na začátku a na konci řádku se ignoruje. V souboru robots.txt se obvykle používají následující znaky:


* nahrazuje libovolný řetězec znaků 
$ znamená konec adresy 

Znak dolaru ( $ ) se tedy používá k zablokování určitého typu souboru. Pokud chcete třeba zablokovat procházení souborů s příponou PDF, můžete použít např:


User-agent: *
Zakázat: pdf: /*.pdf$

Znak ( $ ) říká prohlížeči, že se jedná o konec adresy URL. Toto pravidlo by tedy zakázalo soubor ve formátu PDF vase-domena.cz/soubor.pdf

Existuje také standard robots.txt verze 2.0, ve které je syntaxe rozšířená o regulární výrazy.

Podporované direktivy v souboru robots.txt

Syntaxi souboru robots.txt lze považovat za „jazyk“ souborů robots.txt. V souboru robots se obvykle setkáte s následujícími direktivami:

  • User-agent: zadáte název bota nebo řetězec user-agent, kterým se robot identifikuje, a pro kterého má platit dané omezení. Místo jména konkrétního bota můžete napsat hvězdičku na znamení že pravidla platí pro všechny roboty.
  • Disallow: zadáte, pro které vstupní stránky chcete botovi zakázat procházení (relativní cesta)
  • Allow: povolíte přístup na určitou vstupní stránku (akceptuje pouze Googlebot)
  • Request-rate: neoficiální direktiva se používá k zabránění přetížení serverů příliš velkým počtem požadavků. Usměrní bota, aby dělal pauzy při procházení (Googlebot ho nepodporuje, ale rychlost procházení lze nastavit v Google Search Console). Je také možné pro robota specifikovat časové rozmezí.
  • Sitemap: přidáte odkaz na sitemap, tedy strojově čitelný seznam všech stránek na webu.

Direktiva Disallow se může v bloku opakovat vícekrát. Stáhnutí stránky je možné povolit pomocí direktivy Allow.

Direktiva Request-rate slouží k nastavení množství dokumentů, které může robot stáhnout za danou časovou jednotku. Request-rate: 1/5s stáhne 1 dokument každých 5 sekund. Request-rate: 90/8m stáhne 90 dokumentů každých 8 minut.

Direktiva Sitemap do souboru robots.txt přidává odkaz na mapu stránek XML. Při odkazování na mapu webu ze souboru robot.txt musíte uvést celou adresu URL včetně protokolu a domény v absolutním formátu, například https://vase-domena.cz/sitemap.xml. Zápis funguje pro Google i Seznam a některé další vyhledávače. Stránky uvedené v souboru sitemap.xml jsou častěji indexovány.

Směrnice Sitemap je nezávislá na user-agent, takže roboti ji budou moci interpretovat, kamkoli ji vložíte. Obvykle se ale sitemap.xml dává na konec. Ve formátu XML můžete kromě mapy stránek přidat i další sitemapy, třeba obrázků nebo sitemapu videí.

Soubor robots.txt poskytuje pokyny pro roboty, ale nemůže je nijak vynucovat.

V souboru robots.txt musí být zadaný alespoň jeden user-agent, který slouží k identifikaci a zacílení konkrétních crawlerů.

V každé sadě direktiv může být více řádků Disallow, ale pouze jeden agent uživatele.

V direktivách pro zakázání můžete být podrobnější a zadat konkrétní stránky, adresáře, podadresáře a typy souborů.

Komentáři předchází znak ( # ) a může být umístěn na začátek řádku, nebo za direktivu na stejném řádku. Vše za ( # ) bude ignorováno. Tyto komentáře jsou určeny pro lidi.

A teď už konkrétní příklady zápisu


User-agent: user-agent
Disallow: URL, kterou chcete zakázat

V následujícím příkladu boti vůbec nic neprohledávají. Na tento zápis si ale dávejte pozor.


User-agent: *
Disallow: /
# roboti neprohledávají nic

Pokud byste například chtěli zakázat, aby crawler Googlebot měl přístup do složky admin, použili byste následující zápis. Zároveň jsou v něm dvě sitemapy, jedna pro všechna URL a druhá pro obrázky.


User-agent: Googlebot
Disallow: /admin/

Sitemap: https://vase-domena.cz/sitemap.xml
Sitemap: https://vase-domena.cz/sitemap-pictures.xml

Kdo používá redakční systém WordPress, může mít třeba takovéto nastavení:


User-agent: *
Disallow: /wp-admin/
#blokuje přístup do složky admin

Disallow: /wp-login.php 
#blokuje přístup na stránce přihlášení

Disallow: /search/
#blokuje přístup k interním stránkám výsledků vyhledávání

Disallow: *?s=* 
#blokuje přístup k interním stránkám výsledků vyhledávání

Disallow: /404-error/
#blokuje přístup na stránku 404

V dalším příkladu boti nemají povolený přístup do adresáře /admin/ s výjimkou souboru /admin/soubor.pdf. Při použití direktiv Allow a Disallow buďte opatrní. Pokud si nedáte pozor, mohou být směrnice také ve vzájemném konfliktu.


User-agent: *
Allow: /admin/soubor.pdf
Disallow: /admin/

Zástupný znak lze použít nejen k definování user-agent, ale také k porovnání adres URL. V příkladu nemají boti povolený přístup k adresám URL, které obsahují otazník ( ? ).


User-agent: *
Disallow: *?

Chcete-li označit konec URL, můžete na konci cesty použít znak dolaru ( $ ).


User-agent: *
Disallow: *.php$

Rychlost prohledávání se dá nastavit, respektuje ji dokonce bot Seznamu:


User-agent: Seznambot
Request-rate: 3/10s
# Seznambot prohledává rychlostí 3 dokumenty každých 10 sekund

User-agent: Seznambot
Request-rate: 200/1m
# Seznambot všechno prohledává rychlostí 200 URL za minutu

User-agent: Seznambot
Request-rate: 300/1h
# Seznambot prohledává rychlostí 300 dokumentů každou hodinu

User-agent: Seznambot
Request-rate: 3000/1d
# Seznambot prohledává rychlostí 3000 dokumentů každý den

User-agent: Seznambot
Request-rate: 5/10s 1100-1400
# Od 11 do 14 stáhne Seznambot 5 dokumentů každých 10 sekund

#         __
#     _  |@@|
#    / \ \--/ __
#    ) O|----|  |   __
#   / / \ }{ /\ )_ / _\
#   )/  /\__/\ \__O (__
#  |/  (--/\--)    \__/
#  /   _)(  )(_
#     `---''---`

Dodavatelé e-shopu nebo redakčního systému používají různé zápisy URL a je potřeba upravit si robots.txt tak, aby se roboti věnovali stránkám, které jsou důležité a chcete je dostat co nejdříve do výsledků vyhledávání.

Nekorunovaný král redakčních systémů WordPress automaticky vytváří soubor robots.txt, ale v administraci neumožňuje jeho editaci. Můžete se podívat na tipy, jak optimalizovat soubor robots.txt pro WordPress.

Nejčastější chyby při zápisu do robots.txt

Pokud pravidlo obsahuje chybu, bude ho procházející robot ignorovat. Po změnách nebo nasazení nového souboru robots.txt doporučuji provést jeho kontrolu, abyste se ujistili, že funguje správně. Většina chyb pochází z nepochopení směrnic nebo z překlepů.

  • Vzor by měl být buď prázdný, případně začínat znakem "/" nebo znakem "*"
  • Není zadán uživatelský agent
  • Neznámá směrnice
  • Syntaxe není srozumitelná

Na co je potřeba dávat pozor při zápisu direktivy v souboru robots.txt

Při správném použití je soubor robots.txt užitečný, ale je třeba i některé věci ohlídat. Je třeba dávat pozor na blokování JavaScriptu nebo CSS, protože vyhledávače se potřebují dostat ke všem zdrojům na vašem webu, aby mohly správně vykreslovat stránky. Pokud přesměrujete uživatele pomocí JavaScriptu, ke kterému vyhledávač nemá přístup, může to být považováno za podvodnou praktiku a projevit se to na hodnocení vašeho obsahu.

Dále je třeba zvážit blokování parametrů URL. Pomocí souboru robots.txt sice můžete blokovat adresy URL obsahující určité parametry, ale ne vždy je to nejlepší postup. Lepší je řešit je v Google Search Console, protože se tam nachází více možností pro konkrétní parametry, jak nastavit preferované metody procházení. Informace můžete také umístit do fragmentu adresy URL /page#sort=price, protože vyhledávače je neprohledávají. Pokud je navíc nutné použít parametr URL, odkazy na něj by mohly obsahovat atribut rel=nofollow, aby k němu mohly přistupovat vyhledávače.

Při provádění změn v souboru robots.txt buďte opatrní: tento soubor může znepřístupnit velké části vašeho webu vyhledávačům.

Občas se někde v robots.txt projeví blokování adres URL se zpětnými odkazy, kdy zakázání adres URL v rámci souboru robots.txt zabrání průchodu odkazů na webovou stránku. To znamená, že pokud vyhledávače nemohou sledovat odkazy z jiných webových stránek, protože cílová adresa URL je zakázána, vaše webové stránky nezískají autoritu, kterou tyto odkazy předávají.

Je také potřeba hlídat si odindexování indexovaných stránek. Robots.txt brání vyhledávačům v procházení, nikoliv v indexaci. Použití funkce Disallow: totiž nezpůsobí deindexaci stránek. I když je adresa URL zablokovaná a vyhledávače stránku nikdy neprohledaly, zakázané stránky se mohou stále indexovat. Je to proto, že procesy procházení a indexování jsou do značné míry oddělené.

Hlavička X-Robots-Tag a její implementace

X-Robots-Tag je hlavička protokolu HTTP. Pomocí X-Robots-Tag můžete nejen omezit přístup k vyhledávačům prostřednictvím souboru robots.txt, ale také programově nastavit různé směrnice související s robots.txt v hlavičkách odpovědi HTTP. X-Robots-Tag je součástí hlavičky HTTP, která řídí indexování stránky jako celku a ne jen konkrétních prvků na stránce. Seznam, konkrétně jeho SeznamBot zatím hlavičku X-Robots-Tag nepodporuje. Pokud ji použijete, bude X-Robots-Tag ignorovat a stáhne celou URL.

Robots.txt je nástroj pro správu procházení, nikoli pro správu indexování. Použijte meta tags robots nebo HTTP hlavičku X-Robots-Tag, abyste zabránili indexování, a (navzdory intuici) nechte Googlebot procházet stránky, které nechcete indexovat, aby tyto direktivy viděl.Barry Adams (@badams)

X-Robots-Tag můžete přidat do odpovědí HTTP webu prostřednictvím konfiguračních souborů pro server. Výhodou použití značky X-Robots-Tag u odpovědí HTTP je, že můžete zadat směrnice pro procházení, které se použijí globálně pro celý web. Na serverech Apache můžete použít soubory .htaccess a httpd.conf. Chcete-li přidat značku X-Robots-Tag noindex, nofollow do odpovědi HTTP pro všechny soubory PDF na celém webu, přidejte do souboru .htaccess následující zápis:


<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

Pro NGINX můžete použít zápis:


location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

Jak si vytvořit bota v jazyce Python

Python je často používaný jazyk ve statistice nebo v aplikacích využívajících strojové učení a je hlavním jazykem v oblasti analýzy dat. Právě v jazyce Python si na extrakci dat z webu můžete napsat vlastního bota. K tomu je vhodný třeba výukový program Scrapy, ve kterém je možné:

  • Vytvoření nového projektu Scrapy
  • Napsání bota pro procházení webu a získávání dat
  • Exportování nascrapovaných dat pomocí příkazového řádku
  • Změna bota tak, aby rekurzivně sledoval odkazy
  • Použití argumentů bota

Nástroje na kontrolu souboru robots.txt

SEO Macroscope je open-source program, který projde web podobně jako roboti vyhledávačů. Je to asi nejkomplexnější bezplatný software pro audit webových stránek. Ukáže vám to nejdůležitější, pokud chcete zjistit stav stránek, otestovat soubor robots.txt nebo analyzovat mapu webu. Analýza klíčových slov získaných ze stránky v kombinaci s dalšími proměnnými poskytuje dobré informace pro optimalizaci stránky. Zaujme také extrakce konkrétních dat na základě selektorů CSS, výrazů XPath nebo regex tedy regulárních výrazů. SEO Macroscope hlásí stavy robots.txt, ale lze ho použít i pro jiné typy analýz, které přímo nesouvisejí s problematikou SEO. Nástroj mimo jiné umí:

  • Najde nefunkční odkazy na stránkách, interní i externí
  • Kontroluje problémy s kanonickými a hreflang hlavičkami
  • Provádí kontroly technické optimalizace u názvů a popisů
  • Hlásí nejrychlejší či nejpomalejší stránky
  • Analyzuje řetězce přesměrování
  • Používá filtry k ověření sledovacích značek
  • Používá selektory CSS, dotazy XPath a regex k prohledávání
  • Generuje a exportuje mapy stránek XML
  • Umí také scrapovat obsah

Před kontrolou stránky je vhodné přejít do nabídky Edit > Preferences a nakonfigurovat program výběrem optimálního nastavení pro analyzovanou stránku. Chcete-li spustit kontrolu stránky, jednoduše zadejte adresu URL do pole Start URL. Získaná data lze exportovat do souboru a další analýzu provést např. pomocí Microsoft Excel. Export dat ze SEO Macroscope je vhodné provádět do formátu CSV, je totiž méně náročný a při importu můžete definovat pravidla.

Nezapomeňte občas sledovat, zda se v souboru robots.txt nevyskytly nějaké problémy nebo změny. Správné řízení crawlování vašich webových stránek patří k základům technického SEO.

SEO specialisty oblíbený Yandex Webmaster nepotřebuje autorizovat a prokazovat práva pro web, nástroj nabízí okamžité ověření souboru robots.txt na Yandex Webmaster > Tools > Robots.txt analysis. Není také třeba vkládat jednotlivé stránky, celý seznam stránek lze zkontrolovat v rámci jedné relace.

Pro kontrolu se často používá testovací nástroj robots.txt od technical seo. Zjistíte, jestli je adresa URL blokována, který příkaz ji blokuje a pro kterého robota. Na výběr je celá řada v praxi používaných botů. Můžete také zkontrolovat, zda jsou zakázány zdroje stránky (CSS, JavaScript, nebo třeba obrázky).

Nástroj na testování robots.txt od Google se používá, když chcete mít jistotu, jak testovaný soubor vidí Googlebot.

A na závěr

Jak vidíte, práce s boty je zajímavá a někdy i zábavná. Při práci na dobře udržovaném webu, který je neustále rozvíjen či aktualizován, je vhodné uchovávat nezpracované protokoly webového serveru (logu) a provádět audit webu včetně analýzy protokolů serveru minimálně několikrát ročně. Technické SEO může být poměrně složité, ale meta tagů robotů se nemusíte bát.

aktualizace 18. října 2019