【bot】robots.txtでクローラーボットをブロックする【ブロック】
迷惑ボットからのクロールは結構ある
サーバーログを見ていると、webサイトへのアクセスに於いて、通常のアクセスとは別に、ボットからのアクセスも結構ある。
ログ取得の設定にもよるが、明らかに文字数が少ない列なんかは大抵ボットのアクセスではないだろうか。
Google等、検索エンジンのボットはアクセスを稼ぐ必要がある場合は無視できないが、ビジネス的情報を集めるボット、所謂「迷惑ボット」のアクセスもサーバーに負荷が掛かっている事には間違いないので、出来ればアクセス拒否したい。そんな時の備忘録。
数通りのブロック・除外方法がある
サーバーにもよるだろうが、.htaccessでのブロック、robots.txtでのブロックがあるようである。
.htaccessでのブロックはサーバー自体で使えるかどうか不明なパターンもあるので、今回はrobots.txtでブロックする。
Disallowでアクセス除外
基本的な書き方はこう。
User-agent: 除外したいボット名 Disallow: /
これで該当のボットを除外できる。迷惑ボットと一言で言っても、bot自体は様々あるので、どれをブロックするかは自己判断。「迷惑ボット クロール」とか「クローラー 一覧」等のキーワードで検索するとそれらしい記事が多々あるので、どれが迷惑ボットかどうかは割愛。なお、複数ブロックしたい場合は
User-agent: 除外したいボット名1 User-agent: 除外したいボット名2 User-agent: 除外したいボット名3 Disallow: /
とまとめて記述も可能。
だがしかし、robots.txtを編集~公開するのであれば、一度全体を見直した方が良い。
robots.txt内の書き方に注意
Google検索セントラルによると、robots.txtの基本的な書き方はこのようだ。
2 つのルールを含む簡単な robots.txt ファイルの例を以下に示します。
User-agent: Googlebot Disallow: /nogooglebot/ User-agent: * Allow: / Sitemap: https://www.example.com/sitemap.xmlrobots.txt の書き方、設定と送信 | Google 検索セントラル | ドキュメント | Google for Developers
とはいえ、一字一句そのまま使う人はいないので、何らかの編集を施すであると思われるが、初期段階で「特に使わないから最低限のこれで」と、下記のようにしたとしよう。
User-agent: * Sitemap: https://www.example.com/sitemap.xml
確かに、この記述だと「全てのクローラーへ、sitemap.xmlはここにあるよ」と伝えているが、
この直後に
User-agent: 除外したいボット名 Disallow: /
を記述して、
User-agent: * Sitemap: https://www.example.com/sitemap.xml User-agent: 除外したいボット名 Disallow: /
の状態で公開すると、Google Botからも除外されてしまう。
クローラーが robots.txt ルールを処理する際、sitemap 行は無視されます。 たとえば、クローラーは上記の robots.txt スニペットを以下のように解釈します。
Google による robots.txt の指定の解釈 | Google 検索セントラル
User-agent: * Sitemap: https://www.example.com/sitemap.xml Allow: / User-agent: 除外したいボット名 Disallow: /
と、この場合は一度全許可してから、個別のボットをDisallowしよう。
Google Search Consoleに「robots.txt テスター」があるので、Googleからのアクセスをブロックしたくない人は必ずチェックしておいた方が良いであろう。
その他余談
robots.txtはUTF-8で書こう。