robots.txt — это имя файла, используемое для реализации протокола исключения роботов , стандарта, используемого веб-сайтами для указания веб-сканерам и другим веб-роботам, какие разделы веб-сайта им разрешено посещать.
Стандарт, разработанный в 1994 году, основан на добровольном соблюдении . Вредоносные боты могут использовать файл как справочник страниц, которые следует посетить, хотя органы стандартизации не рекомендуют противодействовать этому с помощью безопасности через неизвестность . Некоторые архивные сайты игнорируют robots.txt. Стандарт использовался в 1990-х годах для смягчения перегрузки сервера . В 2020-х годах многие веб-сайты начали запрещать ботам, собирающим информацию для генеративного искусственного интеллекта .
Файл «robots.txt» можно использовать вместе с файлами Sitemaps — еще одним стандартом включения роботов на веб-сайты.
Стандарт был предложен Мартейном Костером [ 1] [2] во время работы в Nexor [3] в феврале 1994 года [4] в списке рассылки www-talk , основном канале связи для деятельности, связанной с WWW в то время. Чарльз Стросс утверждает, что спровоцировал Костера предложить robots.txt после того, как он написал плохо себя ведущего веб-краулера, который непреднамеренно вызвал атаку типа «отказ в обслуживании» на сервер Костера. [5]
Стандарт, изначально RobotsNotWanted.txt, позволял веб-разработчикам указывать, какие боты не должны получать доступ к их веб-сайту или к каким страницам боты не должны получать доступ. Интернет был достаточно мал в 1994 году, чтобы поддерживать полный список всех ботов; перегрузка сервера была основной проблемой. К июню 1994 года он стал фактическим стандартом ; [6] большинство соблюдали его, включая те, которые управлялись поисковыми системами, такими как WebCrawler , Lycos и AltaVista . [7]
1 июля 2019 года Google объявила о предложении протокола исключения роботов в качестве официального стандарта в рамках Целевой группы по инженерии Интернета [8] . Предложенный стандарт [9] был опубликован в сентябре 2022 года как RFC 9309.
Когда владелец сайта хочет дать инструкции веб-роботам, он помещает текстовый файл с именем robots.txt в корень иерархии веб-сайта (например, https://www.example.com/robots.txt ). Этот текстовый файл содержит инструкции в определенном формате (см. примеры ниже). Роботы, которые решают следовать инструкциям, пытаются извлечь этот файл и прочитать инструкции перед извлечением любого другого файла с веб-сайта . Если этот файл не существует, веб-роботы предполагают, что владелец веб-сайта не хочет накладывать никаких ограничений на сканирование всего сайта.
Файл robots.txt содержит инструкции для ботов, указывающие, к каким веб-страницам они могут и не могут получить доступ. Файлы robots.txt особенно важны для веб-краулеров из поисковых систем, таких как Google.
Файл robots.txt на веб-сайте будет функционировать как запрос, чтобы указанные роботы игнорировали указанные файлы или каталоги при сканировании сайта. Это может быть, например, из-за предпочтения конфиденциальности результатов поисковой системы или убеждения, что содержимое выбранных каталогов может быть вводящим в заблуждение или нерелевантным для категоризации сайта в целом, или из-за желания, чтобы приложение работало только с определенными данными. Ссылки на страницы, перечисленные в robots.txt, все еще могут появляться в результатах поиска, если они связаны со страницей, которая сканируется. [10]
Файл robots.txt охватывает один источник . Для веб-сайтов с несколькими поддоменами каждый поддомен должен иметь свой собственный файл robots.txt. Если бы у example.com был файл robots.txt, а у a.example.com — нет, правила, которые применялись бы к example.com, не применялись бы к a.example.com . Кроме того, для каждого протокола и порта нужен свой собственный файл robots.txt; http://example.com/robots.txt не применяется к страницам под http://example.com:8080/ или https://example.com/ .
Протокол robots.txt широко соблюдается операторами ботов. [6]
Некоторые основные поисковые системы , следующие этому стандарту, включают Ask, [11] AOL, [12] Baidu, [13] Bing, [14] DuckDuckGo, [15] Google, [16] Yahoo!, [17] и Yandex. [18]
Некоторые проекты веб-архивирования игнорируют robots.txt. Archive Team использует файл для обнаружения дополнительных ссылок, таких как карты сайта . [19] Соучредитель Джейсон Скотт сказал, что «непроверенный и оставленный в покое файл robots.txt не обеспечивает зеркалирования или ссылок на элементы, которые могут иметь общее использование и значение за пределами контекста веб-сайта». [20] В 2017 году Internet Archive объявил, что он прекратит соблюдать директивы robots.txt. [21] [6] Согласно Digital Trends , это последовало за широко распространенным использованием robots.txt для удаления исторических сайтов из результатов поисковой системы и контрастирует с целью некоммерческой организации архивировать «снимки» Интернета в том виде, в котором он существовал ранее. [22]
Начиная с 2020-х годов веб-операторы начали использовать robots.txt для запрета доступа ботам, собирающим данные для обучения генеративного ИИ . В 2023 году Originality.AI обнаружила, что 306 из тысячи наиболее посещаемых веб-сайтов заблокировали GPTBot OpenAI в своем файле robots.txt, а 85 заблокировали Google - Extended. Многие файлы robots.txt называли GPTBot единственным ботом, явно запрещенным на всех страницах. Запрет доступа к GPTBot был распространен среди новостных сайтов, таких как BBC и The New York Times . В 2023 году блог-хостинг Medium объявил, что запретит доступ всем веб-краулерам искусственного интеллекта, поскольку «компании ИИ выкачали ценность из писателей, чтобы спамить интернет-читателей». [6]
GPTBot соответствует стандарту robots.txt и дает советы веб-операторам о том, как запретить его, но Дэвид Пирс из The Verge сказал, что это началось только после «обучения базовых моделей, которые сделали его таким мощным». Кроме того, некоторые боты используются как для поисковых систем, так и для искусственного интеллекта, и может быть невозможно заблокировать только один из этих вариантов. [6] 404 Media сообщили, что такие компании, как Anthropic и Perplexity.ai, обошли robots.txt, переименовав или запустив новые скраперы, чтобы заменить те, которые появились в популярных блок-листах . [23]
Несмотря на использование терминов «разрешить» и «запретить», протокол носит исключительно рекомендательный характер и полагается на соответствие веб-робота ; он не может обеспечить соблюдение каких-либо положений, указанных в файле. [24] Вредоносные веб-роботы вряд ли будут соблюдать robots.txt; некоторые из них могут даже использовать robots.txt в качестве руководства для поиска запрещенных ссылок и перехода по ним. Хотя иногда это называют угрозой безопасности, [25] такого рода безопасность через неизвестность не приветствуется органами стандартизации. Национальный институт стандартов и технологий (NIST) в США специально рекомендует не использовать эту практику: «Безопасность системы не должна зависеть от секретности реализации или ее компонентов». [26] В контексте файлов robots.txt безопасность через неизвестность не рекомендуется как метод безопасности. [27]
Многие роботы также передают специальный пользовательский агент на веб-сервер при загрузке контента. [28] Веб-администратор также может настроить сервер на автоматический возврат отказа (или передачу альтернативного контента ) при обнаружении соединения с использованием одного из роботов. [29] [30]
Некоторые сайты, такие как Google , размещают humans.txt
файл, который отображает информацию, предназначенную для чтения людьми. [31] Некоторые сайты, такие как GitHub, перенаправляют people.txt на страницу «О нас» . [32]
Ранее Google разместил на своем сайте шуточный файл, в котором Терминатору/killer-robots.txt
было приказано не убивать основателей компании Ларри Пейджа и Сергея Брина . [33] [34]
В этом примере всем роботам сообщается, что они могут посещать все файлы, поскольку подстановочный знак *
обозначает всех роботов, а Disallow
директива не имеет значения, то есть никакие страницы не запрещены.
Пользовательский агент: *Запретить:
Пользовательский агент: *Позволять: /
Того же результата можно добиться с пустым или отсутствующим файлом robots.txt.
В этом примере всем роботам сообщается, что им не следует заходить на веб-сайт:
Пользовательский агент: *Запретить: /
В этом примере всем роботам запрещается входить в три каталога:
Пользовательский агент: *Запретить: /cgi-bin/Запретить: /tmp/Запретить: /мусор/
В этом примере всем роботам сообщается, что им следует держаться подальше от одного конкретного файла:
Пользовательский агент: *Запретить: /directory/file.html
Все остальные файлы в указанном каталоге будут обработаны.
User-agent: BadBot # замените «BadBot» на фактический user-agent ботаЗапретить: /
В этом примере двум конкретным роботам сообщается, что им не следует входить в один определенный каталог:
User-agent: BadBot # замените «BadBot» на фактический user-agent ботаПользовательский агент: GooglebotЗапретить: /частный/
Пример, демонстрирующий, как можно использовать комментарии:
# Комментарии появляются после символа «#» в начале строки или после директивыUser-agent: * # соответствует всем ботамDisallow: / # не пускать их
Также возможно перечислить несколько роботов с их собственными правилами. Фактическая строка робота определяется краулером. Несколько операторов роботов, таких как Google , поддерживают несколько строк user-agent, которые позволяют оператору запретить доступ к подмножеству своих служб, используя определенные строки user-agent. [16]
Пример, демонстрирующий несколько пользовательских агентов:
User-agent: googlebot # все службы GoogleDisallow: /private/ # запретить этот каталогUser-agent: googlebot-news # только служба новостейDisallow: / # запретить всеUser-agent: * # любой роботDisallow: /something/ # запретить этот каталог
Значение crawl-delay поддерживается некоторыми краулерами для ограничения их посещений хоста. Поскольку это значение не является частью стандарта, его интерпретация зависит от считывания его краулером. Оно используется, когда множественный всплеск посещений от ботов замедляет хост. Яндекс интерпретирует значение как количество секунд ожидания между последующими посещениями. [18] Bing определяет crawl-delay как размер временного окна (от 1 до 30 секунд), в течение которого BingBot будет обращаться к веб-сайту только один раз. [35] Google игнорирует эту директиву, [36] но предоставляет интерфейс в своей поисковой консоли для веб-мастеров, чтобы контролировать последующие посещения Googlebot . [37]
Пользовательский агент: bingbotПозволять: /Задержка сканирования: 10
Некоторые сканеры поддерживают Sitemap
директиву, разрешающую использование нескольких файлов Sitemap в одном и том жеrobots.txtв форме : [38]Sitemap: full-url
Карта сайта: http://www.example.com/sitemap.xml
В стандарте исключения роботов символ «*» в Disallow:
заявлении не упоминается. [39]
В дополнение к файлам robots.txt корневого уровня, директивы исключения роботов могут применяться на более детальном уровне с помощью метатегов Robots и HTTP-заголовков X-Robots-Tag. Метатег robots не может использоваться для не-HTML-файлов, таких как изображения, текстовые файлы или PDF-документы. С другой стороны, X-Robots-Tag можно добавлять в не-HTML-файлы с помощью файлов .htaccess и httpd.conf . [40]
< мета имя = "robots" содержание = "noindex" />
X-Robots-Тег: noindex
X-Robots-Tag действует только после того, как страница была запрошена и сервер ответил, а метатег robots действует только после загрузки страницы, тогда как robots.txt действует до того, как страница была запрошена. Таким образом, если страница исключена файлом robots.txt, любые метатеги robots или заголовки X-Robots-Tag фактически игнорируются, поскольку робот их изначально не увидит. [40]
Протокол исключения роботов требует, чтобы сканеры анализировали не менее 500 кибибайт (512000 байт) файлов robots.txt, [41] что Google поддерживает как ограничение размера файла robots.txt в 500 кибибайт. [42]
ads.txt
, стандарт для листинга авторизованных продавцов рекламыsecurity.txt
, файл, описывающий процесс, которому должны следовать исследователи безопасности, чтобы сообщать об уязвимостях безопасности