Ползающие по Web

Руководство по роботам, "паукам" и другим теневым обитателям Web.

Если у вас есть узел в сети World-Wide Web, вы, вероятно, не раз досадовали на некоего пользователя, который в быстром темпе загружает к себе один за другим десятки, а то и сотни документов. Видимо, это тот случай, когда ваш узел "посетила" программа, называемая любителями "путешествий" по Web роботом, "пауком", странником, скороходом или Web-агентом.

Роботы - это автоматизированные программы, а "пауки" (spiders) - один из видов роботов - непрерывно "ползают" по Web, "перепрыгивая" с одной страницы на другую, с целью сбора статистических данных о самой Web либо формирования централизованной базы данных с индексами содержимого Web. Такие популярные поисковые узлы Internet, как Alta Vista, Lycos, OpenText, WebCrawler и др., используют пауков для создания оглавлений Web. Это облегчает пользователям поиск всех Web-страниц, содержащих информацию, скажем, об алгоритме MD5 Message Digest Algorithm или о состоянии туризма на Канарских островах.

Пауки работают в автоматическом режиме, и один-единственный робот может за несколько минут выполнить работу, на которую человеку потребуется несколько часов. Согласно данным фирмы Digital Equipment Corp., Web-мастера которой обслуживают узел Alta Vista, модуль Scooter индексирует около 2,5 млн. Web-страниц в день. Примите во внимание эти цифры и популярность поисковых узлов Internet, и вам станет понятно, почему столь притягательны роботы.

Пауки оказывают пользователям Internet ценную услугу; без них было бы практически невозможно формировать и оперативно обновлять функциональные индексы Web. Но и у них есть свои недостатки. Они увеличивают сетевой трафик, а плохо продуманный паук может настолько интенсивно и часто обращаться к Web-узлу, что будет затруднять доступ обычным программам. К тому же индексирующие роботы, как правило, не отличают постоянных Web-страниц от временных, разве что в посещаемых ими узлах предусмотрены специальные средства для таких программ. В результате возникающий в Web-индексах беспорядок затрудняет поиск действительно необходимой вам информации.

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

Чтобы понять, как действуют роботы, полезно сперва разобраться в том, как работает браузер. В сущности браузер - это просто программа, которая в ответ на обращение пользователя посылает по Internet http-команды (HyperText Transport Protocol - протокол передачи гипертекстовых сообщений) для извлечения и вывода на экран компьютера Web-страниц. А Web-страницы в действительности представляют собой HTML-файлы (HyperText Markup Language - гипертекстовый язык описания документов) с текстом, программами форматирования и другой определяющей содержание информацией. К "другой информации" обычно относятся адреса файлов с растровыми изображениями и гипертекстовые связи с другими HTML-страницами.

Щелчок на гипертекстовой связи с удаленной Web-страницей инициирует ряд действий. Сначала браузер извлекает с текущей страницы адрес URL (Uniform Resourse Locator - унифицированный указатель ресурса) местонахождения страницы. Затем он устанавливает связь с удаленным сервером, выдает для извлечения HTML-документа http-команду GET и выводит этот документ на экран. Обычно сначала на экране появляется текст документа. Изображения хранятся под своими собственными URL, так что их можно загрузить отдельно. Связи с ними записаны в тексте документа, поэтому браузеру известно, где их найти и куда отправить.

Web-робот - это браузер с "автопилотом". Не щелчок пользователя на гипертекстовой связи, а робот загружает из сети Web-страницу и просматривает ее, чтобы обнаружить связи с другими узлами. Затем он извлекает URL и совершает по этому адресу "прыжок". Оттуда он "переносится" к другому Web-узлу и начинает описанный процесс сначала. Когда браузеру попадается узел, не содержащий связей, он возвращается назад на одну или две ступени и "перепрыгивает" по адресу, указанному в одной из обнаруженных ранее связей. Запущенный однажды робот, в работе которого используется простой рекурсивный алгоритм навигации, может покрывать огромные расстояния в киберпространстве, и, поскольку в Web ежедневно происходят изменения, маршрут робота тоже ежедневно меняется. По сути перемещение робота по Web напоминает ползание паука по паутине. Все, что ему для этого надо, - точка для старта.

Посмотрим, что же делает робот с загруженными страницами? Это зависит в первую очередь от того, для чего он был создан. В роботах, предназначенных для составления оглавлений Web, обычно применяются собственные алгоритмы подготовки обзоров по документам, входящим в громадные базы данных Web-узлов, и их оглавлений. Они также встраивают в URL индексы в соответствии со словами и фразами, обнаруженными в HTML-документах. Таким образом любой пользователь с помощью поискового узла может быстро получить список всех Web-страниц, содержащих слово, скажем "Cozumel". Одной из причин почему индексирующие роботы с огромной скоростью могут просматривать множество узлов, состоит в том, что они затрагивают лишь HTML-файлы. Им не приходится загружать изображения, поскольку в поисковых базах данных содержатся только индексы текста.

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

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

На заре Web, в 1994 г., столкнувшись с проблемами, обусловленными работой плохо "сконструированных" роботов, группа пользователей Internet в сеансах связи по электронной почте разработала неофициальный стандарт, известный как Standart for Robot Exclusion (SRE). Этот стандарт описывает протокол, позволяющий администраторам узлов запретить роботам доступ к указанным областям их Web-узлов.

Смотрите информацию на эту тему.

Одно из весьма полезных применений стандарта SRE - можно предотвратить проводимое роботами поисковых узлов индексирование временных HTML-документов, которых, возможно, уже не будет завтра в этот час. Многие Web-узлы (особенно поисковые) для удовлетворения поступающих от пользователей запросов генерируют HTML-документы на ходу. Но как только необходимость в этих документах отпадает, они удаляются. Очевидно, что наличие таких страниц в оглавлении Web вряд ли кому-то нужно. Еще один вариант использования SRE - можно ограничить роботам доступ к тем страницам, которые находятся в процессе разработки, или вообще запретить доступ к вашему узлу с помощью соответствующих команд.

Применение SRE для того, чтобы запретить или ограничить роботам доступ к узлу Web, не отличается сложностью. Вы должны лишь создать на Web-сервере файл, доступный HTTP, и присвоить ему локальный URL-указатель /robots.txt. Это текстовый файл, содержащий команды на английском языке, в которых четко указана стратегия доступа для роботов. Роботы, соответствующие SRE-стандартам, при первой связи с сервером отыскивают этот файл и жестко следуют изложенным в нем рекомендациям. Если робот не находит файла robots.txt, то в своем поведении исходит из предположения, что ваш узел целиком в его распоряжении. Заметьте, что ответственность за то, куда позволен или запрещен доступ роботам, полностью возложена на вас, администратора узла. Следует помнить также о том, что не все роботы соответствуют стандартам SRE, некоторые роботы могут игнорировать команды из файла robots.txt. К счастью, подавляющее большинство современных роботов либо согласованы со стандартами SRE, либо дорабатываются в этом направлении.

Как же выглядит файл robots.txt? Приведем пример простого файла, содержащего требование ко всем роботам держаться подальше от каталога /tmp/documents и его подкаталогов:

# Sample robots.txt file
User-agent: *
Disallow: /tmp/documents/
Первая строка - это комментарий. Вы можете поместить комментарии в любом месте такого файла, но при условии, что перед каждым будет стоять соответствующий знак. Во второй строке определяется, на каких роботов распространяется приведенная ниже стратегия доступа; "*" означает, что на всех. В третьей строке - запрет на доступ к указанному каталогу и подчиненным ему подкаталогам. В файл можно включить несколько предложений Disallow, с тем чтобы запретить доступ к двум или более каталогам.

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

# Sample robots.txt file
User-agent: *
Disallow: /tmp/documents/
Disallow: /under_construction/
User-agent: Hal-9000
Disallow:
Чтобы поставить в известность SRE-совместимых роботов о том, что они должны проигнорировать ваш узел, просто создайте файл robots.txt, содержащий следующие два предложения:
User-agents: *
Disallow: /
Увидев их, "благовоспитанный" робот немедленно отключится от этого узла и начнет поиск другого сервера. В помощь разработчикам роботов

Если у вас есть сокровенное желание самостоятельно создать Web-робот, то прежде всего ознакомьтесь с парой Web-документов под названием "Guidelines for Robot Writers" (Руководство для разработчиков роботов) и "Ethical Web Agents" (Допропорядочные Web-агенты). Их адреса (URL) вы найдете во врезке "Дополнительная информация о Web-роботах". В указанных документах даются советы, как создать "дружественные" роботы, которые не перегружали бы системные ресурсы и автоматически идентифицировались, с тем чтобы авторы могли с ними связаться, если поведение роботов некорректно. К тому же ваш робот должен быть SRE-совместимым, т.е. вести себя почтительно с посещаемыми им узлами.

Мне никак не удается найти исходный текст реально действующего робота, но я уверен, что где-то он есть. Существуют несколько книг, в которых рассказывается о том, как разработать программы для извлечения HTML-документов из Web. Они дадут вам хорошую базу для начала самостоятельного создания роботов. Одна из этих книг называется "Internet Programming" by Kris Jamsa and Ken Cope (1995, Jamsa Press). Эта хорошая и достаточно всесторонняя книга поможет вам приступить к программированию для Internet, особенно если вы работаете в Windows. Советы на будущее

В будущем число роботов, "путешествующих" по Web, возрастет. Если вы разработчик робота, то для придания ему "учтивости" твердо придерживайтесь известных стандартов и соглашений. Обратите внимание на то, чтобы запросы на HTML-документы от вашего робота не поступали к какому-то узлу сразу десятками, и не запускайте его на исполнение без особой необходимости. Если же вы - Web-администратор, позаботьтесь о наличии на вашем узле файла robots.txt, чтобы посещающие ваш узел роботы могли получить информацию о том, куда им доступ разрешен, а куда нет. Дополнительная информация о Web-роботах

Если вы хотите побольше узнать о Web-роботах и быть в курсе последних достижений в этой захватывающе интересной области, выберите в вашем браузере страницу World-Wide Web Robots, Wanderers and Spiders по адресу http://info.webcrawler.com//mak/projects/robots/robots.html. На этой странице вы найдете свежий список адресов, по которым можно получить информацию о роботах и Web-пауках. У вас будет также возможность связаться с другими страницами, заполненными полезной и интересной информацией: