Исключение пауков и роботов

Веб-роботы - это программы, которые автоматически проходят по всей гипертекстовой структуре, вызывая документ и рекурсивно вызывая все документы, на которые он ссылается. Одной из распространенных задач роботов является индексация узла.

Пауки - это программы, которые автоматически проходят по всей гипертекстовой структуре, сохраняя ее на локальный диск пользователя для дальнейшего оффлайнового просмотра. Принципиально они ничем не отличаются от роботов.

Данная статья объяснит, как контролировать поведение роботов и пауков на вашем узле. Для краткости я буду называть роботов и пауков одним словом - роботы.

Исключение роботов

Протокол исключения роботов позволяет веб-администраторам указывать роботам, какие части узла им запрещено посещать. Когда робот посещает узел, он прежде всего запрашивает файл robots.txt в корневом каталоге.

Если робот найдет этот файл, то он проанализирует его содержимое для определения доступных и запретных документов. Настройка файла robots.txt позволяет управлять как поведением конкретных роботов, так и всеми роботами сразу.

Расположение файла robots.txt

Данный файл должен находиться непосредственно в корневом каталоге узла, т.е. HTTP запрос будет иметь вид:

GET /robots.txt

где под узлом подразумевается HTTP сервер, работающий на определенном хосте и порте. Приведу примеры правильных расположений файла (в первых трех случаях это один и тот же файл, а в последнем случае - другой):

http://www.webclub.ru/robots.txt
http://www.webclub.ru:80/robots.txt
http://webclub.ru/robots.txt
http://www.webclub.ru:8080/robots.txt

Обратите внимание, что узел может иметь только один файл "/robots.txt". Размещение файла в каталогах пользователей не имеет смысла. Поэтому вам придется объединять все в одном файле. Если вы этого не хотите делать, пользователи могут воспользоваться META тэгом "Robots".

Примите также во внимание, что URL чуствительны к регистру - "/robots.txt" должен состоять из строчных букв.

Приведу пример неправильных файлов robots.txt:

http://www.webclub.ru/admin/robots.txt
http://www.webclub.ru/~andy/robots.txt
http://www.webclub.ru/Robots.txt
http://www.webclub.ru/ROBOTS.TXT
ftp://ftp.webclub.ru/robots.txt

Содержимое файла robots.txt

Файл "/robots.txt" выглядит примерно следующим образом:

User-agent: *
Disallow: /cgi-bin/
Disallow: /private/
Disallow: /tmp/
Disallow: /~andy/

Обратите внимание, что для каждого запрещаемого URL требуется отдельная строка с "Disallow". Вы не можете сказать "Disallow: /cgi-bin/ /tmp/". Нельзя также оставлять пустые строки в одной записи - они служат для разделения нескольких записей.

Регулярные выражения не поддерживаются ни в строке User-agent, ни в строках Disallow. Знак '*' в строке User-agent имеет специальное значение "любой робот". То есть вы не можете указывать строки типа "Disallow: /tmp/*" или "Disallow: *.gif".

Также необходимо помнить, что строка

Disallow: /texture

запретит доступ как к каталогу /texture, так и к файлам /texture.*, в то время, как строка

Disallow: /texture/

запретит доступ только к каталогу /texture.

Для исключения всех роботов со всего узла воспользуйтесь записью

User-agent: *
Disallow: /

Для разрешения полного доступа всем роботам воспользуйтесь записью

User-agent: *
Disallow:

Или создайте пустой файл "/robots.txt".

Для исключения определенной области для всех роботов воспользуйтесь записью

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /private/

Для исключения определенного робота воспользуйтесь записью

User-agent: TeleportPro
Disallow: /

Вы можете также разрешить доступ только определенному роботу:

User-agent: WebCrawler
Disallow:

User-agent: *
Disallow: /
META тэг "Robots"

В том случае, если файл "/robots.txt" вам не доступен, вы все равно можете управлять поведением роботов. Для этого вам достаточно воспользоваться META тэгом "Robots".

META тэг "Robots" позволяет авторам указать роботу, можно ли индексировать документ и можно ли собирать в нем ссылки.

META тэг "Robots" эвляется регистро-независимым.

Расположение META тэга "Robots"

Как и любой META тэг он помещается в секцию HEAD документа HTML:

<html>
<head>
<meta name="robots" content="noindex,nofollow">
<meta name="description" content="This page ....">
<title>...</title>
</head>
<body>
...

Содержимое META тэга "Robots"

Значение META тэга "Robots" содержит директивы, разделенные запятой. В настоящий момент определены директивы [NO]INDEX и [NO]FOLLOW. Директива INDEX указывает, что данную страницу можно индексировать. Директива FOLLOW указывает, что робот может следовать по ссылкам, содержащимся на данной странице. Директивы NOINDEX и NOFOLLOW имеют обратное значение. По умолчанию действуют INDEX и FOLLOW. Значения ALL и NONE устанавливают обе директивы: ALL=INDEX,FOLLOW и NONE=NOINDEX,NOFOLLOW.

Примеры:

<meta name="robots" content="index,follow">
<meta name="robots" content="noindex,follow">
<meta name="robots" content="index,nofollow">
<meta name="robots" content="noindex,nofollow">
<meta name="robots" content="all">
<meta name="robots" content="none">

Нельзя указывать повторяющиеся или конфликтующие директивы:

<meta name="Robots"
 content="INDEX,NOINDEX,NOFOLLOW,FOLLOW,FOLLOW">

Ниже приведен формальный синтаксис значения META тэга "Robots":

content    = all | none | directives
all        = "ALL"
none       = "NONE"
directives = directive ["," directives]
directive  = index | follow
index      = "INDEX" | "NOINDEX"
follow     = "FOLLOW" | "NOFOLLOW"

В заключение хочу сказать, что несмотря на все вышесказанное, ничто кроме самого HTTP-сервера не может запретить роботам ползать по всему вашему узлу. Оба этих способа исключения работают только с так называемыми "вежливыми" роботами. Хочу также заметить, что не все роботы поддерживают META тэг "Robots", хотя их процент растет.

Дополнительная информация: