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