【永久保存版】AIクローラー・検索エンジンのボット拒否設定7選

近年、AI技術の進化に伴い、ウェブサイトを巡回するAIボットの数が急増しています。
これらのAIボットは有益な情報収集を行う場合もありますが、一方で以下のようなリスクをもたらすこともあります。

  • 短時間に膨大なアクセスを行い、サイトのパフォーマンスを大幅に低下させる。
  • 不必要なページまでクロールし、機密情報が漏洩する可能性がある。
 

また、会員専用サイト等、検索エンジンにインデックスさせる必要がない・インデックスされたくないページやサイトでは、検索エンジンのクローラーを拒否したり「noindex」設定を行うことが不可欠です。

 

本記事では、これらの脅威からウェブサイトを守るために、AIボットや検索エンジンのクロールを拒否する効果的な7つの方法をご紹介します。
これらの対策を講じることで、大切なサイトを守り、安全で快適な環境を維持することができるでしょう。

 

なお、当ページに書いてある7つの方法に関して、4つ目の「WordPressプラグインで拒否する」以外の6つはGoogleアナリティクス・Googleサーチコンソール・Bing Webmaster Tools等のクロールには影響ありません。

「WordPressプラグインで拒否する」についても、(私はインストール・有効化してないので詳細は不明ですが)他のプラグインと同じ機能の設定をしなければたぶん問題ありません。

  1. robots.txtでAIクローラーを拒否する
  2. WordPressの設定でnoindexにする
  3. WordPressテーマのheader.phpで検索エンジンのクローラーを拒否する
  4. WordPressのプラグインでAIボットと検索エンジンを拒否する
  5. .htaccessにX-Robots-Tagを追加する
  6. Bytespider対策を追加する
  7. ■注意その1その2■ここまでの注意点まとめ
  8. 【推奨】CloudflareでAIボットを拒否する(必要に応じて検索エンジンも拒否)
    1. CloudflareでAIボットを拒否する方法をオススメする理由
    2. 【初心者向け】1サイト/1ドメインを丸ごとAIボット拒否する
    3. 【中級者向け】複数サイト/複数ドメインでAIボット拒否設定を行う方法
      1. 【事例紹介】2つのCloudflareアカウント、9サイトのWAF設定方針
      2. CloudflareのアカウントAのWAF設定
        1. 「検証済みのボット」と「既知のボット」の違い
        2. 「AIボットをブロック」と「既知のボット」の違い
      3. ■注意その3■インデックス済みのページをあとからnoindexにしたい場合
      4. CloudflareのアカウントBのWAF設定
        1. ■注意その4■WAFのルールが複数ある場合は、上から順に適用される
    4. CloudflareのWAFでブロックした履歴を確認する方法
  9. 【番外編】Cloudflareで提供されている、超簡単なAIボット対策3つ
    1. ボットファイトモード
    2. AIボットをブロック
    3. AI Labyrinth(不正なAIボットをトラップ)
      1. ■注意その5(優先順位)■AI LabyrinthよりWAFのカスタムルールが優先される
        1. WAFのカスタムルール + AI Labyrinthの場合の動作の流れ
        2. 「既知のボット」と「AI Labyrinthが対象とするAIボット」の違い
        3. あらためて「既知のボット」とは?
      2. ■注意その6■サーバーのリソース使用量UPの可能性がある
      3. ■注意その7(SEOへの影響・懸念)■AI LabyrinthがSEOに悪影響を及ぼす可能性がゼロとは(現時点では)断言できない
以下、オレンジ枠内が作業内容です。
 

robots.txtでAIクローラーを拒否する

robots.txtファイルを使って、特定の検索エンジンやボットがウェブサイトをクロールできないようにする設定方法です。
サイトのルートディレクトリにrobots.txtファイルを配置し、クローラーのアクセスを制御します。
特定のボットや特定のディレクトリへのアクセスを拒否できます。

下記の内容で robots.txt を作成し、FTPソフトでドメイン直下にアップロードします。
https://ほにゃらら.com/robots.txt
になります。

最後の2行の「ほにゃらら.com」はご自身の環境にあわせて下さい。

##■■■AIボットをブロック■■■
User-agent: AI2Bot
User-agent: Amazon-Kendra
User-agent: AmazonAdBot
User-agent: Applebot-Extended
User-agent: Bytespider #robots.txtを無視する
User-agent: CCBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: cohere-ai
User-agent: DeepSeek #念のため追加
User-agent: DeepSeekBot
User-agent: Diffbot
User-agent: Discordbot
User-agent: GPTBot
User-agent: Google-Extended
User-agent: GoogleOther
User-agent: GoogleOther-Image
User-agent: GoogleOther-Video
User-agent: GrokBot
User-agent: ICC-Crawler
User-agent: ImagesiftBot
User-agent: Linguee
User-agent: Mail.RU_Bot
User-agent: Mappy
User-agent: MegaIndex
User-agent: meta-externalagent
User-agent: meta-externalfetcher
User-agent: MistralBot
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: SMTBot
User-agent: The Knowledge AI
User-agent: xAI-Bot #念のため追加
User-agent: YouBot
Disallow: /


##■■■検索エンジンのボットをブロック■■■
##■これを有効にすると各ページの<head>内のインデックス禁止コードを読み取らなくなるので、これは無効にしておいて<head>内を優先させる
#■User-agent: 360Spider
#■User-agent: AdsBot-Google
#■User-agent: AhrefsBot
#■User-agent: Amazonbot
#■User-agent: Applebot #SiriとSpotlight
#■User-agent: archive.org_bot
#■User-agent: Baiduspider
#■User-agent: Baiduspider-image
#■User-agent: Baiduspider-video
#■User-agent: Bingbot
#■User-agent: BingPreview #Bingの画像検索
#■User-agent: BLEXBot
#■User-agent: coccocbot
#■User-agent: DataForSeoBot
#■User-agent: DuckAssistBot
#■User-agent: DuckDuckBot
#■User-agent: Exabot
#■#▲User-agent: Facebookexternalhit #Facebook・インスタ・Messengerの共有
#■User-agent: FeedlyBot
#■#▲User-agent: Google-InspectionTool #Googleのリッチリザルト・テスト や URL 検査ツール
#■User-agent: Google-PageRenderer
#■User-agent: Googlebot
#■User-agent: Googlebot-Image
#■User-agent: Googlebot-News
#■User-agent: Googlebot-Video
#■#▲User-agent: Linebot #ラインの共有
#■User-agent: MJ12bot #Majestic SEO
#■User-agent: Mediapartners-Google #Google AdSense
#■User-agent: Meta-ExternalAgent #robots.txtを無視するかも
#■#▲User-agent: Meta-ExternalFetcher #Facebook・インスタ・Messengerの共有・robots.txtを無視するかも
#■User-agent: linkdexbot
#■User-agent: Nimbostratus-Bot
#■User-agent: PetalBot
#■User-agent: Qwantify
#■User-agent: rogerbot
#■User-agent: searchbot
#■User-agent: SEOkicks
#■User-agent: SemrushBot
#■User-agent: Sogou
#■User-agent: Sogou web spider
#■User-agent: Storebot-Google
#■#▲User-agent: Twitterbot #Twitterの共有
#■User-agent: Uptimebot
#■User-agent: Yahoo! Slurp
#■User-agent: YandexBot
#■User-agent: YisouSpider
#■Disallow: /


##■■■すべてのボットをブロック■■■
##■これを有効にすると各ページの<head>内のインデックス禁止コードを読み取らなくなるので、これは無効にしておいて<head>内を優先させる
#■#▲User-agent: *
#■#▲Disallow: /


##■■■広告・マーケティング関連のボットをブロック■■■
User-agent: AdsTxtCrawler
User-agent: Centro Ads.txt Crawler
User-agent: CipaCrawler
User-agent: GetIntent Crawler
User-agent: IABTechLab Ads.txt Crawler
User-agent: PubMatic Crawler Bot
User-agent: SurdotlyBot
Disallow: /


##■■■その他のクローラーをブロック■■■
User-agent: heritrix
User-agent: Slack-ImgProxy
User-agent: Steeler
User-agent: TweetmemeBot
Disallow: /


##■■■念の為、WooCommerce用■■■
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /wc-api/
Disallow: /?add-to-cart=
Disallow: /?orderby=
Disallow: /?s=


##■■■WordPressの管理画面用■■■
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

##■■■検索エンジン等がCloudflareの/cdn-cgi/ に誤アクセスする対策■■■
Disallow: /cdn-cgi/


Sitemap: https://ほにゃらら.com/sitemap.xml
Sitemap: https://ほにゃらら.com/sitemap.html

ジャンル分けが若干間違ってるかもしれないです。
m(_ _)m

■注意その1■
上記の内容の robots.txt をアップロードする前に現在の robots.txt の内容を確認して、WordPress本体あるいは各種プラグインが自動生成する robots.txt の内容を削除しないようにする必要があります。

 

まず最初に
https://ほにゃらら.com/robots.txt
にアクセスして既存の robots.txt の内容を確認してから上記 robots.txt の内容を追記して下さい。

■注意その2■
robots.txt をサブディレクトリに設置しても読み込まれません。
サブディレクトリをクロール拒否したい場合は、ルートドメイン(ドメイントップ)の robots.txt に

User-agent: *
Disallow: /●サブディレクトリ名●/

と記述します。

ボットの種類に関してはググれば解説サイトがたくさんヒットしますが、

https://blog.cloudflare.com/ja-jp/declaring-your-aindependence-block-ai-bots-scrapers-and-crawlers-with-a-single-click/

をご覧下さい。

少し補足説明します。

 

上記 robots.txt の内容は

  • 各AIボットを拒否
  • 各検索エンジンのボットは許可

となっています。

 

各検索エンジンのボットのクロールを拒否していない理由は、後述の「WordPressテーマのheader.phpで拒否する」を優先させるためです。
「WordPressテーマのheader.phpで拒否する」の設定をしつつ robots.txt でも検索エンジンのボットをブロックすると、検索エンジンは robots.txt の指示に従い各ページをクロールしません。
この状態でもし他サイトからリンクされている場合、リンク先をクロールするのでリンク先のページがインデックスされてしまう可能性があります。

 

これを回避するために、あえて robots.txt では各検索エンジンのクロールは禁止せず、後述の「WordPressテーマのheader.phpで拒否する」にて各検索エンジンのクロールをブロックします。

 

もしその必要がない場合は、上記 robots.txt 内の

##■■■検索エンジンのボットをブロック■■■
##■これを有効にすると各ページの<head>内のインデックス禁止コードを読み取らなくなるので、これは無効にしておいて<head>内を優先させる
#■User-agent: 360Spider
#■User-agent: AdsBot-Google
#■User-agent: AhrefsBot
#■User-agent: Amazonbot
#■User-agent: Applebot #SiriとSpotlight
#■User-agent: archive.org_bot
#■User-agent: Baiduspider
#■User-agent: Baiduspider-image
#■User-agent: Baiduspider-video
#■User-agent: Bingbot
#■User-agent: BingPreview #Bingの画像検索
#■User-agent: BLEXBot
#■User-agent: coccocbot
#■User-agent: DataForSeoBot
#■User-agent: DuckAssistBot
#■User-agent: DuckDuckBot
#■User-agent: Exabot
#■#▲User-agent: Facebookexternalhit #Facebook・インスタ・Messengerの共有
#■User-agent: FeedlyBot
#■#▲User-agent: Google-InspectionTool #Googleのリッチリザルト・テスト や URL 検査ツール
#■User-agent: Google-PageRenderer
#■User-agent: Googlebot
#■User-agent: Googlebot-Image
#■User-agent: Googlebot-News
#■User-agent: Googlebot-Video
#■#▲User-agent: Linebot #ラインの共有
#■User-agent: MJ12bot #Majestic SEO
#■User-agent: Mediapartners-Google #Google AdSense
#■User-agent: Meta-ExternalAgent #robots.txtを無視するかも
#■#▲User-agent: Meta-ExternalFetcher #Facebook・インスタ・Messengerの共有・robots.txtを無視するかも
#■User-agent: linkdexbot
#■User-agent: Nimbostratus-Bot
#■User-agent: PetalBot
#■User-agent: Qwantify
#■User-agent: rogerbot
#■User-agent: searchbot
#■User-agent: SEOkicks
#■User-agent: SemrushBot
#■User-agent: Sogou
#■User-agent: Sogou web spider
#■User-agent: Storebot-Google
#■#▲User-agent: Twitterbot #Twitterの共有
#■User-agent: Uptimebot
#■User-agent: Yahoo! Slurp
#■User-agent: YandexBot
#■User-agent: YisouSpider
#■Disallow: /


##■■■すべてのボットをブロック■■■
##■これを有効にすると各ページの<head>内のインデックス禁止コードを読み取らなくなるので、これは無効にしておいて<head>内を優先させる
#■#▲User-agent: *
#■#▲Disallow: /

の箇所に関して、
##■■■検索エンジンのボットをブロック■■■

##■■■すべてのボットをブロック■■■

##■これを有効にすると各ページの<head>内のインデックス禁止コードを読み取らなくなるので、これは無効にしておいて<head>内を優先させる
以外の先頭の「#■」を削除して下さい。
※「#■」を「」で一括置換しても大丈夫なようにしてあります。

 

この場合でも「#■#▲」の箇所はそのままにしておくことをオススメします。
「#■#▲」の箇所を有効にすると、インスタ・Twitter等の共有リンクの見た目やGoogleのリッチリザルト・テストの挙動等がおかしくなります。

検索エンジン等がCloudflareの/cdn-cgi/ に誤アクセスする対策 

WordPressの設定でnoindexにする

WordPressの設定から「noindex」を指定することで、検索エンジンがページをインデックスしないようにする方法です。
WordPressであれば、WordPressの管理画面から簡単にサイト全体のnoindex設定ができます。
テーマによっては、あるいはSEOプラグインを使用すれば、個別ページごとのnoindex設定も可能です。

WordPressにログインして、設定 → 表示設定の「検索エンジンでの表示」にて、
検索エンジンがサイトをインデックスしないようにする:チェックON

「検索エンジンがサイトをインデックスしないようにする」をチェックON

で「変更を保存」をクリックするとサイト全体をインデックスしない設定になります。
※全ページの<head>に <meta name="robots" content="noindex"> が自動挿入されます。

この <meta name="robots" content="noindex"> はGoogle・Bingはちゃんと守りますが、AIボットの中には無視するボットもあります。

 

後述の「WordPressテーマのheader.phpで拒否する」のコードのほうがベターですが、検索エンジンにインデックスさせない・AIボットにクロールして欲しくないWordPressサイトの場合はこの設定もしておいたほうが無難です。

 

WordPressテーマのheader.phpで検索エンジンのクローラーを拒否する

テーマのheader.phpファイルを編集し、noindexだけではなく可能な限り全て拒否するコードを直接挿入します。
別にWordPressでなくても <head> 内に下記コードを追加すればOKです。

WordPressのテーマのheader.phpの
<head>
<meta charset="utf-8">
のすぐ下あたりに以下のコードを追加します。

<!--■BOTとAIのクロールを拒否する■-->
<meta name="robots" content="noindex, nofollow, noarchive, noimageindex, noai">
<meta name="bingbot" content="noindex, nofollow, noarchive">
<meta name="pinterest" content="noindex, nopin">
  • 各AIボットを拒否
  • 各検索エンジンのボットも拒否

このコードはGoogle・Bingはちゃんと守りますが、AIボットの中には無視するボットもあります。 Bytespiderとか

 

■検索エンジンを拒否
noindex:インデックスの拒否
nofollow:ページ内のリンクを辿らないようにクローラーへ要求
noarchive:検索エンジンデータベースへの保存の拒否
noimageindex:画像をインデックスさせない

 

■AIボットのクロールを拒否(単なる要望)
noai:AI学習の拒否を要望。
このタグは提唱されているだけなので、現時点で noindex, nofollow, noarchive, noimageindex, noai の全てを無視するAIボットも多いはずです。
将来的にAI業界全体にこのタグが浸透しても、このタグだけでAIボットのクロール拒否は無理な気がします
無視するAIボットは必ず存在するので。Byte(ryとか

 

現時点で1番確実にAIボットを拒否する方法は、CloudflareのWAFでAIボットを拒否する です。

 

WordPressのプラグインでAIボットと検索エンジンを拒否する

WordPressの場合はAIボットや検索エンジンのクロールを拒否できるプラグインがいくつかあります。

現時点では私はプラグインでのクロール拒否設定はしてないです。
つまり、下記プラグインは1つも使っていません。

 

■Shield: Blocks Bots, Protects Users, and Prevents Security Breaches

Shield: Blocks Bots, Protects Users, and Prevents Security Breaches
Shield stops bot attacks before they hack your site. Bots CAN be stopped. Shield stops them.

■特徴
包括的なセキュリティプラグインで、ボットのブロックだけでなくユーザー保護やセキュリティ侵害の防止にも役立ちます。

 

ボット攻撃の防御に特化・silentCAPTCHAによるボット検出・詳細なアクティビティログ・ログイン試行回数の制限・ユーザー登録スパムのブロック・二要素認証(2FA)・ファイルスキャナによる改ざん検出・CrowdSecとの連携によるIPブロックリスト活用など、強力なファイアウォール機能・ログインセキュリティ・スパム対策などが含まれます。

 

AIボットのブロックにも対応しています。

 

■有料・無料
無料版と有料版(ShieldPRO)があります。
有料版では、より高度なセキュリティ機能やサポートが利用可能です。

 

■BBQ Firewall – Fast & Powerful Firewall Security

BBQ Firewall – Fast & Powerful Firewall Security
The fastest firewall plugin for WordPress. Protect against a wide range of threats with minimal performance impact.

■特徴
高速かつ強力なファイアウォールプラグインで、悪意のあるクエリをブロックします。
軽量でリソース消費が少ないのでパフォーマンスへの影響が少ないため、高速なウェブサイトを維持できます。
シンプルで設定が簡単です。
悪質なボットのアクセスを遮断します。

 

■有料・無料
無料版のみ

 

■Blackhole for Bad Bots

Blackhole for Bad Bots
Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied ...

■特徴
「ブラックホールと呼ばれる」リンクを設置し悪質なボットをトラップ、それにアクセスしたボットをブロックします
ボットが誤ってブラックホールにアクセスした場合、自動的にブロックリストに追加されます。

 

AIボットのアクセスも遮断します。

 

■有料・無料
無料版のみ

 

■AI Deny

AI Deny
Easily block over 30 of the most common AI user-agents known for crawling websites, keeping unauthorized bots at bay.

■特徴
AIボットのアクセスを拒否することに特化した、比較的新しいプラグイン。
AIを利用してボットを識別し、AIボットのアクセスを拒否します。
AIボットのアクセスを拒否するためのメタタグを自動的に追加し、robots.txtの設定も可能で、設定が簡単です。

 

AIによる精度の高いブロックが特徴です。

 

■有料・無料
無料版のみ

 

■Stop and Block bots plugin Anti bots

Stop and Block bots plugin Anti bots
Real-Time Bot Protection. Anti Bots (robots), crawlers and spiders also from botnets. Increase security and avoid server...

■特徴
多層防御により、悪意のあるボットやスパムをブロックします。
IPアドレス・ユーザーエージェント・リファラなどの情報に基づいてボットを検出します。

 

AIボットのアクセスも遮断します。

 

■有料・無料
無料版のみ

もし私が上記プラグインのどれかを使うなら、AI Deny かな、と思います。

 

.htaccessにX-Robots-Tagを追加する

.htaccessファイルにX-Robots-Tagヘッダーを追加し、サーバーレベルでクロールを制御します。
特定のファイルやページだけのインデックスを防ぐことも可能です。

.htaccessに

<IfModule mod_headers.c>
    Header always set X-Robots-Tag "noindex,nofollow,noarchive,noimageindex,noai"
</IfModule>

と記述します。

.htaccessに
<IfModule mod_headers.c>
Header always set X-Robots-Tag "noindex,nofollow,noarchive,noimageindex,noai"
</IfModule>
と記述する方法と、

 

ソースの <head> 内に
<!--■BOTとAIのクロールを拒否する■-->
<meta name="robots" content="noindex, nofollow, noarchive, noimageindex, noai">
と記述する方法との違いは、

 

■.htaccess のX-Robots-Tag
.htaccessによる設定は、サーバーレベルでの指示となります。
これにより、特定のディレクトリやファイルに対する指示を一括して設定できます。

 

サーバーからの応答ヘッダーにX-Robots-Tagを追加するため、HTMLファイルだけでなく画像やPDFなどの他のファイルタイプにも適用できます。
サーバー側での設定となるため、HTMLファイルが生成される前に指示を出すことができます。

 

■HTMLの <meta name="robots">
HTMLの <meta name="robots"> タグは、ページレベルでの指示となります。

 

個々のHTMLファイル内に記述する必要があり、そのページにのみ適用されます。
※WordPress設定での「検索エンジンがサイトをインデックスしないようにする」は全ページ一括設定する仕組みです。

 

HTMLファイルを解析できるクローラーにのみ有効です。
画像やPDFなどの他のファイルタイプには適用されません。
HTMLファイルが生成された後に、指示を出すことになります。

 

■設定の優先順位
一般的に、X-Robots-Tagの方が <meta name="robots"> タグよりも優先されます。つまり、両方の設定が矛盾する場合、X-Robots-Tagの設定が優先されます。

 

特にボットがページをクロールする際には、HTTPヘッダーのX-Robots-Tagを優先的に確認することがあります。

以上のような違いがあるため、念のため .htaccessと <meta name="robots"> の両方で拒否する設定にした次第です。

 

ちゃんとX-Robots-Tagが設定できているかの確認は、
F12キーでデベロッパーツール・ウェブ開発ツール(開発者モード)を開く

「ネットワーク」タブにて、「ドキュメント」あるいは「HTML」をクリックしたらページを読み込む

読み込んだhtmlをクリック

 

そうするとヘッダーの内容が表示されるので、その中に
 x-robots-tag:noindex,nofollow,noarchive,noimageindex,noai
という項目があれば設定できています。

x-robots-tagがあればOK

 

Bytespider対策を追加する

Bytespider(ByteDance社のクローラーでTikTok関連のAIボット)はrobots.txtやheader.phpのnoindexの記述を無視すると言われています。
その上、Bytespiderはユーザーエージェントを「Googlebot-Image」と偽装してアクセスしてくることがあるみたいで悪質です。

 

そこで、ここまでの作業で設定した

  • .htaccess
  • robots.txt
  • header.php

の各記述に加えて、特に悪質なBytespiderからのクロールを拒否します。

.htaccess に以下の記述を追加しておきます。

# ■Bytespider対策(補助的)
BrowserMatchNoCase "Bytespider" spam_crawler
<RequireAll>
Require all granted
Require not env spam_crawler
</RequireAll>

ただし、Bytespiderはrobots.txtやheader.phpのnoindexの記述を無視する可能性が非常に高いので、あくまで補助的な対策です。
後述のCloudflareのWAFで拒否するほうが確実です。

 

前述のプラグインでも、使い方次第では確実性があるかもしれません。
ただしプラグインによってはクローラー拒否以外にファイアーウォール的・総合的なセキュリティ機能のプラグインもあるので注意が必要です。
その理由 + AIを使って判断している点を考慮して

もし私が上記プラグインのどれかを使うなら、AI Deny かな、と思います。

とチョイスした次第です。

 

なお、現時点ではBytespiderのBOTのユーザーエージェントは「Bytespider」のみでほぼ間違いないみたいです。
今後変更される可能性もあります。

 

■注意その1その2■ここまでの注意点まとめ

ここまでの対策での注意点として2つ、

■注意その1
robots.txt をアップロードする前に現在の robots.txt の内容を確認して、WordPress本体あるいは各種プラグインが自動生成する robots.txt の内容を削除しないようにする必要があります。

 

まず最初に
https://ほにゃらら.com/robots.txt
にアクセスして既存の robots.txt の内容を確認してから上記 robots.txt の内容を追記して下さい。

 

■注意その2
サブディレクトリをクロール拒否したい場合は、ルートドメイン(ドメイントップ)の robots.txt に

User-agent: *
Disallow: /●サブディレクトリ名●/

と記述します。
※サブディレクトリ用の.htaccessはサブディレクトリに設置します。

です。

 

各ファイルをFTPソフトでアップロードしたら、その都度「ちゃんと設定できているか」、デベロッパーツール・ウェブ開発ツール(開発者モード)・各種Webサービス等で確認してみて下さい。

 

【推奨】CloudflareでAIボットを拒否する(必要に応じて検索エンジンも拒否)

私はCloudflareのエッジキャッシュは使ってないのですが、セキュリティ対策としてCloudflare自体は経由させています。
というか、元に戻すのが面倒なのでそのままなだけなんですが。。。

 

Cloudflareには「AIボットをブロック」という大変便利な機能があり、ワンクリックでかなりの種類のAIボットをブロックできますが、今回はCloudflareのWAF(Web Application Firewall)を使用し、AIボットからのアクセスを遮断します。

 

Cloudflareの「AIボットをブロック」あるいはWAFの機能は、今まで書いた対策と比べて(検索エンジンのボットも含めて)AIボットのクロールを確実に拒否できる可能性が非常に高いです。
その上、WAFの場合は高度な設定が可能です。

Cloudflareの無料プランの場合、適切に設定しないとWordPress管理画面にログインした状態のページがキャッシュされることがあります。
ご自身でちゃんと設定できなさそうな場合あるいは心配な場合は

Cloudflareの各種設定を代行します。
Cloudflare設定代行でサイトを強化しませんか?表示の高速化・安定性向上、セキュリティ強化など、様々な面でのメリットが期待できます。経験豊富な専門家がサポートし、検索エンジン上位へのランキング向上やトラフィック増加を実現します。

をお申し込みいただければ、Cloudflareの基本的な設定およびWordPressログイン状態をキャッシュしない設定までお引き受けいたします。

 

CloudflareでAIボットを拒否する方法をオススメする理由

robots.txtでAIボットのクローラーを拒否してもユーザーエージェントを偽装されれば簡単に突破されます。
また、robots.txtは紳士協定(お願い的なやつ)なので、全てのAIボットが遵守するわけではありません。

 

nofollow・noindexに関して、Googleでさえたまに無視してクロールします。

Cloudflareの「AIボットをブロック」あるいはWAFの機能における

  • AIボット
  • 検索エンジンのボット

であるという判断はCloudflareの膨大なネットワーク(1秒間に平均5700万件以上のリクエストを処理できる)で処理されるデータを活用して、AIボットの行動パターンを学習し、高精度で検出します。

 

例えば、Bytespiderのような悪意のあるAIボットがユーザーエージェントを偽装したとしてもその他の特徴から「ボットらしさ」をスコア化し、スコア30点以下のアクセスを自動的にブロックします。

 

スコア化したボットは、後述の検証済みボット・既知のボットの各リストに定期的に更新・追加されます。

robots.txtは自分で更新しない限り古い内容のまま(※1)ですが、Cloudflareの検証済みボット・既知のボットの各リストは定期的に更新されるため常に最新のボットリストになり、これはセキュリティ的に優位です。

 

※1 とは言っても当ページの「robots.txtで拒否する」の箇所の内容は、当面はかなりの割合のAIボットをカバーできるはずです。

 

 

ワンクリックで設定できる「AIボットをブロック」だと後述のサイト8がインデックスされなくなるので、後述の9サイトはWAFで設定します。
以下、CloudflareでAIボットを拒否する設定手順を9サイトを例に説明します。

 

【初心者向け】1サイト/1ドメインを丸ごとAIボット拒否する

1サイトしかない場合や1ドメイン丸ごとAIボット拒否でOKな場合は、Cloudflareの設定 → セキュリティ → ボットにある「AIボットをブロック」という一括設定をチェックONにするだけでOKです。
ただし、後述のCloudflareのアカウントAのWAF設定のほうがブロックするボットの数が多いです、たぶんですけど。

 

この「AIボットをブロック」でブロックされるAIボットの種類は、

  • 全ての検証済みボット

および

  • 「検証済みボット」カテゴリーに分類される多数の未検証ボット

をブロックします。

  • 検索エンジン カテゴリに分類される検証済みボットはブロックされません。

とのことです。

Bots ?? Cloudflare bot solutions docs
A bot is a software application programmed to do certain tasks.
 

【中級者向け】複数サイト/複数ドメインでAIボット拒否設定を行う方法

複数サイト・複数ドメインの場合や少し複雑な設定が必要な場合は以下をお読みいただき、ご自身の環境にあわせて条件・値等を修正してみてください。

 

Cloudflareの無料アカウントでOKですが、今までの設定と比べて少し難易度が高(ry・・・くもないか。
初見だと難しそうに思えるかもしれませんが、Cloudflareの設定画面を何度かいじっていれば簡単です。

 

以下、私の手持ちの9サイト・Cloudflareアカウント2つで具体的に説明しますが、

  • WordPressで1サイトのみの場合は、CloudflareのアカウントAのWAF設定そのままでOKです。
  • WordPressではない1サイトの場合は、値:/wp-admin/ の箇所を管理画面のURLの一部に修正すればOKなはずです。
 

1サイトのみの場合は、以下の説明は飛ばしてCloudflareのアカウントAのWAF設定 に進んでも大丈夫です、と思います。

 

【事例紹介】2つのCloudflareアカウント、9サイトのWAF設定方針

Cloudflareの無料アカウント2つに2ドメイン9サイトぶんが入っています。 

■CloudflareのアカウントA
同じ1つのドメインでドメイン1つ・サブドメイン1つあり、どちらもWordPressです。

 
  • サイトその1(WordPress。AI・検索エンジンともに、WordPress管理画面以外はインデックス許可■・クロール許可■)
  • サイトその2(WordPress。AI・検索エンジンともに、WordPress管理画面以外はインデックス許可■・クロール許可■)

以下、難易度がグッと上がります><

■CloudflareのアカウントB
同じ1つのドメイン(アカウントAとは違うドメイン)でドメイン1つ・サブディレクトリ1つ・サブドメイン5つあります。

 
  • サイトその3(WordPress。会員用サイトなので、AI:クロール拒否・インデックス拒否/検索エンジン:クロールはしても良いけどインデックス拒否)
  • サイトその4(WordPress。会員用サイトなので、AI:クロール拒否・インデックス拒否/検索エンジン:クロールはしても良いけどインデックス拒否)

 

 
  • サイトその5(WordPress。AI・検索エンジンともに、WordPress管理画面以外はインデックス許可■・クロール許可■)

 

 
  • サイトその6(WordPress。会員用サイトなので、AI:クロール拒否・インデックス拒否/検索エンジン:クロールはしても良いけどインデックス拒否)
  • サイトその7(WordPress。会員用サイトなので、AI:クロール拒否・インデックス拒否/検索エンジン:クロールはしても良いけどインデックス拒否)

 

 
  • その8(Laravelサイト。フロントページなのでAIにも検索エンジンにもインデックス許可■・クロール許可■)

 

 
  • サイトその9(Laravelサイト。管理画面なのでAI・検索エンジンともに拒否)

CloudflareのWAF設定でAIボットに関して、■だけ許可、それ以外は拒否します。
CloudflareのアカウントBがちょっとややこしいので、WAF設定に注意・工夫が必要です。

 

ここまでの諸々の作業にて、サイトその1258以外の5サイトに関しては必要に応じて、

■.htaccess

#■■■X-Robots-Tagを追加■■■
<IfModule mod_headers.c>
    Header always set X-Robots-Tag "noindex,nofollow,noarchive,noimageindex,noai"
</IfModule>

■robots.txt

  • 各AIボットを拒否
  • 各検索エンジンのボットAIボットは許可
 

■header.php

<!--■ボットとAIのクロールを拒否する■-->
<meta name="robots" content="noindex, nofollow, noarchive, noimageindex, noai">
<meta name="bingbot" content="noindex, nofollow, noarchive">
<meta name="pinterest" content="noindex, nopin">

となっています。

 

その上でさらにCloudflareのWAF設定を追加する理由は、(Bytespiderのように)robots.txtやheader.phpのnoindexの記述を無視するAIボットがいくつかあるので、AIボットをより確実に拒否するためです。

 

あらためてこの9サイトに関して、AIボットおよび検索エンジンのクロールを拒否するWAF設定の方針をまとめると、

■CloudflareのアカウントAの2サイト

  • サイト12(WordPressサイト)は、WordPress管理画面はAIボット・検索エンジンを拒否/それ以外はAIボット・検索エンジンを許可■

■CloudflareのアカウントBの7サイト

  • サイト8(Laravelサイト・フロントページ)は、全てのURLでAIボット・検索エンジンを許可■
  • サイト5(WordPressサイト)は、WordPress管理画面はAIボット・検索エンジンを拒否/それ以外はAIボット・検索エンジンを許可■
  • サイト3467(WordPressサイト)およびサイト9(Laravelサイト・管理画面)は、全てのURLでAIボット・検索エンジンを拒否

■だけ許可、それ以外は拒否します。

 

CloudflareのアカウントAだけならCloudflareの設定 → セキュリティ → ボットの「AIボットをブロック」の一括設定で

  • AIボットをブロック:有効

でもOKですが、それだとサイト8が検索結果に表示されなくなるのでCloudflareの設定 → セキュリティ → WAFのカスタムルール(※2)で対応します。

 

※2 新しいダッシュボードの場合は、Cloudflareの設定 → セキュリティ → セキュリティルールにて、「+ルールを作成」のカスタムルール

 

CloudflareのアカウントAのWAF設定

  • WordPressで1サイトのみの場合は、以下の通りでOKです。
  • WordPressではない1サイトの場合は、値:/wp-admin/ の箇所を管理画面のURLの一部に修正すればOKなはずです。
 

それ以外の場合は CloudflareのWAFでAIボットを拒否する を全てしっかり読んでから慎重に設定して下さい。

Cloudflareの設定 → セキュリティ → WAFのカスタムルール(※3)にて、
■ルール名:サイト12(WordPress):WordPress管理画面はAIボットを拒否■/それ以外はAIボットを許可

 

 フィールド:既知のボット
 オペレーター:次と等しい(グレーアウト)
 値:チェックON
and
 フィールド:URIパス
 オペレーター:次を含む
 値:/wp-admin/
「式を編集」だと (cf.client.bot and http.request.uri.path contains "/wp-admin/")

 

 アクション:ブロック

 

※3 新しいダッシュボードの場合は、Cloudflareの設定 → セキュリティ → セキュリティルールにて、「+ルールを作成」のカスタムルール

 
「検証済みのボット」と「既知のボット」の違い

 フィールド:既知のボット
 オペレーター:次と等しい(グレーアウト)
 値:チェックON

 

ではなく

 

 フィールド:検証済みボットのカテゴリー
 オペレーター:次と等しい
 値:AIクローラー

 

でブロックするという方法もあるみたいですが、Cloudflareの検証済みボット

Just a moment...

を確認してみると、AI Crawlerに該当するBOTは

  • GPTBot
  • GoogleOther
  • Meta-ExternalAgent
  • PetalBot
  • Factset_spyderbot

しかありません。

 

CloudflareのWAFにて、
■検証済みボット
Googlebot、Bingbot、Slackbotなど、Cloudflareが信頼性を検証した既知の良性ボットを指します。

 

Cloudflareが検証して信頼性の高いボットと判断したやつなので、後述のBytespiderみたいにお行儀の悪いボット(できるだけ拒否すべきボット)ではなく、代表的なAIボットの立ち位置です。

 

■既知のボット
Cloudflareが識別して検証した、ボットの広範なリストです。
良性ボットだけでなく、悪意のあるボットや疑わしいボットも含まれます。

 
項目検証済みボット
(Verified Bots)
既知のボット
(Known Bots)
対象信頼できるボットのみすべての既知ボット
(良いボット + 悪いボット)
Googlebot・Bingbot など許可含まれる
(ただし、拒否すると検索エンジンのクロールを止める可能性がある)
悪意のあるボット
(Bytespider など)
含まれない含まれる
SNS クローラー
(Facebook, Twitter, Slack)
許可含まれる
スクレイピングボット含まれない含まれる
セキュリティリスク低い
(安全なボットのみ)
高い
(悪意あるボットも含む)

ということなので、「検証済みボット」よりも「既知のボット」でブロックしたほうが良い気がします。

 
「AIボットをブロック」と「既知のボット」の違い

■AIボットをブロック
Cloudflareが識別したAIボットに特化しており、対象となるボットの数は限られています。
特定のAIボットに焦点を当てているため、対象範囲は比較的狭いです。

 

■既知のボット
より広範なボットを対象としており、スパムボット・スクレイピングボット・AIボット・検索エンジンのクローラーのボット・SEOボット・ソーシャルメディアボットなど、多様なタイプのボットが含まれます。

そのため、「AIボットをブロック」よりもブロックされるボットの数が多くなる可能性があります。

 

■注意その3■インデックス済みのページをあとからnoindexにしたい場合

既知のボットには検索エンジンのクローラーも含まれているので、インデックス済みのページをあとからnoindexにしたい場合は、

いったん

  • 「既知のボット」でブロックするWAFのルールは無効

にしておく

 ↓
「WordPressの設定でnoindexにする」あるいは「WordPressテーマのheader.php」に

<!--■BOTとAIのクロールを拒否する■-->
<meta name="robots" content="noindex, nofollow, noarchive, noimageindex, noai">
<meta name="bingbot" content="noindex, nofollow, noarchive">
<meta name="pinterest" content="noindex, nopin">

を記述する
 ↓
検索エンジンに再クロールの依頼・処理をする
 ↓
Googleサーチコンソール等で該当ページが消えたら、「既知のボット」でブロックするWAFのルールを有効に戻す

というのが本来の正しい流れになります。

 

個人的には初めから

  • 「既知のボット」でブロックするWAFのルールは有効

のままでも、OKな気がします。

上記条件において
■いったん無効の場合

  • (robots.txtで検索エンジンをブロックしてなければ)インデックス済みのページに検索エンジンが再度クロールした時に <head> 内のnoindexを認識して、そのうち検索結果から消える
 

■最初から有効の場合

  • インデックス済みのページに検索エンジンが再度クロールした時にWAFのルールでブロックされて該当ページの中身は見れないので、そのうち検索結果から消える
  • 仮にnoindexにしたいページを今後第三者がリンク貼ったことで検索エンジンがクロールしようとしても、アクセスできないので該当ページの中身は見れない
  • 仮にnodexにしたいページのURLをすでに知っている第三者がアクセスするのをブロックしたい場合は上記設定の有効・無効は関係ない※第三者の端末のIPアドレスをブロックする等の別対策が必要です
 

上記私の考え方の根底にあるのは、Google等はnoindexのルール含めてウェブのルールを守らないことがある、ということです。

 

CloudflareのアカウントBのWAF設定

「CloudflareのアカウントBのWAF設定」は少し複雑です。
まあ、「式を編集」を利用すれば簡単ですけど。

 

なお今回のWAFのカスタムルール(※4)に限らず、Cloudflareで複数のルールがある場合は、基本的に上から順に適用されます。

※4 Cloudflareの設定 → セキュリティ → WAFのカスタムルール/新しいダッシュボードの場合は、Cloudflareの設定 → セキュリティ → セキュリティルールにて、「+ルールを作成」のカスタムルール

 

CloudflareのアカウントBのWAF設定(上から※暫定)

■ルール名:サイト8(Laravelフロント):全てのURLでAIボットを許可
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト8のホスト名(サブドメイン.ホスト名) 例、123.comやsub.123.com
and
 フィールド:URIパス
 オペレーター:次を含まない
 値:/admin/
「式を編集」だと (http.host eq "site-8.com" and not http.request.uri.path contains "/admin/")

 

 アクション:スキップ
一致するリクエストをログに記録する:チェックOFF(でいいかも)
スキップする WAF コンポーネント:残りのすべてのカスタム ルール

 

サイト9がサイト8のサブディレクトリ /admin/ なので、

  • /admin/ を含まない場合つまりサイト8は全てのWAF設定はスキップして全てクロール許可する(このルール)
  • /admin/ を含む場合つまりサイト9は後述のルールに従って拒否します。

 

 

■ルール名:サイト5(WordPress):WordPress管理画面はAIボットを拒否■/それ以外はAIボットを許可
 フィールド:既知のボット
 オペレーター:次と等しい(グレーアウト)
 値:チェックON
and
 フィールド:URIパス
 オペレーター:次を含む
 値:/wp-admin/
「式を編集」だと (cf.client.bot and http.request.uri.path contains "/wp-admin/")

 

 アクション:ブロック

 

 

■ルール名:サイト3467(WordPress)およびサイト9(Laravel・管理画面):全てのURLでAIボットを拒否■
■ここから■
 フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
and
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト3のホスト名
■ここまで■

 

or

 

■ここから■
 フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
and
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト4のホスト名
■ここまで■

 

or

 

■ここから■
  フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
and
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト6のホスト名
■ここまで■

 

or

 

■ここから■
 フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
and
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト7のホスト名
■ここまで■

 

or

 

■ここから■
  フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
and
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト9のホスト名(サブドメイン.ホスト名)
and
 フィールド:URIパス
 オペレーター:次を含む
 値:/admin/
■ここまで■

 

「式を編集」だと (cf.client.bot and http.host eq "site-3.com") or (cf.client.bot and http.host eq "site-4.com") or (cf.client.bot and http.host eq "site-6.com") or (cf.client.bot and http.host eq "site-7.com") or (cf.client.bot and http.host eq "site-9.com" and http.request.uri.path contains "/admin/")

 

 アクション:ブロック

カスタムルールに登録するルールは3つで、最後3つ目の ■ルール名:サイト3467(WordPress)およびサイト9(Laravel・管理画面):全てのURLでAIボットを拒否■ だけ複雑です。

 

■ここから■
■ここまで■
が5つあり、これが「or」で繋がっています。
1 or 2 or 3 or 4 or 5

 

最初の4つ(1234)の中身
■ここから■
■ここまで■
がA and Bとなっていて、
■A
 フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
■B
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト3467のホスト名

 

最後(5)の中身
■ここから■
■ここまで■
だけA and B and Cとなっていて、
■A
  フィールド:既知のボット
 オペレーター:次と等しい
 値: Yes
■B
 フィールド:ホスト名
 オペレーター:次と等しい
 値:サイト9のホスト名(サブドメイン.ホスト名)
■C
 フィールド:URIパス
 オペレーター:次を含む
 値:/admin/

 

「式を編集」でURLだけ変更すれば楽ちんです。

 
■注意その4■WAFのルールが複数ある場合は、上から順に適用される

少し上のほうでも書きましたが、Cloudflareでルールが複数ある場合は、基本的には上から順に適用されます。

 

上記「CloudflareのアカウントBのWAF設定」の説明では3つ目が少し複雑なので説明が長くなるため3つ目に書きましたが、それだと本当は正しい順番ではなく2番目(あるいは1番目)にするのが正しいです。

■暫定・間違ってる順番
上から
サイト8(Laravelフロント):全てのURLでAIボットを許可
サイト5(WordPress):WordPress管理画面はAIボットを拒否■/それ以外はAIボットを許可
サイト3467(WordPress)およびサイト9(Laravel・管理画面):全てのURLでAIボットを拒否■

■正しい順番
上から
サイト8(Laravelフロント):全てのURLでAIボットを許可
サイト3467(WordPress)およびサイト9(Laravel・管理画面):全てのURLでAIボットを拒否■
サイト5(WordPress):WordPress管理画面はAIボットを拒否■/それ以外はAIボットを許可

 

アカウントBのWAF設定に関して、下の画像の順番が正しい順番です。

(上から)正しい順番に入れ替える

複数あるルールの順番は、上記︙︙ の箇所を左クリックしながら上下に入れ替えることができます。

 

CloudflareのWAFでブロックした履歴を確認する方法

CloudflareのWAFでブロックした履歴は、Cloudflareの設定 → セキュリティ → イベントにて

 

フィルターを追加する
アクション
等しい
ブロック
適用

 

で、ブロックした履歴のみが確認できます。

CloudflareのWAFでブロックした履歴

 

 

AIボット・検索エンジンのクロールを拒否する方法7選は以上です。

 

私の場合途中からnoindexにしたサイトもいくつかあるので、現時点ではAIをブロックした数より検索エンジンのクローラーをブロックした数のほうが多いです。
今後AIボットのクローラーのアクセスが増えるに従って、ブロックする数もさらに増えるかと思います。

 

仮にGoogle等の検索エンジンにすでにインデックスされてる場合でも、記事を追加・更新するなりGoogleサーチコンソールにてURL検査ツール等でクロールの再リクエストをするなりしてクローラーが来れば、徐々にインデックスから削除され、検索結果から完全に削除することができます。

 

 

AIクローラー・検索エンジンのボット拒否設定7選は以上です。

以下は番外編ですので、ご興味なければ読む必要はありません。

 

Cloudflareに新しく追加された機能 AI Labyrinth(不正な AI ボットをトラップ) について気になって色々調べたので、その備忘録としてこの記事に追加した感じです。

 

【番外編】Cloudflareで提供されている、超簡単なAIボット対策3つ

先程の私のCloudflareのアカウントBのWAF設定の3つ目
 ■ルール名:サイト3467(WordPress)およびサイト9(Laravel・管理画面):全てのURLでAIボットを拒否■
ではいくつかの条件下で既知のボットをブロックしています。

 

そんな若干複雑な設定をしなくてもCloudflareにはトグルボタンの有効・無効の切り替えだけでAIボット対策できる機能があります。

 

Cloudflareの設定 → セキュリティ → ボットにて

  • ボットファイトモード
  • AIボットをブロック
  • AI Labyrinth(不正な AI ボットをトラップ)

の3つです。

 

Cloudflareのお手軽ボット設定3つ

 

上記画像キャプチャでは

  • AI Labyrinth(不正な AI ボットをトラップ):有効

になっていますが、私は小一時間で

  • AI Labyrinth(不正な AI ボットをトラップ):無効

に戻しました。

 

理由は後述の
■注意その7(SEOへの影響・懸念)■AI LabyrinthがSEOに悪影響を及ぼす可能性がゼロとは(現時点では)断言できない
です。

 

「AIボットをブロック」に関してはこのページの今までの文章ですでに書きましたが、あらためて順番に超手短な説明をします。

 

ボットファイトモード

既知のボットのパターンと一致するリクエストがあった場合、それらがサイトにアクセスする前に、チャレンジを実施します。
この機能には JavaScript Detections が含まれます。

 

ボットファイトモードは、既知のボットのパターンに一致するリクエストに対してチャレンジを実施する機能です。
WAFのカスタムルールとは独立して動作します。

 
Get started with Bot Fight Mode ?? Cloudflare bot solutions docs
Bot Fight Mode is a simple, free product that helps detect and mitigate bot traffic on your domain. When enabled, the pr...
 

私はCloudflare無料プランなので上記「ボットファイトモード」ですが、有料のProプラン・Businessプラン・Enterpriseプランでは「スーパーボットファイトモード」となり、有料プランのグレードが上がるごとにボットファイトモードの機能がより高機能になります。

 
スーパーボットファイトモードのご紹介
Beginning immediately, any Cloudflare user with a Pro or Business site can take new action against bots. We’ve added adv...
 

AIボットをブロック

モデルトレーニングなどの AIアプリケーション用にボットがコンテンツをスクレイピングするのワンクリックでをブロックします。
注: AIボットをブロックすると、検証済みのAIボットもブロックされます。

  下記ページにある設定画面の画像キャプチャー内の「AI Scrapers and Crawlers」が日本語メニューでの「AIボットをブロック」です。
https://blog.cloudflare.com/ja-jp/declaring-your-aindependence-block-ai-bots-scrapers-and-crawlers-with-a-single-click/
 

AI Labyrinth(不正なAIボットをトラップ)

Webサイトの robots.txt ファイルを無視するAIボットがウェブサイトのコンテンツにアクセスするのを防ぎます。
許可されていないAIボットは、生成されたnofollowリンクの迷路(AI Labyrinth)に誘導されます。

参考:CloudflareがAIクローラーを無限生成迷路に閉じ込める「AI Labyrinth」を発表

 
Trapping misbehaving bots in an AI Labyrinth
How Cloudflare uses generative AI to slow down, confuse, and waste the resources of AI Crawlers and other bots that don’...
 

■注意その5(優先順位)■AI LabyrinthよりWAFのカスタムルールが優先される

私はCloudflareアカウントBのWAFのカスタムルール3つ目にて、いくつかの条件下で既知のボットをブロックしています。

 

一方AI Labyrinth(不正なAIボットをトラップ)は、ウェブサイトのrobots.txtファイルを無視するAIボットをAI Labyrinth に誘導されます。
この仕組みとして、ページに人間がクリックできないリンク(※5)を埋め込み、クローラーが移動したくなるほど説得力のある一連のAI生成ページへのリンクを辿らせます。
つまり、ブロックしないで「AI Labyrinth」に誘導します。

 

※5 この「AI Labyrinth」のリンクはnofollowのリンクです。

 

■注意その5■

AI Labyrinth(不正なAIボットをトラップ)よりWAFのカスタムルールが優先されます。

 
Bots ?? Cloudflare bot solutions docs
A bot is a software application programmed to do certain tasks.

例、

  • AI Labyrinth(不正なAIボットをトラップ):有効
  • WAFのカスタムルール:既知のボットをブロック

とした場合

  • WAFのカスタムルール:既知のボットをブロック

が先に処理されます。

 
WAFのカスタムルール + AI Labyrinthの場合の動作の流れ

以下、WAFのカスタムルールで「既知のボット:ブロック」 + AI Labyrinth:有効 の場合の動作の流れ・順番です。

 

リクエストがCloudflareに到達します。
 ↓
WAFのカスタムルールが実行されます。
 ↓
WAFのカスタムルールに合致した場合、既知のボットとして定義されているクローラーをブロックします。
 ↓
WAFのカスタムルールに合致しない場合、次のルールに進みます。
 ↓
AI Labyrinthが実行されます。

 
「既知のボット」と「AI Labyrinthが対象とするAIボット」の違い

AI Labyrinth(不正なAIボットをトラップ)は、robots.txtを無視する「不正な」AIボットを対象としています。

一方私のCloudflareアカウントBのWAFのカスタムルールでブロックしているのは、既知のボットリストに登録されているボットであるため、対象が異なります。

 

もし私が両方設定・有効にした場合は、WAFの私のカスタムルールでブロックしている「既知のボット」以外かつrobots.txt を無視するAIボットがAI Labyrinthに誘導されます。

 
あらためて「既知のボット」とは?

かなり上ほうで表に書きましたが、

項目既知のボット
(Known Bots)
対象すべての既知ボット
(良いボット + 悪いボット)
Googlebot・Bingbot など含まれる
(ただし、拒否すると検索エンジンのクロールを止める可能性がある)
悪意のあるボット
(Bytespider など)
含まれる
SNS クローラー
(Facebook, Twitter, Slack)
含まれる
スクレイピングボット含まれる
セキュリティリスク高い
(悪意あるボットも含む)

AI Labyrinthの件で「既知のボット」の具体的なリスト・一覧が知りたくて、さらに色々調べたのですが・・・

 

「既知のボット」とは

正当なボットを管理する方法|正当なボットと悪意のあるボット

にある正当なボット(良いボット) + 悪意のあるボット(悪いボット)ではないみたいです。

つまり
 既知のボット ≠ 正当なボット + 悪意のあるボット
みたいです。

 

もうどうでもいいじゃん!・・・じゃ良くないか><

 

もう調べるの面倒なのでAIに聞きました笑

CloudflareがWAFカスタムルールで使用する「既知のボット」は、上記URLにあるようなリストを直接参照しているわけではありません。

 

Cloudflareは、独自のボット検出技術を用いてボットを識別しています。
この技術は、HTTPヘッダー・IPアドレス・行動パターンなどの様々な要素を分析し、機械学習モデルを用いてボットを識別します。

 

Cloudflareが「既知のボット」と判断したものは、内部的に管理されているリストに追加されます。
このリストは非公開みたいです。

 

つまり、Cloudflareの「既知のボット」は

  • 正当なボット(良いボット): 検索エンジンのクローラー、モニタリングツールなど、robots.txtに従い、正当な目的でアクセスするボット
  • 悪意のあるボット(悪いボット): スクレイピングボット・スパムボット・DDoS攻撃ボットなど、robots.txtを無視したり悪意のある目的でアクセスするボット

の両方を含む可能性がありますが、「既知のボット」の具体的なリストは公開されていません。

 

ただしCloudflareでは、正当なボットを誤ってブロックしないように様々な対策を講じています。
例えば、正当なボットのUser-Agentを認識しブロック対象から除外したり、正当なボットからのリクエストに特別なスコアリングを適用したりします。

一応書いておきますと、AIは平気でウソの回答をするので注意が必要です。
上記は私が調べた限りの内容とあってます。

 

■まとめ■
Cloudflareの「既知のボット」は、

  • Cloudflare独自のボット検出技術によって識別されたボットのこと
  • 正当なボットと悪意のあるボットの両方を含む可能性が高い
  • Cloudflareの内部で管理されており、そのリストは非公開

ということです。⊂⌒~⊃。Д。)⊃

やっぱどうでもい(ry

 

■注意その6■サーバーのリソース使用量UPの可能性がある

AI Labyrinthはクローラーが移動したくなるようなAI生成ページを動的に生成するため、サーバーのリソースを消費する可能性があります。
トラフィック量によっては、サーバーの負荷が増加する可能性があります。

とのことです。

 

私はCloudflareは利用していますが、先ほどのCloudflareアカウントBではCloudflareのキャッシュ(エッジキャッシュ)は無効・バイパスにしてあります。

 

ですので、

  • AI Labyrinth(不正な AI ボットをトラップ):無効

に戻したのはこれが理由ではありません。

 

CloudflareアカウントAが入っているサーバーは、普段は平均

  • CPU:1%
  • メモリ:2 ~ 3%

で、ディスク使用率:3%です。

CloudflareアカウントBが入っているサーバーは、普段は平均

  • CPU:1 ~ 3%
  • メモリ:10 ~ 20%

で、ディスク使用率:1%です。

 

■注意その7(SEOへの影響・懸念)■AI LabyrinthがSEOに悪影響を及ぼす可能性がゼロとは(現時点では)断言できない

AI LabyrinthはSEO的にマイナスになる可能性が現時点ではゼロではない気がします。

 

AI Labyrinthが生成するリンクはnofollowのリンクです。
通常であればGoogleなどの検索エンジンのクローラーはnofollowのリンクは辿りません・・・と一般的には言われています。

 

ですが私の経験では、Googleでさえもnofollowのリンクをたどる事がありました。

参考:nofollow属性の変更はクロールとインデックスに使われるようになったのか? (ちょっと古い記事です。)

 

AI Labyrinthはその内容が発表されてまだ1週間も経過してない、超新しい機能です。※2025年3月28現在

  • 検索エンジンがnofollowのリンクをたどる可能性がゼロではない
  • AI Labyrinthが生成する人間がクリックできないリンクが隠しテキストに該当する可能性があるのか・ないのかが(現時点では)不明である
  • AI Labyrinthが生成するリンク先の、AI Labyrinthが生成するAI生成ページは通常は低品質なコンテンツである

この3点を考慮した結果、私は

  • AI Labyrinth(不正な AI ボットをトラップ):無効

に戻しました。

 

ただし、

  • AI Labyrinthは、robots.txtを無視するクローラーを対象としている
  • robots.txtを無視するクローラーは、通常は悪意のあるボットである可能性が高い

ということなので、通常は(Googleのような)SEOに配慮したクローラーは対象外となる可能性が高いです。

 

「AI LabyrinthがSEO的に悪影響がゼロである」と断言できるようになるには、あくまでGoogleがrobots.txtを無視しないことが前提・絶対条件ですので、私はAI Labyrinthは無効に戻しました。

 

現時点ではAI Labyrinthを有効にして使うかどうかの判断はご自身の判断でお願いします。

 

心配な場合は、Cloudflareの無料プランではなくPro または Businessプランにアップグレードして、スーパーボットファイトモードの設定を変更すれば、上記のような懸念は払拭・回避できるかもしれません。
また、EnterpriseプランであればCloudflareのログを外部のストレージサービスにエクスポートできるらしく、そうすれば詳細なログ分析が可能になるみたいです。




って、そこまでしてAI Labyrinthを導入するならWAFのカスタムルールでブロックするのでいいじゃん!って、個人的には思います。

タイトルとURLをコピーしました