Googleのオープンソースのrobots.txtライブラリを使ってrobots.txtのマークアップをテストしてみた。

GoogleBotクローラーによるrobots.txtのテストには、Search Consoleのrobots.txtテスターを使う方法が一般的だが、利用にはネットワーク接続およびGoogleアカウントでのログインが必要となる。

本ライブラリは、ローカルでテストすることができるため環境を限定せずに手軽に利用することができる。

https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txt?hl=ja

環境

導入

robots.txtライブラリをGitHubよりダウンロードする。
https://github.com/google/robotstxt

ビルド

ライブラリは、C++で提供されているため、実行およびビルドにビルダーが必要となる。

READMEにBazelかCMakeを利用した手順の説明がされているので、環境にあったものを選択すると良い。

今回はBazelを導入してビルドしてみた。

Bazelインストール

インストーラーかHomebrewでの導入が可能。
https://bazel.build/install/os-x#install-on-mac-os-x-homebrew

$ brew install bazel

Bazelビルド

bazel buildコマンドでビルドを実行する。

$ bazel build --cxxopt='-std=c++14' :robots_main
Starting local Bazel server and connecting to it...
// 省略                                                                                                                                                                                                                                                             
INFO: Analyzed target //:robots_main (47 packages loaded, 408 targets configured).
INFO: Found 1 target...
Target //:robots_main up-to-date:
  bazel-bin/robots_main
INFO: Elapsed time: 24.558s, Critical Path: 3.36s
INFO: 53 processes: 13 internal, 40 darwin-sandbox.
INFO: Build completed successfully, 53 total actions

READMEにも記載されているが、本ライブラリはC++14未満ではビルドすることができない。
macにインストールしていたgccではデフォルトで有効なのは、C++11であったため、言語規格(std値)を変更する必要がある。
そのため、--cxxopt='-std=c++14' のオプションを指定した。

https://bazel.build/reference/command-line-reference

実行

bazel runコマンドでビルド済みのライブラリを実行する。

https://masahosono.devというターゲットURLに対して、GoogleBotクローラーを用いてrobots.txtファイル(~/robotstxt/robots.txt)でテストを実行する。

$ bazel run --cxxopt='-std=c++14' robots_main -- ~/robotstxt/robots.txt GoogleBot https://masahosono.dev
INFO: Analyzed target //:robots_main (0 packages loaded, 0 targets configured).
// 省略
user-agent 'GoogleBot' with URI 'https://masahosono.dev': ALLOWED
robots.txtUser-agent: *
Disallow:

robots.txtに対してクローラーがアクセスできないURLである場合は、結果は、DISALLOWEDとなる。

$ bazel run --cxxopt='-std=c++14' robots_main -- ~/Code/robotstxt/robots.txt  GoogleBot https://masahosono.dev
// 省略
user-agent 'GoogleBot' with URI 'https://masahosono.dev': DISALLOWED
robots.txtUser-agent: *
Disallow: /