БДИ   Поисковые системы Интернет   Поисковые роботы  

Как работают роботы (spiders) поисковых машин

Андрей Аликберов

Введение

Эта статья вовсе не является попыткой объяснить, как работают поисковые машины вообще (это know-how их производителей). Однако, по моему мнению, она поможет понять как можно управлять поведением поисковых роботов (wanderers, spiders, robots - программы, с помощью которых та или иная поисковая система обшаривает сеть и индексирует встречающиеся документы) и как правильно построить структуру сервера и содержащихся на нем документов, чтобы Ваш сервер легко и хорошо индексировался.

Первой причиной того, что я решился написать эту статью, явился случай, когда я исследовал файл логов доступа к моему серверу и обнаружил там следующие две строки:

lycosidae.lycos.com - - [01/Mar/1997:21:27:32 -0500] "GET /robots.txt HTTP/1.0" 404 -
lycosidae.lycos.com - - [01/Mar/1997:21:27:39 -0500] "GET / HTTP/1.0" 200 3270

то есть Lycos обратился к моему серверу, на первый запрос получил, что файла /robots.txt нет, обнюхал первую страницу, и отвалил. Естественно, мне это не понравилось, и я начал выяснять что к чему.

Оказывается, все "умные" поисковые машины сначала обращаются к этому файлу, который должен присутствовать на каждом сервере. Этот файл описывает права доступа для поисковых роботов, причем существует возможность указать для различных роботов разные права. Для него существует стандарт под названием Standart for Robot Exclusion.

По мнению Луиса Монье (Louis Monier, Altavista), только 5% всех сайтов в настоящее время имеет не пустые файлы /robots.txt если вообще они (эти файлы) там существуют. Это подтверждается информацией, собранной при недавнем исследовании логов работы робота Lycos. Шарль Коллар (Charles P.Kollar, Lycos) пишет, что только 6% от всех запросов на предмет /robots.txt имеют код результата 200. Вот несколько причин, по которым это происходит:

Формат файла /robots.txt.

Файл /robots.txt предназначен для указания всем поисковым роботам (spiders) индексировать информационные сервера так, как определено в этом файле, т.е. только те директории и файлы сервера, которые НЕ описаны в /robots.txt. Это файл должен содержать 0 или более записей, которые связаны с тем или иным роботом (что определяется значением поля agent_id), и указывают для каждого робота или для всех сразу что именно им НЕ НАДО индексировать. Тот, кто пишет файл /robots.txt, должен указать подстроку Product Token поля User-Agent, которую каждый робот выдает на HTTP-запрос индексируемого сервера. Например, нынешний робот Lycos на такой запрос выдает в качестве поля User-Agent:

	Lycos_Spider_(Rex)/1.0 libwww/3.1

Если робот Lycos не нашел своего описания в /robots.txt - он поступает так, как считает нужным. Как только робот Lycos "увидел" в файле /robots.txt описание для себя - он поступает так, как ему предписано.

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

Записи (records) файла /robots.txt

Общее описание формата записи.

[ # comment string NL ]*
User-Agent: [ [ WS ]+ agent_id ]+ [ [ WS ]* # comment string ]? NL
[ # comment string NL ]*
Disallow: [ [ WS ]+ path_root ]* [ [ WS ]* # comment string ]? NL
[
  # comment string NL
|
  Disallow: [ [ WS ]+path_root ]* [ [ WS ]* # comment string ]? NL
]*
[ NL ]+

Параметры

Описание параметров, применяемых в записях /robots.txt

[...]+ Квадратные скобки со следующим за ними знаком + означают, что в качестве параметров должны быть указаны один или несколько терминов.

Например, после "User-Agent:" через пробел могут быть указаны один или несколько agent_id.

[...]* Квадратные скобки со следующим за ними знаком * означают, что в качестве параметров могут быть указаны ноль или несколько терминов.

Например, Вы можете писать или не писать комментарии.

[...]? Квадратные скобки со следующим за ними знаком ? означают, что в качестве параметров могут быть указаны ноль или один термин.

Например, после "User-Agent: agent_id" может быть написан комментарий.

..|.. означает или то, что до черты, или то, что после.

WS один из символов - пробел (011) или табуляция (040)

NL один из символов - конец строки (015) , возврат каретки (012) или оба этих символа (Enter)

User-Agent: ключевое слово (заглавные и прописные буквы роли не играют).

Параметрами являются agent_id поисковых роботов.

Disallow: ключевое слово (заглавные и прописные буквы роли не играют).

Параметрами являются полные пути к неиндексируемым файлам или директориям

# начало строки комментариев, comment string - собственно тело комментария.

agent_id любое количество символов, не включающих WS и NL, которые определяют agent_id различных поисковых роботов. Знак * определяет всех роботов сразу.

path_root любое количество символов, не включающих WS и NL, которые определяют файлы и директории, не подлежащие индексированию.

Расширенные комментарии формата.

Каждая запись начинается со строки User-Agent, в которой описывается каким или какому поисковому роботу эта запись предназначается. Следующая строка: Disallow. Здесь описываются не подлежащие индексации пути и файлы. КАЖДАЯ запись ДОЛЖНА иметь как минимум эти две строки (lines). Все остальные строки являются опциями. Запись может содержать любое количество строк комментариев. Каждая строка комментария должна начинаться с символа # . Строки комментариев могут быть помещены в конец строк User-Agent и Disallow. Символ # в конце этих строк иногда добавляется для того, чтобы указать поисковому роботу, что длинная строка agent_id или path_root закончена. Если в строке User-Agent указано несколько agent_id, то условие path_root в строке Disallow будет выполнено для всех одинаково. Ограничений на длину строк User-Agent и Disallow нет. Если поисковый робот не обнаружил в файле /robots.txt своего agent_id, то он игнорирует /robots.txt.

Если не учитывать специфику работы каждого поискового робота, можно указать исключения для всех роботов сразу. Это достигается заданием строки


	User-Agent: *

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

Каждый поисковый робот будет определять абсолютный URL для чтения с сервера с использованием записей /robots.txt. Заглавные и строчные символы в path_root ИМЕЮТ значение.

Примеры.

Пример 1:

User-Agent: *
Disallow: /
User-Agent: Lycos
Disallow: /cgi-bin/ /tmp/

В примере 1 файл /robots.txt содержит две записи. Первая относится ко всем поисковым роботам и запрещает индексировать все файлы. Вторая относится к поисковому роботу Lycos и при индексировании им сервера запрещает директории /cgi-bin/ и /tmp/, а остальные - разрешает. Таким образом сервер будет проиндексирован только системой Lycos.

Пример 2:

User-Agent: Copernicus Fred
Disallow:
User-Agent: * Rex
Disallow: /t

В примере 2 файл /robots.txt содержит две записи. Первая разрешает поисковым роботам Copernicus и Fred индексировать весь сервер. Вторая - запрещает всем и осебенно роботу Rex индексировать такие директории и файлы, как /tmp/, /tea-time/, /top-cat.txt, /traverse.this и т.д. Это как раз случай задания маски для директорий и файлов.

Пример 3:

# This is for every spider!
User-Agent: *
# stay away from this
Disallow: /spiders/not/here/
#and everything in it
Disallow: # a little nothing
Disallow: #This could be habit forming!
# Don't comments make code much more readable!!!

В примере 3 - одна запись. Здесь всем роботам запрещается индексировать директорию /spiders/not/here/, включая такие пути и файлы как /spiders/not/here/really/, /spiders/not/here/yes/even/me.html. Однако сюда не входят /spiders/not/ или /spiders/not/her (в директории '/spiders/not/').

Некоторые проблемы, связанные с поисковыми роботами.

Незаконченность стандарта (Standart for Robot Exclusion).

К сожалению, поскольку поисковые системы появились не так давно, стандарт для роботов находится в стадии разработки, доработки, ну и т.д. Это означает, что в будущем совсем необязательно поисковые машины будут им руководствоваться.

Увеличение трафика.

Эта проблема не слишком актуальна для российского сектора Internet, поскольку не так уж много в России серверов с таким серьезным трафиком, что посещение их поисковым роботом будет мешать обычным пользователям. Собственно, файл /robots.txt для того и предназначен, чтобы ограничивать действия роботов.

Не все поисковые роботы используют /robots.txt.

На сегодняшний день этот файл обязательно запрашивается поисковыми роботами только таких систем как Altavista, Excite, Infoseek, Lycos, OpenText и WebCrawler.

Использование мета-тегов HTML.

Начальный проект, который был создан в результате соглашений между программистами некоторого числа коммерческих индексирующих организаций (Excite, Infoseek, Lycos, Opentext и WebCrawler) на недавнем собрании Distributing Indexing Workshop (W3C) , ниже.

На этом собрании обсуждалось использование мета-тегов HTML для управления поведением поисковых роботов, но окончательного соглашения достигнуто не было. Были определены следующие проблемы для обсуждения в будущем:

ROBOTS мета-теги

Этот тег предназначен для пользователей, которые не могут контролировать файл /robots.txt на своих веб-сайтах. Тег позволяет задать поведение поискового робота для каждой HTML-страницы, однако при этом нельзя совсем избежать обращения робота к ней (как возможно указать в файле /robots.txt).

<META NAME="ROBOTS" CONTENT="robot_terms">

robot_terms - это разделенный запятыми список следующих ключевых слов (заглавные или строчные символы роли не играют): ALL, NONE, INDEX, NOINDEX, FOLLOW, NOFOLLOW.

NONE - говорит всем роботам игнорировать эту страницу при индексации (эквивалентно одновременному использованию ключевых слов NOINDEX, NOFOLLOW).

ALL - разрешает индексировать эту страницу и все ссылки из нее (эквивалентно одновременному использованию ключевых слов INDEX, FOLLOW).

INDEX - разрешает индексировать эту страницу

NOINDEX - неразрешает индексировать эту страницу

FOLLOW - разрешает индексировать все ссылки из этой страницы

NOFOLLOW - неразрешает индексировать ссылки из этой страницы

Если этот мета-тег пропущен или не указаны robot_terms, то по умолчанию поисковый робот поступает как если бы были указаны robot_terms= INDEX, FOLLOW (т.е. ALL). Если в CONTENT обнаружено ключевое слово ALL, то робот поступает соответственно, игнорируя возможно указанные другие ключевые слова.. Если в CONTENT имеются противоположные по смыслу ключевые слова, например, FOLLOW, NOFOLLOW, то робот поступает по своему усмотрению (в этом случае FOLLOW).

Если robot_terms содержит только NOINDEX, то ссылки с этой страницы не индексируются. Если robot_terms содержит только NOFOLLOW, то страница индексируется, а ссылки, соответственно, игнорируются.

KEYWORDS мета-тег.

<META NAME="KEYWORDS" CONTENT="phrases">

phrases - разделенный запятыми список слов или словосочетаний (заглавные и строчные символы роли не играют), которые помогают индексировать страницу (т.е. отражают содержание страницы). Грубо говоря, это те слова, в ответ на которые поисковая система выдаст этот документ.

DESCRIPTION мета-тег.

<META NAME="DESCRIPTION" CONTENT="text">

text - тот текст, который будет выводиться в суммарном ответе на запрос пользователя к поисковой системе. Сей текст не должен содержать тегов разметки и логичнее всего вписать в него смысл данного документа на пару-тройку строк.

Предполагаемые варианты исключения повторных посещений с помощью мета-тегов HTML

Некоторые коммерческие поисковые роботы уже используют мета-теги, позволяющие осуществлять "связь" между роботом и вебмастером. Altavista использует KEYWORDS мета-тег, а Infoseek использует KEYWORDS и DESCRIPTION мета-теги.

Индексировать документ один раз или делать это регулярно?

Вебмастер может "сказать" поисковому роботу или файлу bookmark пользователя, что содержимое того или иного файла будет изменяться. В этом случае робот не будет сохранять URL, а броузер пользователя внесет или не внесет это файл в bookmark. Пока эта информация описывается только в файле /robots.txt, пользователь не будет знать о том, что эта страница будет изменяться.

Мета-тег DOCUMENT-STATE может быть полезен для этого. По умолчанию, этот мета-тег принимается с CONTENT=STATIC.

<META NAME="DOCUMENT-STATE" CONTENT="STATIC">
<META NAME="DOCUMENT-STATE" CONTENT="DYNAMIC">

Как исключить индексирование генерируемых страниц или дублирование документов, если есть зеркала сервера?

Генерируемые страницы - страницы, порождаемые действием CGI-скриптов. Их наверняка не следует индексировать, поскольку если попробовать провалиться в них из поисковой системы, будет выдана ошибка. Что касается зеркал, то негоже, когда выдаются две разные ссылки на разные сервера, но с одним и тем же содержимым. Чтобы этого избежать, следует использовать мета-тег URL с указанием абсолютного URL этого документа (в случае зеркал - на соответствующую страницу главного сервера).

<META NAME="URL" CONTENT="absolute_url">

Источники

  1. Charles P.Kollar, John R.R. Leavitt, Michael Mauldin, Robot Exclusion Standard Revisited, www.kollar.com/robots.html

  2. Martijn Koster, Standard for robot exclusion, info.webcrawler.com/mak/projects/robots/robots.html
БДИ   Поисковые системы Интернет   Поисковые роботы  

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution