В марте прошлого года (запись в блоге автора от 03.12.2007, [1]) программный инженер компании Apple, Эндрю Вустер, провёл исследование файлов управления поисковыми роботами (robots.txt ). Исследование проводилось для сайтов, включённых в каталог DMOZ. Главным выводом исследования стало то, что каждый четвёртый сайт имеет ошибки в файле robots.txt. При этом у 65% сайтов в данном каталоге этот файл вообще отсутствовал.
Исследований русскоязычного сегмента Интернет на предмет корректности файла robots.txt ранее не проводилось. В качестве источника сайтов мы выбрали самый большой русскоязычный каталог – каталог сайтов поисковой системы Яндекс.
Определить качественный уровень грамотности вебмастеров сайтов, размещенных в каталоге Яндекса.
Определить, насколько профессионально используется файл управления индексацией сайта robots.txt.
Сравнить полученные результаты с аналогичными для сайтов, описанных в каталоге DMOZ.
На момент исследования в каталоге Яндекса было зарегистрировано 86534 сайта. Посредством автоматического сбора был составлен список из 77643 уникальных доменных имён из 75 доменных зон.
Файл robots.txt – это текстовый файл, находящийся в корневой директории сайта, в котором записываются специальные инструкции для поисковых роботов. Эти инструкции могут запрещать к индексации некоторые разделы или страницы на сайте, указывать главный домен, рекомендовать поисковому роботу соблюдать определенный временной интервал между скачиванием документов с сервера и т.д. ([3]).
Исследовались следующие параметры файла robots.txt:
- статус коды ответов серверов,
- mime типы для файлов robots.txt,
- наличие и правильность указания кодировки в заголовке ответа сервера,
- проверка корректности синтаксиса и орфографии при написании директив,
- использование специализированных команд.
HTTP коды статуса (возвращаемые сервером заголовки) говорят веб-браузерам и роботам поисковых систем, какого рода ответ они получают при загрузке страницы. Например, код 200 (ОК) значит, что все нормально, а 404 (file not found) - что веб-сервер не смог найти файл по заданному адресу.
Для оценки того, насколько активно вебмастера используют возможность управлением индексацией своего сайта, соберём статус-коды для файлов robots.txt для обозначенного выше списка сайтов.
Для сайтов нашей выборки распределение выглядит следующим образом:
Класс |
Число сайтов |
В % от всех |
5xx |
119 |
0,15 |
4xx |
45732 |
59,00 |
3xx |
72 |
0,09 |
2xx |
31593 |
40,76 |
1xx |
0 |
0,00 |
В исследовании [1] статистика распределения статус-кодов для файлов robots.txt имеет следующий вид:
Класс |
Число сайтов |
В % от всех |
5xx |
4,338 |
0,09 |
4xx |
3,035,454 |
65,86 |
3xx |
350,946 |
7,61 |
2xx |
1,217,559 |
26,42 |
1xx |
12 |
0,00 |
Доля сайтов в Яндекс.Каталоге, ответивших 2xx ответом сервера, значительно выше, чем у сайтов в каталоге DMOZ: 41% в сравнении с 27%. При этом разница достигается не за счёт сокращения числа файлов, ответивших 4xx кодом, а сокращением количества сайтов с заголовком перенаправления на другой домен(3xx). При разнице 2xx кодов на 14%, разница 4xx кодов всего 7%.
Иногда сервер настроен таким образом, что и для страницы с ошибкой отдаёт код 200(
MIME типы (типы содержания) возвращаются веб-серверами в HTTP заголовках, чтобы сообщить клиентам, какой документ передается. Они состоят из типов (text, image и так далее), подтипов (html или jpeg) и некоторых необязательных параметров, таких как кодировка документа. Единственный MIME тип, который должен возвращать файл robots.txt - это текст (text/plain).
В каталоге Яндекса после сбора статус-кодов, осталось 31593 сайтов, ответивших заголовком 2xx, у 29055 из которых MIME тип соответствует «text/plain». Соответственно, 2538 (8,03%) сайтов возвращают MIME тип, отличный от верного (в исследовании [1] - 109 780 (9,01%) сайтов имели MIME тип, отличный от text/plain).
Исследуемые серверы ответили следующими различными значениями MIME типов:
application/octet-stream
application/x-empty
application/x-httpd-php
download/octet-stream
plain/text
text
text/html
text/plain
text/plane
text/text
text/txt
Кодировка символов определяет, какие знаки соответствуют определенным наборам бит. Сайты определяют кодировку, устанавливая ее в переменной content-type в заголовке ответа сервера.
Мало сайтов возвращают в заголовке кодировку документа. При этом, в связи со специфичностью каталога Яндекса (в нём расположены только русскоязычные сайты), проблемы с кодировкой возникают достаточно редко. Список различных кодировок выглядит следующим образом:
charset=
charset=iso-8859-1
charset=koi8-r
charset=ru
charset=utf -8
charset=utf8
charset=utf-8
charset=win
charset=windows-1251
Явных ляпов не замечено, однако стоит отметить, что многие вебмастера не могут договориться, как правильно писать название универсальной кодировки UTF-8.
Комментарии
В robots.txt для Яндекса и других поисковых систем можно использовать только один вид комментариев. Комментарием считается строка после знака “#”. При этом среди исследованных файлов были найдены HTML комментарии ““(16 файлов), комментарии в стиле C++ “//”(20 файлов).
Спецификация говорит о том, что записи должны разделяться пустыми строками, и большинство ошибок вращаются вокруг этого.
Во-первых, многие вебмастера вставляют дополнительную пустую строку между строкой User-agent и правилами для этого робота. Для нашей выборки эта доля равна 1,6% (498 сайтов), в исследовании [1] таких сайтов 6,1% (74 043).
Второй частой ошибкой является то, что между User-Agent и правилами для индексации пропущен символ начала новой строки. Сайтов, содержащих подобную ошибку, - 1,07% (340), сайтов с аналогичной ошибкой в каталоге DMOZ - 5,33% (64921).
Третий тип ошибок: часто пишут строку с агентом после правила Disallow, не разделяя их пустой строкой. В каталоге Яндекса 1,45% (457) таких сайтов. При этом доля аналогичных ошибок в исследовании [1] в 2 раза больше: 2,68% (32 656 файлов).
Роботы некоторых поисковых систем обращают внимание на директивы управления, например, Crawl-delay (задержка сканирования, чтобы робот не положил сервер). MSN, Yahoo! и Ask поддерживают эту директиву. Файлов, в которых встречается данная директива, всего 725.
Небольшое количество файлов, содержащих такую директиву, обуславливается тем, что 3 крупнейшие поисковые системы в российском интернете (Яндекс, Рамблер и Google) не поддерживают эту директиву. Поэтому вебмастера не придают значения этой настройке.
Очень часто причиной того, что робот поисковой системы игнорирует инструкции в файле robots.txt, являются банальные опечатки. В указанном списке сайтов встречается 18 различных написаний директивы Disallow:
1disallow
diasllow
disaalow
disalljw
disallos
disallov
disallowed
disallowing
disallows
disalow
disaoolw
dissallow
dissalow
dosallow
nodisallow
ppdisallow
robotsdisallow
При этом написание директивы user-agent вызывает значительно меньше сложностей. Найдено 7 различных вариантов:
user_agent
useragent
user-agent="yandex"
user-agents
user-agernt
user-aget
user-аgent (кирилическая буква а)
Многие вебмастера, вероятно, слышали о том, что необходим файл robots.txt, но не совсем понимают, для чего он нужен. Поэтому появилось множество курьёзов.
Разработчики сайта blog.kp.ru искренне приветствуют роботов поисковых систем, причём делают это современно:
Превед роботы
Возникает сомнение, что роботы поисковых систем по достоинству оценят искромётный юмор разработчиков. Не отстают и разработчики сайта www.modernglass.ru. Они поступили ещё проще, путём нехитрых нажатий на клавиши получив совершенно бесполезный файл:
sdfsdf
Эта комбинация букв совершенно бесполезна, в отличие от первого примера, при просмотре которого хотя бы возникает улыбка.
Некоторые вебмастера оказались очень радушными хозяевами (1. optics.sgu.ru/robots.txt, 2. www.anatomyatlases.org/robots.txt). Мало того, что они здороваются с роботом, они предлагают ему чувствовать себя как дома, и индексировать документы как скрипт на душу положит:
1. # Welcome!
2. # Robots.txt file, robots welcome
Надо отдать должное, что вебмастер не стал нагружать парсер файлов robots.txt и закрыл приветствие в комментарии. Но есть и такие вебмастера (pravo-levo.ru/robots.txt), которые, желая похохмить, задают парсеру действительно нетривиальные задачи:
U s e r - a g e n t : *
D i s a l l o w :
Совершенно не понятно, чем руководствовался вебмастер, когда писал директивы именно таким образом. Боюсь, что и для автора этого файла это останется загадкой.
Выводы анализа robots.txt сайтов в Яндекс.Каталоге:
1. Общий уровень грамотности вебмастеров русскоязычной части интернета выше по сравнению с западными вебмастерами (доля сайтов, имеющих robots.txt, больше (49%), чем у сайтов из каталога DMOZ (27%)).
2. Количество сайтов, имеющих код 3xx (перенаправление на другое доменное имя), ниже у сайтов в каталоге Яндекса(0.09%), чем в каталоге DMOZ (7,61%).
3. Количество файлов с неверно указанным значением MIME типов содержимого близко в обоих исследованиях, это говорит о том, что такой тип ошибок интернационален и не зависит от языковой особенности списка файлов.
4. Владельцы сайтов в каталоге Яндекса не утруждают себя указанием кодировки документа, передаваемого роботу поисковой системы. У тех же, кто прописывает этот параметр, часто возникают проблемы с правильным написанием кодировки utf-8.
5. Часто вебмастера вместо указанных в спецификации комментариев «#» используют комментирующие символы из других языков: HTML, C++.
6. У сайтов в каталоге Яндекса значительно реже встречаются ошибки в структуре самого фала robots.txt: наличие дополнительного символа переноса строки между User-Agent и Disallow, пропуск символа переноса строки между директивами для разных секций.
7. Многие отечественные вебмастера, как и зарубежные, допускают орфографические ошибки при написании директив (Disallow и User-Agent).
2.
3.
Олег Сахно, Евгений Селин,