Часто задаваемые вопросы о поисковых роботах

 

Общая информация о поисковых роботах

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

Заметьте, что слово «рекурсивно» здесь не относится к конкретной реализации алгоритмов. Робот может, например, случайным образом выбирать документ который будет обработан следующим, или посещать их через значительные промежутки времени, тем неменее он считается роботом.

Обычные веб-браузеры к роботам не относятся, поскольку управляются человеком и не получают документы, на которые стоят ссылки, автоматически (за исключением картинок, скриптов и т.п.).

Поисковых роботов иногда называют пауками, Web Wanderers или Web Crawlers. Такие названия вносят некоторую путаницу, так как создаётся впечатление, что программы перемещаются по интернету самостоятельно, на манер вирусов. Это не так, робот «посещает» сайты, попросту запрашивая с них документы.

Что такое агент?

Слово «агент» имеет несколько значений. Например:

Автономные агенты

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

Интелектуальные агенты

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

Пользовательские агенты

это техническое название программ, помогающих пользователям в межсетевых взаимодействиях. Это могут быть браузеры, такие как Internet Explorer, Firefox или Opera или почтовые программы, такие как Outlook Express, Thunderbird или Qualcomm Eudora.

Что такое поисковая система?

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

Какие другие виды роботов существуют?

Существуют роботы для различных целей:

  • Индексация
  • Проверка HTML
  • Проверка ссылок
  • Проверка обновлений
  • Зеркалирование

В списке основных роботов Рунета вы можете найти информацию какой робот для чего нужен.

Что такое Роботы, Пауки, Черви?

Это все названия означают практически одно и то же, но имеют некоторые отличия:

Роботы
общее название для всего вида программ, см. выше

Пауки
то же, что и роботы, но звучит гораздо круче, поэтому больше нравится журналистам

Черви
то же, что и роботы, но в отличие от обычных роботов, являются самовоспроизводящимися

Муравьи
распределённые (пример: комариная стая), взаимодействующие между собой роботы

Не вредят ли поисковые роботы интернету?

Есть несколько причин, по которым люди считают, что роботы вредят интернету:

  • Некоторые реализации роботов могут (и такие случаи были) перегрузить сети и сервера. Это может произойти, когда робота пишет неопытный программист. В настоящее время в сети достаточно информации о создании роботов, чтобы избегать таких ошибок.
  • Роботами управляют люди, которые могут ошибиться в настройках, или попросту не подумать о последствиях своих действий. Это значит, что людям стоит быть осторожнее, а авторы роботов должны создавать программы таким образом, чтобы избежать такого рода ошибок.
  • Индексирующие роботы обычно складывают данные в централизированную базу данных, что не очень масштабируется на миллионы документов на миллионах сайтов

В то же время бОльшая часть роботов хорошо спроектирована, профессионально управляется, не создает никаких проблем и предоставляет прекрасный сервис, особенно учитывая отсутствие альтернативных решений.

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

Существуют ли книги о поисковых роботах?

Да. Для справки: если вы купите книгу по нижепреведенной ссылке, интернет-магазин заплатит автору robotstxt.org немного денег, которые пойдут на поддержание сайта. Книги преведены в алфавитном порядке.

Bots and Other Internet Beasties by Joseph Williams
Я не читал эту книгу, но слышал следующий отзыв: «Эта книга несколько разочаровала. Она претендует на звание «инструкции» по написанию роботов, но на мой взгляд это просто набор глав, написанных людьми имеющими некоторый опыт в данной области, и впоследствии собранные вмести.

Published by Pearson Education, 1996. ISBN 1575210169.

Client Programming with Perl by Clinton Wong
Сейчас эта книга уже не издается, но она есть в свободном доступе на O’Reilly Open Books Project.

Published by O’Reilly, 1997.

Internet Agents: Spiders, Wanderers, Brokers, and Bots by Fah-Chun Cheong.
Насколько я знаю, эта книга больше не издается. В ней описаны поисковые роботы, агенты для проведения коммерческих трансакций, агенты Mud (Multi-user Dungeons или Multi-user Dimensions сетевые игры, обычно текстовые) и некоторые другие роботы. В книге приведен исходный код простого веб-робота на основе libwww-perl4.

HTTP, HTML и сетевые библиотеки рассмотрены в ней слишком бегло, чтобы претендовать на роль «инструкции по написанию роботов», но в ней дано довольно много теории, и описание имеющихся реализаций. Что особенно хорошо, если у вас нет времени на самостоятельный поиск этой информации в сети.

Published by New Riders, 1995. ISBN 1–56205–463-5.

Perl & LWP by Sean M. Burke.
В книге рассказывается о том, как использовать LWP, стандартную perl-беблиотеку для работы с веб. В ней есть главы о роботах. Рекомендую.

Кстати, автор прислал мне копию на рецензию, и я соавтор LWP.

Published by O’Reilly, 2002. ISBN 0596001789

Spidering Hacks by Kevin Hemenway, Tara Calishain.
Не читал. В книге описываются пауки, LWP, robots.txt

Published by O’Reilly, 2003. ISBN: 0596005776

Где я могу найти дополнительную информацию о поисковых роботах?

На Web robots home page по адресу http://www.robotstxt.org/wc/robots.html. Последняя версия этого Ча Во находится именно там.

Кроме того много информации о роботах вы можете нати на этом сайте. Например начните с просмотра разделов Роботы Рунета и ссылки.

Индексирующие роботы

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

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

Большинство поисковых систем позволяют добавлять URL вручную. После добавления они добавляются в очередь и через некоторое время индексируются.

Иногда используются иные источники URL, например рассылки USENET, опубликованные архивы e-mail рассылок и т.д.
Сейчас архивы USENET доступны на http://groups.google.com.

Из этих источников робот выбирает URL-ы, которые потом индексирует, из них же он получает списки новых URL-ов. Особенности поведения наиболее распространенных в Рунете роботов можно посмотреть в соответствующем разделе.

Как робот решает, что ему индексировать?

Если индексирующий робот знает о существовании документа, он может решить распарсить его (разобрать, как разбирают предложения) и добавить в базу. Сам процесс зависит от конкретного робота: некоторые роботы читают только Title документов, некоторые берут первые несколько параграфов, некоторые – берут весь документ, индексируют все слова с различным весом, в зависимости от html-разметки. Некоторые разбирают мета-теги или другие специальные скрытые теги.

Надеемся, что с развитием интернета, появится больше возможностей эффективно связать мета-данные документа с самим документом. Работа в этом направлении ведется.

Как мне добавить мой сайт для индексирования?

Это зависит от поисковой системы. Многие системы размещают ссылку на добавление сайта на странице поиска или в одном из разделов сайта. Например:

Для администраторов

Как мне узнать, что на мой сайт заходил робот?

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

Если ваш сервер заности в логе user-agent-ы, можете проверить в логах необычные user-agent-ы.

И наконец, если с сайта запрашивался файл «/robots.txt», вероятно, это был робот.

Ко мне на сайт заходил робот! Что мне делать?

Хмм, в принципе ничего :-). Суть в том, что они полностью автоматические. Вам не требуется ничего делать.

Если вам кажется, что вы нашли нового робота (т.е. он не указан в списке действующих роботов и он заходит с некоторой периодичностью, напишите мне, чтобы я мог внести его в список. Но пожалуйста, не пишите мне о каждом замеченном вами роботе!

Робот чересчур быстро забирает весь мой сайт!

Такие роботы называют «скорострельными», и пользователи, просматривающие лог-файлы, обычно их сразу замечают.

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

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

В таких случаях надо сделать несколько вещей. Глваное, начните записывать информацию – когда вы это заметили, что показывают логи, что вы сделали – это поможет позже разобраться в проблеме. Далее выясните, откуда пришел робот, какие у него IP и доменное имя, и посмотрите, указаны ли они в списке действующих роботов. Если вы таким образом определили что это за робот, вы можете написать e-mail ответственному за него человеку и спросить его, что происходит. Если это не поможет, поищите у них на сайте телефоны или напишите на адрес postmaster @ домен.

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

Как мне заставить роботов держаться подальше от моего сайта?

Об этом в следующем разделе.

Стандарт исключения роботов

Почему у меня в логах появляются запросы файла robots.txt?

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

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

Не стоит писать туда html или текст, типа «Кто там?» – вероятнее всего его никто никогда не прочтет :-).

Как запретить роботам индексировать мой сайт?

Самый простой способ – поместить в /robots.txt следующие строчки:

User-agent: *
Disallow: /

Более точечные ограничения задаются также просто.

Где мне узнать как работает файл /robots.txt?

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

# /robots.txt для сайта www.example.com

User-agent: Yandex
Disallow:

User-agent: BadRobot
Disallow: /

User-agent: *
Disallow: /tmp
Disallow: /logs

Две первые строчки, начинающиеся с «#» – это комментарии.

Первый блок указывает, что робот с именем «Yandex» может индексировать все разделы сайта.

Второй блок указывает, что робот с именем «BadRobot» не должен индексировать все URL, начинающиеся с «/». Так как с «/» начинаются все URL, это попросту значит, что для него весь сайт закрыт от индексирования.

Третий блок запрещает всем остальным роботам индексировать URL, начинающиеся с /tmp или /log. «Звездочка» – это специальный символ, означающий «любой другой User-agent», но, тем не менее, вы не можете использовать в инструкциях User-agent или Disallow регулярные выражения.

Здесь часто допускают две ошибки:

  • Групповые символы не поддерживаются: вместо «Disallow: /tmp/*» пишите просто «Disallow: /tmp/».
  • Пишите только один путь в каждую Disallow-строку (в следующих версиях спецификации это может измениться).

Будет ли стандарт на robots.txt развиваться дальше?

Возможно… есть некоторое количество идей по поводу этого стандарта. Эти идеи так и не были оформлены в конкретные предложения из-за нехватки времени, или потому, что эти идеи продвигали недостаточно настойчиво. Шлите свои предложения в список рассылки разработчиков роботов.

Что если у меня нет возможности создать файл robots.txt?

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

Если вы включите в свой документ тег:

META NAME=«ROBOTS» CONTENT=«NOINDEX»

то этот документ проиндексирован не будет.

А если вы напишете:

META NAME=«ROBOTS» CONTENT=«NOFOLLOW»

робот не будет проходить по ссылкам в этом документе.

Не является ли перечисление файлов и директорий в файле robots.txt опасным?

Некоторые беспокоятся, что, перечисляя файлы и директории в файле /robots.txt, они привлекают к ним ненужное внимание. Для них два совета.

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

Проще говоря, вместо:

User-Agent: *
Disallow: /foo.html
Disallow: /bar.html

используйте:

User-Agent: *
Disallow: /norobots/

поместите в директорию “norobots” файлы foo.html и bar.html и запретите серверу отдавать список файлов, находящихся в этой директории. Теперь атакующий будет знать, что у вас есть директория “norobots”, но не сможет узнать имена файлов, находящихся там – ему придется угадывать их.

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

Этот ответ таков: файл robots.txt не предназначен для контроля доступа и не должен для него использоваться. Рассматривайте его не как замок на двери, а как табличку «не входить». Если доступ к определенным файлам на сервере нужно ограничить – используйте систему авторизации доступа. Поддержка Basic Authentication появилась в веб-серверах еще на заре веб (например, она очень просто настраивается на Apache), а если вам нужно что-то посерьезнее, используйте SSL.

Доступность

Как я могу воспользоваться услугами роботов?

Если вы имеете в виду поисковые сервисы, то сейчас в интернет их достаточно много. Например, попробуйте Яндекс или Google.

Где я могу достать робота для себя?

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

Также много проектов с открытым кодом можно найти на SourceForge.

Где я могу достать исходный код робота?

Смотрите предыдущий абзац – для некоторых общедоступных роботов может предоставляться исходный код.

Либо посмотрите libwww-perl5 – с ним идет небольшой пример.

И не забудте поискать на SourceForge.

Я пишу робота, на что мне стоит обратить особое внимание?

О, на многое. Для начала, прочитайте все материалы этого сайта, потом – отчеты с прошедших WWW-конференций, и спецификации HTML и HTTP..

Я написал робота, как мне включить его в список?

Заполните форму на странице The Web Robots Database и отправьте ее мне.