Plik robots.txt cz.2


Jesteśmy zdania, że należy blokować dostęp do strony robotom, które pracują dla mało popularnych wyszukiwarek. Proponujemy, abyś dokładnie przyjrzał się swoim statystykom odwiedzin i na tej podstawie wytypował listę robotów, które odwiedzają Twoją stronę. Dodatkowo uzupełnij ją o te roboty, które są dla Ciebie ważne i których potrzebujesz ze względu na specyfikę witryny. Następnie zablokują całą resztę.

Przydatne informację na temat robotów i ich bytności na stronie znajdziesz w swoich statystykach. To, jakie roboty Cię odwiedzają i ile pobierają danych, możesz sprawdzić między innymi w systemie statystyk o nazwie AWStats — awstats.sourceforge.net. System jest darmowy, a do jego instalacji wymagane jest konto z dostępem do logów serwera. Warto wspomnieć o tym, że AWStats jest oferowany przez wielu dostawców internetu jako główny system statystyk na ich serwerach.

tmpf194-1Rysunek przedstawia fragment statystyk generowanych przez AWStats, w którym widzimy podsumowanie pracy robotów w okresie jednego miesiąca na jednej z naszych przykładowych stron.

W pierwszej kolumnie znajdziesz nazwę robota. Natomiast trzecia kolumna prezentuje informację o tym, ile danych pobrał konkretny robot. Zwróć uwagę na to, że w naszym przykładzie ponad 100 MB pobrał robot o nazwie Magpie. Dzięki danym dostępnym na stronie spiders.pl/baza-browse.php możemy się dowiedzieć, że robot ten należy do strony blueberry.co.uk, która nie jest nam do niczego potrzebna. Wniosek jest prosty: blokujemy robota, dodając następujący wpis do pliku robots.txt:

User-agent: magpie
Disallow: /

Podobnie możemy postąpić z kilkoma innym robotami widocznymi na liście.

Wiele robotów, których obecności na stronie sobie nie życzymy, niestety nie zwraca uwagi na plik robots.txt i w takim przypadku należy im zablokować dostęp. Jak to zrobimy, zależy od możliwości kontroli serwera, na którym jest umieszczona nasza strona.

Jeżeli na serwerze mamy udostępnioną obsługę modułu Apache mod_rewrite i mamy możliwość stworzenia pliku .htaccess, to sprawa zablokowania dostępu niepożądanym robotom jest bardzo prosta. Przykładowy plik .htaccess blokujący robotom dostęp może wyglądać następująco:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond £{HTTP_USER_AGENT}    „fragment    nazwy    robota”    [OR]

RewriteCond *{HTTP_USER_AGENT}    „fragment    nazwy    robota”    [OR]

RewriteCond ${HTTP_USER_AGENT}    „fragment    nazwy    robota”    [OR]

RewriteCond £{HTTP_USER_AGENT}    „ostatni fragment nazwy    robota”
RewriteRule .* – [F]

Zablokowanie robotów w ten sposób działa tak, że analizowany jest user agent odwiedzającego i jeżeli zawiera on w sobie ciąg zdefiniowany w poleceniach, to wysyłamy nagłówek 403 (Forbidden). Zdarza się, że niepożądani odwiedzający nie przedstawiają się w sposób łatwy do identyfikacji albo w ogóle pole user_agent jest puste. Wtedy należy zablokować dostęp określonym adresom IP. W pliku .htaccess możemy wstawić następujący kod:

<Limit GET P0ST>

Order allow.deny allow from all deny from 11.22.333.44 deny from 55.68.77.888 </Limit>

Jeżeli nasze konto hostingowe nie pozwala na powyższe rozwiązania, możemy zastosować do zablokowania robotów skrypt PHP. Przykładowy skrypt może mieć następującą formę:

$ua = $_SERVER[HTTP_USER_AGENT]:

$ip = $_SERVER[REMOTE_ADDR]:

nf ( eregi(„fragment nazwy robota”, $ua)

|| eregi(„fragment nazwy kolejnego robota”. $ua)    ,

/ / powielamy eregi

|| $ip — „blokowany numer IP”

|| $ip “ „kolejny blokowany numer IP”

/ / powielamy IP > {

header( „location: http://$ip”); II tam, skąd przyszedł, lub w otchłań headerCConnection: close”):
Powyższy skrypt należy umieścić jako pierwszą wykonywaną czynność w kodzie, zanim wyślemy cokolwiek na stronę. Przy użyciu tego skryptu nie blokujemy robotów sensu stricto, tylko wysyłamy je do samych siebie. Ten pomysł zrodził się na forum PiO – forum.optymalizacja.com.

Większość niepożądanych robotów nie honoruje regułek zawartych w pliku robots.txt.
Jedynym skutecznym sposobem na ich zablokowanie są właśnie powyższe przykłady.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *