- PVSM.RU - https://www.pvsm.ru -

Google открывает исходный код парсера robots.txt

image

Сегодня компания Google анонсировала черновик RFC стандарта Robots Exclusion Protocol (REP) [1], попутно сделав доступным свой парсер файла robots.txt под лицензией Apache License 2.0. До сегодняшнего дня какого-либо официального стандарта для Robots Exclusion Protocol (REP) и robots.txt не существовало (ближайшим к нему было вот это [2]), что позволяло разработчикам и пользователям интерпретировать его по-своему. Инициатива компании направлена на то, чтобы уменьшить различия между реализациями.

Черновик нового стандарта можно просмотреть на сайте IETF [3], а репозиторий доступен на Github по ссылке https://github.com/google/robotstxt [4].

Парсер представляет собой исходный код, который Google используют в составе своих продакшн-систем (за исключением мелких правок — вроде убранных заголовочных файлов, используемых только внутри компании) — парсинг файлов robots.txt осуществляется именно так, как это делает Googlebot (в том числе то, как он обращается с Юникод-символами в паттернах). Парсер написан на С++ и по сути состоит из двух файлов — вам потребуется компилятор, совместимый с C++11, хотя код библиотеки восходит к 90-ым, и вы встретите в ней «сырые» указатели и strbrk. Для того, чтобы его собрать, рекомендуется использовать Bazel [5] (поддержка CMake планируется в ближайшем будущем).

Сама идея robots.txt и стандарта принадлежит Мартейну Костеру, который создал его в 1994 году — по легенде [6], причиной тому стал поисковый паук Чарльза Стросса, который «уронил» сервер Костера при помощи DoS-атаки. Его идея была подхвачена другими и быстро стала стандартом де-факто для тех, кто занимался разработкой поисковых систем. Тем же, кто хотел заниматься его парсингом, иногда приходилось заниматься реверс-инженирингом работы Googlebot — в их числе компания Blekko, написавшая для своей поисковой системы собственный парсер на Perl [7].

В парсере не обошлось и без забавных моментов: взгляните к примеру на то, сколько труда пошло на обработку «disallow» [8].

Автор: HotWaterMusic

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/322562

Ссылки в тексте:

[1] черновик RFC стандарта Robots Exclusion Protocol (REP): https://webmasters.googleblog.com/2019/07/rep-id.html

[2] вот это: https://www.robotstxt.org/robotstxt.html

[3] на сайте IETF: https://tools.ietf.org/html/draft-rep-wg-topic

[4] https://github.com/google/robotstxt: https://github.com/google/robotstxt

[5] Bazel: https://bazel.build/

[6] по легенде: https://en.wikipedia.org/wiki/Robots_exclusion_standard

[7] собственный парсер на Perl: https://github.com/randomstring/ParseRobotsTXT

[8] сколько труда пошло на обработку «disallow»: https://github.com/google/robotstxt/blob/59f3643d3a3ac88f613326dd4dfc8c9b9a545e45/robots.cc#L691-L699

[9] Источник: https://habr.com/ru/post/458428/?utm_campaign=458428&utm_source=habrahabr&utm_medium=rss