Эта проблема побудила исследователей Интернет на проведение экспериментов с автоматизированной навигацией по Сети, названной “роботами”. Веб-робот - это программа, которая перемещается по гипертекстовой структуре Сети, запрашивает документ и рекурсивно возвращает все документы, на которые данный документ ссылается. Эти программы также иногда называют “пауками”, ” странниками”, или ” червями” и эти названия, возможно, более привлекательны, однако, могут ввести в заблуждение, поскольку термин “паук” и “странник” cоздает ложное представление, что робот сам перемещается, а термин “червь” мог бы подразумевать, что робот еще и размножается подобно интернетовскому вирусу-червю. В действительности, роботы реализованы как простая программная система, которая запрашивает информацию из удаленных участков Интернет, используя стандартные cетевые протоколы.
3.1 Использование поисковых роботов
Роботы могут использоваться для выполнения множества полезных задач, таких как статистический анализ, обслуживание гипертекстов, исследования ресурсов или зазеркаливания страниц.
Рассмотрим эти задачи подробнее.
3.1.1 Статистический Анализ
Первый робот был создан для того, чтобы обнаружить и посчитать количество веб-серверов в Сети. Другие статистические вычисления могут включать среднее число документов, приходящихся на один сервер в Сети, пропорции определенных типов файлов на сервере, средний размер страницы, степень связанности ссылок и т.д.
3.1.2 Обслуживание гипертекстов
Одной из главных трудностей в поддержании гипертекстовой структуры является то, что ссылки на другие страницы могут становиться ” мертвыми ссылками” в случае, когда страница переносится на другой сервер или cовсем удаляется. На сегодняшний день не существует общего механизма, который смог бы уведомить обслуживающий персонал сервера, на котором содержится документ с сылками на подобную страницу, о том, что она изменилась или вобще удалена. Некоторые серверы, например, CERN HTTPD, будут регистрировать неудачные запросы, вызванные мертвыми ссылками наряду с рекомендацией относительно страницы, где обнаружена мертвая cсылка, предусматривая что данная проблема будет решаться вручную. Это не очень практично, и в действительности авторы документов обнаруживают, что их документы содержат мертвые ссылки лишь тогда, когда их извещают непосредственно, или, что бывает очень редко, когда пользователь cам уведомляет их по электронной почте.
Робот типа MOMSPIDER, который проверяет ссылки, может помочь автору документа в обнаружении подобных мертвых ссылок, и также может помогать в обслуживании гипертекстовой структуры. Также роботы могут помочь в поддержании содержания и самой структуры, проверяя соответствующий HTML-документ, его соответствие принятым правилам, регулярные модернизации, и т.д., но это обычно не используется. Возможно, данные функциональные возможности должны были бы быть встроены при написании окружающей среды HTML-документа, поскольку эти проверки могут повторяться в тех случаях, когда документ изменяется, и любые проблемы при этом могут быть решены немедленно.
3.1.3 Зазеркаливание
Зазеркаливание - популярный механизм поддержания FTP архивов. Зеркало рекурсивно копирует полное дерево каталогов по FTP, и затем регулярно перезапрашивает те документы, которые изменились. Это позволяет распределить загрузку между несколькими серверами, успешно справиться с отказами сервера и обеспечить более быстрый и более дешевый локальный доступ, так же как и автономный доступ к архивам. В Сети Интернет зазеркаливание может быть осуществлено с помощью робота, однако на время написания этой статьи никаких сложных средств для этого не существовало. Конечно, существует несколько роботов, которые восстанавливают поддерево страниц и сохраняют его на локальном сервере, но они не имеют средств для обновления именно тех страниц, которые изменились. Вторая проблема - это уникальность страниц, которая состоит в том, что ссылки в скопированных страницах должны быть перезаписаны там, где они ссылаются на страницы, которые также были зазеркалены и могут нуждаться в обновлении. Они должны быть измененены на копии, а там, где относительные ссылки указывают на страницы, которые не были зазеркалены, они должны быть расширены до абсолютных ссылок. Потребность в механизмах зазеркаливания по причинам показателей производительности намного уменьшается применением сложных кэширующих серверов, которые предлагают выборочную модернизацию, что может гарантировать, что кэшированный документ не обновился, и в значительной степени самообслуживается. Однако, ожидается, что cредства зазеркаливания в будущем будут развиваться должным образом.
3.1.4 Исследование ресурсов
Возможно, наиболее захватывающее применение роботов - использование их при исследовании ресурсов. Там, где люди не могут справиться с огромным количеством информации, довольно возможность переложить всю работу на компьютер выглядит довольно привлекательно. Существует несколько роботов, которые собирают информацию в большей части Интернет и передают полученные результаты базе данных. Это означает, что пользователь, который ранее полагался исключительно на ручную навигацию в Сети, теперь может объединить поиск с просмотром страниц для нахождения нужной ему информации. Даже если база данных не содержит именно того, что ему нужно, велика вероятность того, что в результате этого поиска будет найдено немало ссылок на страницы, которые, в свою очередь, могут ссылаться на предмет его поиска.
Второе преимущество состоит в том, что эти базы данных могут автоматически обновляться за определенный период времени так, чтобы мертвые ссылки в базе данных были обнаружены и удалены, в отличие от обслуживания документов вручную, когда проверка часто является спонтанной и не полной. Использование роботов для исследования ресурсов будет обсуждаться ниже.
3.1.5 Комбинированное использование
Простой робот может выполнять более чем одну из вышеупомянутых задач. Например робот RBSE Spider выполняет статистический анализ запрошенных документов и обеспечивает ведение базы данных ресурсов. Однако, подобное комбинированное использование встречается, к сожалению, весьма редко.
3.2 Повышение затрат и потенциальные опасности при использовании поисковых роботов
Использование роботов может дорого обойтись, особенно в случае, когда они используются удаленно в Интернете. В этом разделе мы увидим, что роботы могут быть опасны, так как они предъявляют слишком высокие требования к Сети.
3.2.1 Сетевой ресурс и загрузка сервера
Роботы требуют значительной пропускной способности канала сервера. Во-первых роботы работают непрерывно в течение длительных периодов времени, часто даже в течение месяцев. Чтобы ускорить операции, многие роботы делают параллельные запросы страниц с сервера, ведущие в последствии к повышенному использованию пропускной способности канала сервера. Даже удаленные части Сети могут чувствовать сетевую нагрузку на ресурс, если робот делает большое количество запросов за короткий промежуток времени. Это может привести к временной нехватке пропускной способности сервера для других пользователей, особенно на серверах с низкой пропускной способностью, поскольку Интернет не имеет никаких cредств для балансирования нагрузки в зависимости от используемого протокола.
Традиционно Интернет воспринимался как “свободный”, поскольку индивидуальные пользователи не должны были платить за его использование. Однако теперь это поставлено под сомнение, так как особенно корпоративные пользователи платят за издержки, связанные с использованием Сети. Компания может чувствовать, что ее услуги (потенциальным) клиентам стоят оплаченных денег, а страницы, автоматически переданные роботам - нет.
Помимо предъявления требований к Сети, робот также предъявляет дополнительные требования к самому серверу. В зависимости от частоты, с которой он запрашивает документы с сервера, это может привести к значительной загрузке всего сервера и снижению скорости доступа других пользователей, обращающихся к серверу. К тому же, если главный компьютер используется также для других целей, это может быть вообще неприемлемо. В качестве эксперимента автор управлял моделированием 20 параллельных запросов от своего сервера, функционирующего как Plexus сервер на Sun 4/330. Несколько минут машину, замедленную использованием паука, вообще невозможно было использовать. Этот эффект можно почувствовать даже последовательно запрашивая страницы.
Все это показывает, что нужно избегать ситуаций с одновременным запросом страниц. К сожалению, даже современные браузеры (например, Netscape) создают эту проблему, параллельно запрашивая изображения, находящиеся в документе. Сетевой протокол HTTP оказался неэффективным для подобных передач и как средство борьбы с подобными эффектами сейчас разрабатываются новые протоколы.
3.2.2 Обновление документов
Как уже было упомянуто, базы данных, создаваемые роботами, могут автоматически обновляться. К сожалению, до сих пор не имеется никаких эффективных механизмов контроля за изменениями, происходящими в Сети. Более того, нет даже простого запроса, который мог бы определить, которая из cсылок была удалена, перемещена или изменена. Протокол HTTP обеспечивает механизм “If-Modified-Since”, посредством которого агент пользователя может определить время модификации кэшированного документа одновременно с запросом самого документа. Если документ был изменен, тогда сервер передаст только его содержимое, так как этот документ уже был прокэширован.
Это средство может использоваться роботом только в том случае, если он сохраняет отношения между итоговыми данными, которые извлекаются из документа: это сама ссылка и отметка о времени, когда документ запрашивался. Это ведет к возникновению дополнительных требований к размеру и сложности базы данных и широко не применяется.
3.3 Роботы / агенты клиента
Загрузка Сети является особой проблемой, связанной с применением категории роботов, которые используются конечными пользователями и реализованы как часть веб-клиента общего назначения (например, Fish Search и tkWWW робот). Одной из особенностей, которая является обычной для этих роботов, является способность передавать обнаруженную информацию поисковым системам при перемещении по Сети. Это преподносится как усовершенствование методов исследования ресурсов, так как запросы к нескольким удаленным базам данных осуществляются автоматически. Однако, по мнению автора, это неприемлемо по двум причинам. Во-первых, операция поиска приводит к большей загрузке сервера, чем даже простой запрос документа, поэтому обычному пользователю могут быть причинены значительные неудобства при работе на нескольких серверах с большими издержками, чем обычно. Во-вторых, ошибочно предполагать, что одни и те же ключевые слова при поиске одинаково релевантны, синтаксически правильны, не говоря уже об оптимальности для различных баз данных, и диапазон баз данных полностью скрыт от пользователя. Например, запрос ” Форд и гараж ” мог бы быть послан базе данных, хранящей литературу 17-ого столетия, базе данных, которая не поддерживает булевские операторы или базе данных, которая определяет, что запросы относительно автомобилей должны начаться со слова “автомобиль: “. И пользователь даже не знает это.
Другой опасный аспект использования клиентского робота заключается в том, что как только он был распространен по Сети, никакие ошибки уже не могут быть исправлены, не могут быть добавлены никакие знания проблемных областей и никакие новые эффективные свойства не могут его улучшить, как не каждый пользователь впоследствии будет модернизировать этого робота самой последней версией.
Наиболее опасный аспект, однако - большое количество возможных пользователей роботов. Некоторые люди, вероятно, будут использовать такое устройство здраво, то есть ограничиваться некоторым максимумом ссылок в известной области Сети и в течение короткого периода времени, но найдутся и люди, которые злоупотребят им из-за невежества или высокомерия. По мнению автора, удаленные роботы не должны передаваться конечным пользователям, и к счастью, до сих пор удавалось убедить по крайней мере некоторых авторов роботов не распространять их открыто.
Даже не учитывая потенциальную опасность клиентских роботов, возникает этический вопрос: где использование роботов может быть полезно всему Интернет-сообществу для объединения всех доступных данных, а где они не могут быть применены, поскольку принесут пользу только одному пользователю.
“Интеллектуальные агенты” и ” цифровые помощники”, предназначенные для использования конечным пользователем, который ищет информацию в Интернет, являются в настоящее время популярной темой исследований в компьютерной науке, и часто рассматриваются как будущее Сети. В то же время это действительно может иметь место, и уже очевидно, что автоматизация неоценима для исследований ресурсов, хотя требуется проводить еще больше исследований для того, чтобы их сделать их использование эффективным. Простые управляемые пользователем роботы очень далеки от интеллектуальных сетевых агентов: агент должен иметь некоторое представление о том, где найти определенную информацию (то есть какие услуги использовать) вместо того, чтобы искать ее вслепую. Рассмотрим ситуацию, когда человек ищет книжный магазин; он использует “Желтые страницы” для области, в которой он проживает, находит список магазинов, выбирает из них один или несколько, и посещает их. Клиентский робот шел бы во все магазины в области, спрашивая о книгах. В Сети, как и в реальной жизни, это неэффективно в малом масштабе, и совсем должно быть запрещено в больших масштабах.
3.3.1 Плохие программные реализации роботов
Нагрузка на сеть и серверы иногда увеличивается плохой программной реализацией особенно недавно написанных роботов. Даже если протокол и ссылки, посланные роботом, правильны, и робот правильно обрабатывает возвращенный протокол (включая другие особенности вроде переназначения), имеется несколько менее очевидных проблем.
Автор наблюдал, как несколько похожих роботов управляют вызовом его сервера. В то время, как в некоторых случаях негативные последствия были вызваны людьми, использующими свой сайт для испытаний (вместо локального сервера), в остальных случаях стало очевидно, что они были вызваны плохим написанием самого робота. При этом могут произойти повторные запросы страниц в том случае, если нет никаких записей об уже запрошенных ссылках (что является непростительным), или когда робот не распознает, когда несколько ссылок синтаксически эквивалентны, например, где различаются DNS псевдонимы для одного и того же адреса IP, или где ссылки не могут быть обработаны роботом, например ” foo/bar/ ../baz.html ” является эквивалентным “foo/baz.html”.
Некоторые роботы иногда запрашивают документы типа GIF и PS, которые они не могут обработать и поэтому игнорируют.
Другая опасность состоит в том, что некоторые области Сети являются почти бесконечными. Например, рассмотрим сценарий, который возвращает страницу со ссылкой на один уровень, расположенный ниже. Он начнет, например, с ” /cgi-bin/pit / “, и продолжит с ” /cgi-bin/pit/a / “, ” /cgi-bin/pit/a/a / “, и т.д. Поскольку такие cсылки могут заманить в робота в ловушку, их часто называют “черными дырами”.