Roboty internetowe przez cały czas przemierzają internet, analizując, archiwizując oraz indeksując znalezione zasoby. Administrator serwisu WWW może w pewnym stopniu kontrolować zachowanie robotów odwiedzających jego witrynę. Umożliwiają to pliki robots.txt oraz sitemap.xml. Pierwszy z nich, robots.txt, pozwala na blokowanie dostępu do wybranych podstron serwisu dla konkretnych robotów. Drugi, sitemap.xml, zachęca roboty do szybszego i dokładniejszego indeksowania.
Roboty internetowe, nazywane w anglojęzycznej
literaturze web crawler, web spider
czy web robot, to programy komputerowe
automatycznie przeszukujące zasoby sieci WWW.
Wędrują one po sieci WWW, pobierając adresy
kolejnych stron do odwiedzenia z hiperłączy
znalezionych w dokumentach. Robot, który trafi na
stronę główną witryny zawierającej kod:
...
...
pozna adresy podstron: {stala}lorem.html{/stala}, {stala}ipsum.html{/stala}
i {stala}dolor.html{/stala}. W następnym etapie pobierze wymienione
trzy dokumenty i przeanalizuje je. Wyszuka
wszystkie występujące w nich hiperłącza, a znalezione
adresy doda do listy stron, które zostaną
przeszukane w następnym etapie.
W ten sposób robot internetowy, rozpoczynając wędrówkę od
strony głównej, może wędrować po wszystkich
podstronach serwisu, a także – w przypadku
hiperłączy prowadzących do innych witryn – przemieszczać
się pomiędzy różnymi domenami.
Każdy bot jest identyfikowany poprzez nazwę przekazywaną
w parametrze User-Agent protokołu HTTP:
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Zatem dostęp do stron serwisu możemy blokować
wybranym robotom na podstawie ich nazwy
(obszerna baza danych z nazwami robotów jest
dostępna pod adresem http://www.user-agents.org, nazwy robotów Google są zawarte w ramce).
Zadania realizowane przez robota mogą być
różne: od utworzenia kopii serwisu, przez audyt
i walidację aż po utworzenie indeksu podstron na
potrzeby wyszukiwarki. Bez wątpienia najważniejszą
grupą są roboty wyszukiwarek internetowych,
odpowiedzialne za indeksację witryny.
Google,
Onet, Yahoo, WP – wszystkie wyszukiwarki
dysponują własnymi robotami, które bezustannie
przeszukują internet i uaktualniają bazę z danymi
wyszukiwania. To, na ile witryna jest przyjazna
robotom wyszukiwarek, może mieć zatem ogromny
wpływ na jej pozycjonowanie.
Roboty Google
Googlebot – przemierza strony uwzględniane
w indeksie witryn internetowych i Google
News
Googlebot-Mobile – przemierza strony
uwzględniane w indeksie witryn komórkowych
Googlebot-Image – przemierza strony
uwzględniane w indeksie grafiki
Mediapartners-Google – przemierza strony
w celu ustalenia treści AdSense. Ten robot jest
stosowany tylko do przemierzania witryn, w
których wyświetlane są reklamy AdSense.
Adsbot-Google – przemierza strony w celu
oceny jakości strony docelowej AdWords. Ten
robot jest stosowany tylko do indeksowania
witryn reklamowanych w programie Google
AdWords. Dodatkowe informacje o tym robocie
i sposobach blokowania mu dostępu do
części witryny.
Dwie podstawowe techniki ułatwiania dostępu
do podstron witryny robotom wyszukiwarek to czytelne
hiperłącza i strona z mapą witryny. Metody
te warto wzbogacić o pliki {stala}robots.txt{/stala} oraz {stala}sitemap.xml{/stala}. W ten sposób zyskamy dodatkowe możliwości
poinformowania robotów o pełnej zawartości serwisu.
Ułatwi to indeksację nowych podstron oraz
aktualizację danych stron już zaindeksowanych.
Plik robots.txt
Plik robots.txt pozwala na zablokowanie dostępu
do stron WWW robotom internetowym. Należy
go umieścić w folderze głównym serwisu WWW.
Na przykład dla witryny {stala}http://www.example.net{/stala}
plik robots.txt powinien być dostępny pod adresem
{stala}http://www.example.net/robots.txt{/stala}.
Brak pliku {stala}robots.txt{/stala} lub plik {stala}robots.txt{/stala} o pustej
zawartości pozwalają wszystkim robotom na pełny
dostęp do wszystkich dokumentów na serwerze.
W zależności od robota, plik {stala}robots.txt{/stala} może
być pobierany w różnych odstępach czasu. Na
przykład roboty Google pobierają plik {stala}robots.txt{/stala} raz
na dobę. Datę i godzinę ostatniego pobrania pliku
{stala}robots.txt{/stala} przez robota Google możemy sprawdzić
w Narzędziach Webmastera dostarczanych przez
Google {stala}http://www.google.com/webmasters/{/stala}.
Każda domena ma oddzielny plik {stala}robots.txt{/stala}. Dla domen:
- example.net
- a.example.net
- b.example.net
roboty będą szukały plików:
- {stala}http://example.net/robots.txt{/stala}
- {stala}http://a.example.net/robots.txt{/stala}
- {stala}http://b.example.net/robots.txt{/stala}
Należy pamiętać, że robot może nie stosować
się do zaleceń zawartych w pliku robots.txt. Plik
ten nie może być traktowany jako mechanizm
zabezpieczania dostępu do tajnych danych.
Robots Exclusion Protocol
Protokół Robots Exclusion Protocol (nazywany również Robots Exclusion Standard lub robots.txt
Protocol) pozwala na ochronę zawartości całości lub fragmentów publicznie dostępnego serwisu WWW
przed robotami internetowymi.
Powstał w 1994 roku, lecz pomimo powszechnego użycia aż do dzisiaj nie doczekał się oficjalnej
specyfikacji czy dokumentu RFC. Najpełniejsze informacje dotyczące protokołu są zawarte na stronach
The Web Robots Pages pod adresem http://www.robotstxt.org/wc/robots.html.
Rozszerzenia oryginalnej składni robots.txt
Najważniejszym rozszerzeniem składni pliku
robots.txt jest dyrektywa Sitemap. Służy ona do
wskazania pliku zawierającego mapę witryny.
Parametrem dyrektywy jest adres URL mapy:
Sitemap: http://www.example.com/sitemap.xml
Dyrektywa Sitemap jest niezależna od dyrektywy
User-agent i może być obecna w dowolnym
miejscu pliku robots.txt. Na stronach wyszukiwarki
Google znajdują się informacje mówiące o tym, że
roboty Google respektują dyrektywę Sitemap.
Kolejnymi rozszerzeniami są dyrektywy
Request-rate oraz Visit-time. Pierwsza z nich ustala
maksymalne tempo, w jakim robot może przeszukiwać
cały serwis, a drugi wskazuje godziny,
w których robot może wędrować po serwisie. Na
przykład wpis:
User-agent: *
Request-rate: 1/5
Visit-time: 0600-0845
ogranicza tempo pobierania do jednej strony na
pięć sekund w godzinach pomiędzy 6:00 a 8:45.
Niestety nie jest pewne, czy powyższe dyrektywy
są respektowane przez roboty Google.
Ponadto niektóre roboty, m.in. właśnie Googlebot,
wprowadziły interpretację znaków * oraz ? w
nazwach plików i folderów.
Plik sitemap.xml
Plik sitemap.xml ułatwia indeksację witryny
WWW. Zawiera on adresy URL podstron serwisu
wraz z informacjami o dacie ostatniej modyfikacji.
Dzięki temu roboty szybciej odnajdą i zaindeksują
nowe podstrony, jakie pojawiły się w serwisie.
Plik sitemap.xml wykorzystuje format XML.
Należy stosować kodowanie utf-8, zaś wszystkie
wystąpienia znaków {html}<>&\’\”{/html} należy zastąpić
encjami:
- {html}<{/html} - {html}<{/html}
- {html}>{/html} – {html}>{/html}
- {html}&{/html} – {html}&{/html}
- \’ – {html}'{/html}
- \” – {html}"{/html}
Pojedynczy plik sitemap.xml musi być mniejszy
niż 10 MB i może zawierać co najwyżej 50 000
adresów URL. Plik z mapą witryny nie może być
umieszczony na innym serwerze ani wewnątrz
drzewa katalogów. Plik: {stala}http://www.example.net/art/new/sitemap.xml{/stala}
może wyłącznie dotyczyć adresów URL zawartych
wewnątrz: {stala}http://www.example.net/art/new/{/stala}
Nie może dotyczyć adresów z wyższego
folderu, np.: {stala}http://www.example.net/other/{/stala}
ani tym bardziej z innej domeny.
Format pliku sitemap.xml
Plik {stala}sitemap.xml{/stala} zawiera następujące elementy
XML: {stala}urlset{/stala}, {stala}url{/stala}, {stala}loc{/stala}, {stala}lastmod{/stala}, {stala}changefreq{/stala} i {stala}priority{/stala}.
Element urlset
Element {stala}urlset{/stala} jest wymagany. Obejmuje on
wszystkie adresy URL, jakie są zawarte w mapie
witryny. Atrybut xmlns ustala wersję protokołu
sitemap:
...
...
...
Element url
Element url jest wymagany. Występuje wyłącznie
wewnątrz {stala}urlset{/stala}. Opisuje on pojedynczy adres
URL. Zawiera elementy: {stala}loc{/stala}, {stala}lastmod{/stala}, {stala}changefreq{/stala}
oraz {stala}priority{/stala}.
...
...
...
...
Element loc
Element wymagany. Występuje wyłącznie
wewnątrz url. Ustala adres URL pojedynczego
wpisu mapy. Podany adres musi rozpoczynać się
od przedrostka (np. http://), np.:
http://www.gajdaw.pl/nowosci.html
W adresie należy stosować encje oraz kodowanie
URL. Na przykład adres:
http://www.example.com/ümlat.php&q=name
należy zakodować jako:
http://www.example.com/%C3%BCmlat.php&q=name
Znak {html}&{/html} zapisano w postaci encji {html}&{/html} zaś
literę {html}ü{/html} zakodowano w utf-8 i przedstawiono w
postaci {html}%C3%BC{/html}. Pojedynczy adres URL musi być
krótszy niż 2048 znaków.
Składnia pliku robots.txt
Pierwotnie pliki robots.txt mogły zawierać
wyłącznie dwa rodzaje wpisów:
User-agent
Disallow
Błędem jest na przykład użycie Allow:
Allow
Co ciekawe, wpisy Allow występują w pliku
http://www.google.com/robots.txt.
Pierwszy z wpisów, User-agent, ustala nazwę
robota, np.:
User-agent: *
User-agent: Slurp
User-agent: Googlebot
Drugi wpis, Disallow, podaje nazwę pliku lub
folderu, do którego dostęp ma być zablokowany, np.:
Disallow: /
Disallow: /tmp/
Disallow: /info.html
Disallow: /me.jpg
Wpis User-agent występuje jako pierwszy, a po
nim następuje jeden lub kilka wpisów Disallow, np.:
User-agent: Googlebot
Disallow: /cgi/
Disallow: /tmp/
Disallow: /data/photos/
Disallow: /data/texts/
W pliku {stala}robots.txt{/stala} mogą występować jednolinijkowe
komentarze rozpoczynające się znakiem #
(haszmark):
# Ogolne
User-agent: *
Disallow: /
Uwaga: znak * nie jest dozwolony w ścieżkach.
Część robotów może go nie interpretować, przez
co uzyskają dostęp do zasobów, które miały być
zablokowane. Zamiast:
Disallow: /tmp/*
należy pisać:
Disallow: /tmp/
Przykładowe pliki {stala}robots.txt{/stala}
Przykład 1
Wszystkie roboty mogą odwiedzać wszystkie pliki:
User-agent: *
Disallow:
Ten sam efekt da pusty plik {stala}robots.txt{/stala} lub brak
pliku {stala}robots.txt{/stala}.
Przykład 2
Zakaz pobierania czegokolwiek przez kogokolwiek:
User-agent: *
Disallow: /
Przykład 3
Żaden robot nie może zaglądać do żadnego
z trzech folderów:
User-agent: *
Disallow: /cgi/
Disallow: /private/
Disallow: /tmp/
Przykład 4
Konkretny robot ma zakazany wstęp do konkretnego
folderu:
User-agent: Googlebot-Image
Disallow: /photos/
Przykład 5
Żaden robot nie powinien pobierać pliku {stala}file.html{/stala}:
User-agent: *
Disallow: /directory/file.html
Przykład 6
Zakaz dostępu do serwisu dla pięciu wybranych
programów kopiujących całe witryny WWW:
User-agent: WebStripper
Disallow: /
User-agent: WebCopier
Disallow: /
User-agent: TeleportPro
Disallow: /
User-agent: HTTrack
Disallow: /
User-agent: wget
Disallow: /
Element lastmod
Element opcjonalny. Występuje wyłącznie wewnątrz
url. Ustala datę ostatniej modyfikacji dokumentu,
którego adres URL jest podany w elemencie
url. Data powinna być w formacie W3C opisanym
w dokumencie http://www.w3.org/TR/NOTE-datetime.
W skróconej postaci (tj. bez godziny) data jest
zapisywana jako YYYY-MM-DD, np. 2007-11-02:
2007-11-02
Formatem pełnym daty jest YYYY-MM-DDTgg:
mm:ss, np. 2007-11-02T18:50:24:
2007-11-02T18:50:24
Element changefreq
Element opcjonalny. Występuje wyłącznie wewnątrz
url. Ustala częstotliwość zmian dokumentu.
Poprawnymi wartościami są:
always
hourly
daily
weekly
monthly
yearly
never
Wartość always oznacza, że dokument podlega
zmianom przy każdej próbie dostępu. Przykładowy
wpis:
daily
Element priority
Element opcjonalny. Występuje wyłącznie
wewnątrz url. Ustala umowną ważność strony względem innych podstron serwisu. Wartość
powinna być z zakresu od 0 do 1. Wartością
domyślną jest 0.5.
0.8
Przykład pojedynczego pliku z mapą witryny
Przykładowy pojedynczy plik z mapą witryny
jest przedstawiony na listingu 1, zaś tabela 2
zawiera pełne zestawienie elementów XML, które
mogą wystąpić w pliku z mapą witryny.
http://www.gajdaw.pl/nowosci.html
2007-11-02
daily
0.7
http://www.gajdaw.pl/php/pear-auth/index.html
2007-11-02
monthly
0.6
http://www.gajdaw.pl/gimp/gimp-kurs-3/index.html
2007-10-31
monthly
0.6
...
Lista map
Mapa witryny może być zapisana w jednym
pliku lub może być podzielona na wiele plików.
W przypadku podzielenia mapy witryny na wiele
plików należy przygotować indeks map witryny.
Indeks map jest plikiem XML, w którym występują
elementy: sitemapindex, sitemap, loc oraz lastmod.
Pojedynczy plik z indeksem może zawierać
informacje o 1000 map. Zatem wielkość mapy
podzielonej na wiele plików jest ograniczona do:
1 000 * 50 000 = 50 000 000 adresów URL.
Element sitemapindex
Element sitemapindex jest wymagany. Zawiera
on adresy map witryny. Atrybut xmlns ustala
wersję protokołu sitemap:
...
...
...
Element sitemap
Element sitemap jest wymagany. Występuje
wyłącznie wewnątrz sitemapindex. Opisuje on
pojedynczy plik z mapą witryny. Zawiera elementy:
loc oraz lastmod.
Element loc jest wymagany. Występuje
wyłącznie wewnątrz sitemap i ustala adres URL
pojedynczego pliku z mapą witryny.
Element lastmod jest opcjonalny. Ustala on
datę ostatniej modyfikacji podanego pliku z mapą
witryny:
http://www.example.pl/artykuly.xml
2007-10-20
Przykład mapy z indeksem
Mapa stosująca indeks składa się z wielu
plików XML. W przykładzie plikami tymi są:
{stala}sitemapindex.xml{/stala}, {stala}artykuly.xml{/stala} oraz {stala}przyklady.xml{/stala}.
W pliku {stala}sitemapindex.xml{/stala} wymieniamy wszystkie
mapy, zaś w plikach {stala}artykuly.xml{/stala} oraz {stala}przyklady.xml{/stala} wymieniamy poszczególne podstrony. Przykładowa
mapa witryny podzielona na dwa pliki jest
przedstawiona na listingu 2.
http://www.example.com/artykuly.xml
2007-10-20
http://www.example.com/przyklady.xml
2007-11-01
http://www.gajdaw.pl/art1.html
2007-11-02
daily
0.7
...
http://www.gajdaw.pl/p1.html
2007-10-25
daily
0.7
...
robots.txt + sitemap.xml = ułatwienie indeksacji witryny
Wykorzystując pliki {stala}robots.txt{/stala} oraz {stala}sitemap.xml{/stala},
ułatwiamy indeksację zawartości serwisu robotom
internetowym. W pliku {stala}robots.txt{/stala} należy umieścić
dyrektywę Sitemap wskazującą plik z mapą witryny
(lub z indeksem map):
Sitemap: http://www.example.net/sitemap.xml
Natomiast w pliku sitemap.xml umieszczamy mapę witryny:
...
Robot odwiedzający witrynę pobierze plik {stala}robots.txt{/stala}. Na jego podstawie pozna adres pliku z mapą
witryny. Po pobraniu mapy {stala}sitemap.xml{/stala}, robot uzyska
pełne informacje o podstronach witryny. Należy przy
tym pamiętać, że najważniejszy z robotów, Googlebot,
pobiera plik {stala}robots.txt{/stala} raz na dobę.