Как правильно настроить поисковый робот

 | 18.27

Мой Компьютер, №6, 04.02.2008

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

(Кстати, некоторое время назад у нас была опубликована статья на эту тему — Андрей Притулюк, «Что такое robots.txt?», см. МК, №42 (473) за 2007 год. Интерес читателей к ней привел к продолжению редакционных исследований на тему повышения безопасности и посещаемости сайта. — Прим. ред.)

Но самое интересное, что уже давно разработаны методы, которые позволяют указать поисковым машинам на страницы или места сайта, которые не нуждаются в индексации. Это мета-теги и файл robots.txt, и если робот или сканер работает по правилам, то технологические страницы сайта не попадут под индексацию. Если о первом начинающим веб-мастерам еще говорят на курсах и пишут в книгах, то наличие второго сохраняется в тайне. Поэтому, увидев в журнале веб-сервера запись о том, что запрашивался отсутствующий файл robots.txt («GET /robots.txt HTTP/1.0» 404 :), администратор в панике бросается за советом на форумы. По различным данным, сегодня этот файл используют приблизительно 5-6% сайтов. В остальных он либо совсем отсутствует, либо имеется, но с параметрами по умолчанию (пустыми). Хотя вполне вероятно, что большинству сайтов действительно нет нужды в ограничении доступа, но на серьезных проектах такой возможностью пренебрегать просто опасно. После того как робот пройдется по каталогу cgi-bin, можно ждать гостей. Но обо всем по порядку.

 

Назначение Robots Exclusion Protocol

Впервые вопрос о разработке механизмов, позволяющих ограничить доступ роботам к различным страницам сайта, возник приблизительно в 1993-1994 гг., когда появились первые сообщения об утечке информации. Robots Exclusion Protocol разработан в 1994 году Мартином Костером (Martijn Koster) и представляет собой стандартный протокол, который сегодня соблюдает большинство сканеров. Он содержит правила (Robot Rules) исключений для различных роботов индексации, поиска или зеркалирования веб-серверов. И, как результат, позволяет удалить из индекса весь сервер, каталог, отдельный документ или файлы с определенным расширением. Располагается такой файл в корне веб-сервера, т.е., набрав, например, адрес http://www.foo.com/robots.txt, вы должны его получить. Размещать же его в других каталогах бессмысленно, поскольку учитываться роботом он не будет. Например, http://www.foo.com/admin/robots.txt. Но для каждого порта http/https должен быть создан отдельный файл.

Робот, а также многие утилиты, позволяющие скачать весь сайт целиком, первым делом пытаются считать этот файл. При получении положительного ответа (код 2хх) производится грамматический разбор файла и в дальнейшем при работе применяются ограничения применительно к этому роботу. Если ответ сервера указывает, что ресурс не существует (код статуса 404), то робот продолжает работать без каких-либо ограничений. О поведении роботов при получении ответов, отличных от описанных выше, можно почитать в http://www.robotstxt.org/wc/norobots-rfc.html. Если ответом сервера является код 401/403 (Нет прав/Доступ запрещен), указывающий на ограничение доступа, то робот должен считать, что пытается получить доступ к полностью закрытому сайту и прекратить работу. Когда приходит ответ, говорящий о недоступности ресурса, робот откладывает визит до восстановления работоспособности сайта. При получении ответа, указывающего на переадресацию (3хх), робот должен следовать по ссылкам, до обнаружения ресурса.

Но этих рекомендаций роботы могут не придерживаться. Так, Google-бот не интерпретирует ответ 401/403 на обращение к файлу robots.txt, как запрет на сканирование страниц сайта. К сожалению, на сегодня еще многое до конца так и не решено.

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

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

 

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

Стандарт, в котором описано содержимое файла, можно найти в документах сайта http://www.robotstxt.org. Немного почитав, узнаешь, что, используя этот файл, можно также указывать для индексации конкретному роботу специально оптимизированные под него веб-страницы, а это может привести к некоторому увеличению посещаемости ресурса. Это обычный текстовый файл в LDIF-формате, он состоит из параметров и значений, разделенных между собой двоеточием. Записи не чувствительны к регистру. По одному параметру в строке.

Знак # означает комментарий, и строка далее игнорируется. Параметр User-agent указывает на специфическое имя, которое имеет любая программа-клиент, предназначенная для доступа к веб-данным. Возможна запись нескольких robot-id в одном поле, в качестве разделителя в этом случае используется пробел или табуляция. Данный параметр будет учитываться только программами-роботами, для веб-браузеров установить таким образом ограничения не получится. Например, правило для Google будет начинаться так:

User-agent: googlebot (или Googlebot, для лучшей читаемости).

Робот, найдя правило, совпадающее с его именем, будет действовать согласно установленным специально для него ограничениям, если таковые имеются. Не найдя индивидуального правила, робот решит, что для него ограничения не установлены. Если необходимо указать правила, действующие для всех роботов, используется знак звездочки *. Но если поисковый робот обнаружит в файле /robots.txt несколько записей, совпадающих с его значением robot-id, то он может выбрать любую из них. Далее прописываются ограничения с применением конструкций Disallow/Allow, пустой параметр означает отсутствие ограничений. Возможно задание двух значений в поле Disallow/Allow, но это не рекомендуется, так как в будущих спецификациях это может быть изменено.

Например:

User-agent: fast

Allow: /info/

User-agent: googlebot aspider

Disallow: /images/

Disallow: /cgi-bin/ /1251/

Disallow: /changelog.html

User-agent: *

Disallow:

При задании имени необходимо учитывать, что можно использовать как частичную, так и полную ссылку. Например, /changelog позволит исключить из индексации не только файл changelog.html и подкаталог changelog со всем содержимым, но все файлы и каталоги, имена которых начинаются с changelog. А параметр /changelog/ затронет только подкаталог changelog. Отсюда, если будет задана маска /t, то из поиска будет исключено все, что начинается с буквы t. Для удобства можно использовать регулярные выражения. Например, чтобы исключить из индексации все рисунки, используем:

Disallow: *.gif$

Динамически генерируемые страницы убираются так:

Disallow: /*?

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

Другим, более удобным при работе с отдельными страницами стандартом является использование тега <META>. С его помощью можно также указать роботам на то, что индексировать страницу не надо. Для этого в раздел <HEAD> добавьте следующую строку:

<META NAME=»ROBOTS» CONTENT=»NOINDEX, NOFOLLOW»>

Если необходимо указать то же самое только роботу Google, можно написать так:

<META NAME=»GOOGLEBOT» CONTENT=»NONE»>

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

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

<META NAME=»DOCUMENT-STATE» CONTENT=»DYNAMIC»>

В этом случае бывает полезно указать, что индексировать необходимо другой документ:

<META NAME=»URL» CONTENT=»/help.html»>

 

Утилита-помощник

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

Так, RoboGen (www.rietta.com/robogen) представляет собой визуальный редактор, доступный под все версии Windows, позволяющий управлять доступом к файлам и каталогам на нескольких серверах. Поддерживает загрузку по ftp, знает о паре сотен user-agents и около 10 основных типов поисковых движков.

При необходимости пользователь может самостоятельно добавлять новые данные в базу данных пользовательских агентов и движков. Кроме того, отдельно доступна утилита RoboTag (http://www.rietta.com/downloads/robogen/RoboTag.zip), входящая в поставку RoboGen. С ее помощью можно создавать мета-теги для вставки в html-файлы.

 

Усиленная блокировка с Robotcop

Не менее интересными возможностями обладает Robotcop (www.robotcop.org), представляющий собой модуль к веб-серверу Apache, написанный на С и распространяемый в исходных кодах. Он отслеживает правильность работы поисковых роботов, и если робот не подчиняется указанным для него правилам, то Robotcop принудительно его ограничивает, блокируя на некоторое время клиентский IP. Кроме того, веб-мастер может создавать каталоги-ловушки: если робот попытается его прочитать, то его запросы также будут перехватываться. Модуль также может среагировать и соответственно блокировать роботов, охотящихся за почтовыми адресами. Имеет настраиваемый список известных спамерских роботов. К сожалению, последняя версия 0.6, датированная 3 ноября 2002 года, поддерживает только Apache 1.3. Порт для второй версии Apache и для IIS, увы, так и не состоялся. Это, наверное, беда многих хороших OpenSource проектов.

Остальную информацию вы можете найти в документации. Успехов!

Сергей (grinder) ЯРЕМЧУК

Robo User
Web-droid editor

Добавить комментарий

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