自分のサイトや他人のサイトを分析するためにSEOツールを使っている人もいると思いますが、できるだけ自サイトの情報を抜かれないようにするために、SEOツールのクローラー(ロボット)をアクセス拒否したり、クロール制御するのがおすすめです。
ただし、SEOツールのクローラーをアクセス拒否しても外部から得られるような情報は第三者が見られます。見られなくなるのはサイト内部の情報です。
検索キーワードや順位、被リンク情報などはサイトの外部から取得される情報なので、自サイト側でSEOツールのクローラーを拒否しても第三者が見られます。
それなら拒否しても意味がないと感じるかもしれませんが、SEOツールのアクセスにメリットはないので、拒否しても問題ありません。SEOツールのサイト内部情報を利用してサイトを修正しているような人は、クロール制御することで情報が得られなくなるので注意です。
サブサイトから自演リンクしている人は、そのリンク元サイトでクローラーを拒否することで、メインサイトの被リンク情報から消すことができます。ビッグワードで上位表示してるのに大して被リンクがないと感じるときは、消されていることが多いです。
robots.txtでクロール制御
最もお手軽なのは、robots.txtでクロール制御する方法です。ドメイントップに設置しているrobots.txtに追記します。
robots.txtはドメインの最上位ディレクトリに設置しているもののみが有効です。
下層ディレクトリにWordPressを設置する場合でも、そのWordPressにrobots.txtを設置する必要はありません。
トップのrobots.txtに下層サイトのディレクトリを指定する形で書きます。(Google による robots.txt の指定の解釈)
当サイトのrobots.txtは以下のようになっています。
User-agent: AhrefsBot
Disallow: /
User-agent: AhrefsSiteAudit
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: SemrushBot
Disallow: /
User-agent: BLEXBot
Disallow: /
User-agent: DotBot
Disallow: /
User-agent: Barkrowler
Disallow: /
User-agent: ICC-Crawler
Disallow: /
User-agent: DataForSeoBot
Disallow: /
User-agent: Cincraw
Disallow: /
Ahrefsは2つのクローラーがあります。AhrefsSiteAuditは、Site Auditツール用のクローラーです。Site Auditで情報を抜かれたくないときは2つとも指定しましょう。
これだけで一般的なクローラーは拒否できますが、お行儀の悪いクローラーはrobots.txtを見ずにクロールを開始するため情報が抜かれます。
確実にクローラーからのアクセスを弾きたいときは.htaccessでアクセス拒否するのがよいでしょう。
AI用クローラーを拒否
SEOツールではありませんが、ChatGPTやGemini(Bard)、Vertex AI generative APIなどのAI用のクローラーを拒否したい場合は以下を追記します。
User-agent: GPTBot
Disallow: /
Use-Agent: Google-Extended
Disallow: /
Google-Extendedはユーザーエージェントではありませんが、Googleが提供するAIはGoogle-Extendedでクロール制御できます。AIは日々進化していますが、Google-Extendedで拒否しておけば、現行モデルだけではなく将来リリースされるモデルにも適用されるようです。
.htaccessでアクセス拒否
クローラーを.htaccessでアクセス拒否するときは、ユーザーエージェントを指定するのが一般的です。
当サイトはエックスサーバーを使っています。設定が完了したらエラーログを確認して、エラーが発生していないか見てみましょう。
# block bot
SetEnvIf User-Agent "AhrefsBot" denybot
SetEnvIf User-Agent "AhrefsSiteAudit" denybot
SetEnvIf User-Agent "MJ12bot" denybot
SetEnvIf User-Agent "SemrushBot" denybot
SetEnvIf User-Agent "BLEXBot" denybot
SetEnvIf User-Agent "DotBot" denybot
SetEnvIf User-Agent "Barkrowler" denybot
SetEnvIf User-Agent "ICC-Crawler" denybot
SetEnvIf User-Agent "DataForSeoBot" denybot
SetEnvIf User-Agent "Cincraw" denybot
deny from env=denybot
<Files robots.txt>
Allow from all
</Files>
SEOツールのユーザーエージェントを指定してアクセス拒否しています。.htaccessで403 forbiddenを返して、robots.txtだけを閲覧させる場合です。
403を返すだけでも問題ありませんが、それだとアクセス解析にアクセス情報が上がってこないので、アクセスがあったことを確認しつつ転送量が発生しない状態にしています。
エックスサーバーのアクセス解析でロボット・スパイダー別のアクセスレポートを見るとこのようになっています。DotBotのアクセス数が異様に多いですね。
他にもクローラーはたくさんあるので、自分のサイトのアクセス解析やアクセスログを見ながら追加してみてください。下記の参考サイトでもたくさんのクローラーが紹介されています。
ユーザーエージェントを偽装するクローラーもあるようで、IPアドレスを特定して拒否する方法もありますが、そこまでやる必要はないと思います。
クローラーに関わらず、転送量が多いIPアドレスは情報を抜いている可能性があるので、IPアドレスで拒否してもよいでしょう。ただし、必要なIPアドレスを拒否しないように注意してください。
deny from ドメイン名
deny from IPアドレス
ドメイン名やIPアドレスを指定して拒否する場合はこのように書きます。