robots.txt — файл с инструкциями для поисковых машин. Обычно в нём указывают список url, которые нужно запретить к индексации (директива Disallow). Но, это далеко не все возможности robots.txt. В robots.txt можно:
- задать главное зеркало сайта с помощью директивы Host
- указать ссылки на файлы sitemap с помощью директивы Sitemap
- указать минимальный интервал в секундах с помощью директивы Crawl-delay, не ранее чем через который робот сделает запрос к следующей странице сайта. Обычно используют, если сайт не справляется с нагрузкой
- указать get-параметры, которые не стоит учитывать при индексации страниц с помощью директивы Clean-param
- задать urls, которые разрешены к индексации с помощью директивы Allow (протиповоложенность директиве Disallow)
Итак, задача:
Нужно парсить содержимое всех директив robots.txt на php
Актуальную версию парсера robots.txt вы всегда можете скачать с моего репозитория на github. Я сделал online версию для проверки парсера, чтобы можно было его "пощупать". Получить все правила robots.txt файла с помощью этой библиотеки можно так:
$robotsTxtContent = file_get_contents('http://example.com/robots.txt'); $parser = new RobotsTxtParser($robotsTxtContent); print_r($parser->getRules());
Моя версия парсера имеет следующие преимущества перед аналогичными решениями, которые я находил в Интернет:
- обрезаются комментарии (всё, что следует после символа "#" и до символа перевода строки)
- парс значения директивы Clean-param, учитывая синтаксис директивы с указанием path
- правильный парс директивы Host. Дело в том, что Host — межсекционная директива. Во-первых, при наличии двух директив Host поисковые боты учитывают только первую найденную по-порядку. Во-вторых, т.к. директива межсекционная, то, даже если она принадлежит секции User-agent: YandexBot, то все равно будет учитываться всеми ботами.
- покрытость unit-тестами с множеством кейсов. phpunit тесты на "баги" из альтернативных библиотек.
- скорость парсера с версии 2.0 выросла более чем в 100 раз, при этом не потеряв в качестве ни грамма. На момент 2017 это самая быстрая php библиотека для парсинга robots-txt файлов.
Попробовать парсер онлайн: http://robots.jeka.by/
Достаточно вбить имя любого домена.
Если вы придумали кейс, который библиотека не покрывает, или нашли такой сайт, то вы можете написать об этом здесь.