Cloudflare の Bot Management は、リクエストがボットから来ている可能性をスコア化します。
ボット対策のカスタムルールを作る前に、Security Settings ページの Bot traffic で設定を確認します。組み込み機能は新しいボットシグネチャで自動更新され、カスタムルールの上限には含まれず、管理も簡単です。
| 用途 | ボット設定 |
|---|---|
| AI クローラー(GPTBot、ClaudeBot など)をブロックする | Block AI bots |
| 確実に自動化されたトラフィック(ボットスコア 1)をブロックする | Definitely automated |
| 自動化の可能性が高いトラフィック(ボットスコア 2〜29)にチャレンジを出す | Likely automated |
| 検証済みボット(Googlebot、Bingbot など)を許可する | Verified bots |
| 静的リソースにもボット対策を広げる | Static resource protection |
| WordPress のループバックリクエストを許可する | Optimize for WordPress |
カスタムルールは、パスごとの保護(/api/ と /login/ で扱いを変える)、独自のスコアしきい値(たとえば 30 ではなく 20 未満)、ボットスコアとほかのフィールドを組み合わせる条件、組み込み設定にない独自アクションが必要なときに役立ちます。
ボットスコアは 1 から 99 です。低いスコアは、リクエストがスクリプト、API サービス、または自動エージェントから来ていることを示します。高いスコアは、人が標準のデスクトップまたはモバイル Web ブラウザーから出したリクエストであることを示します。
これらの例では次を使います。
- ボットからのリクエストを対象にする
cf.bot_management.score - 既知の善良なボット ↗ からのリクエストを識別する
cf.bot_management.verified_bot - 特定の JA3 Fingerprints を対象にする
cf.bot_management.ja3_hash
最良の結果を得るには、次を行います。
- ルールを適用する前に、Bot Analytics でトラフィックを把握します。
- 小さく始めて、ボットのしきい値を徐々に上げます。
ルールは、サイトの性質 や誤検知への許容度によっても変わります。
次の 3 つのカスタムルールは、悪意のあるボットに対する基本的な保護を提供します。
ルール 1: 検証済みボットをスキップする
- Expression:
(cf.bot_management.verified_bot) - Action: Skip:
- All remaining custom rules
- 既知の正常なボット(Googlebot、Bingbot、監視サービス)は、残りのカスタムルールをすべてバイパスします。検証済みボットの一覧 と Radar のボットディレクトリ ↗ を参照してください。
ルール 2: 確実に自動と判断したトラフィックをブロックする
- Expression:
(cf.bot_management.score eq 1) - Action: Block
- スコア 1 のトラフィックは、確実に自動です。ブロックしても偽陽性のリスクはごく小さいです。
ルール 3: 自動である可能性が高いトラフィックにチャレンジする
- Expression:
(cf.bot_management.score gt 1 and cf.bot_management.score lt 30) - Action: Managed Challenge
- スコア 2〜29 は、自動である可能性が高い挙動を示します。チャレンジにより、正当なユーザーは通過でき、ボットは止まります。
リクエストが確実に自動化されている(スコア 1)、または自動化の可能性が高い(スコア 2〜29)かつ、既知の善良なボットの一覧にない場合、Cloudflare はそのリクエストをブロックします。
- 式:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot) - アクション: Block
Bot Management は自動化されたユーザーを検出するため、正当な 自動トラフィックを明示的に許可する必要があります。これには API ↗ とパートナー API が含まれます。
この例は、ブラウザー専用ルールと同じ保護を提供しつつ、API への自動トラフィックを許可します。
- 式:
(cf.bot_management.score lt 30 and not cf.bot_management.verified_bot and not starts_with(http.request.uri.path, "/api")) - アクション: Block
Bot Management はモバイルトラフィックにより敏感なことがあるため、正当なリクエストをブロックしないよう、追加の条件を入れることがあります。
自社のモバイルアプリケーションからのリクエストを扱う場合は、その JA3 フィンガープリント に基づいて許可できます。
- 式:
(cf.bot_management.ja3_hash eq "df669e7ea913f1ac0c0cce9a201a2ec1") - アクション: Skip:
- All remaining custom rules
それ以外の場合は、モバイルトラフィック向けにしきい値を下げます。次のルールは、確実に自動化されたモバイルトラフィックをブロックし、自動化の可能性が高いトラフィックにチャレンジを出します。
ルール 1:
- 式:
(cf.bot_management.score lt 2 and http.user_agent contains "App_Name 2.0") - アクション: Block
ルール 2:
- 式:
(cf.bot_management.score lt 30 and http.user_agent contains "App_Name 2.0") - アクション: Managed Challenge
ドメインがモバイル、ブラウザー、API のトラフィックを扱う場合は、これらの例のルールを次の順に並べます。
- API トラフィック 向けのルール
- モバイルトラフィック 向けのルール
- ブラウザーのトラフィック 向けのルール
cf.bot_management.score フィールドを使ってカスタムルールを作ると、静的リソースはデフォルトで保護されます。
静的リソースを除外するには、ルール式に not (cf.bot_management.static_resource) を含めます。詳細は 静的リソースの保護 を参照してください。
そこから、特定のリクエストパス(/login や /signup)、よくあるトラフィックパターン、その他多くの特性に基づいて、カスタムルールを調整できます。
ルールの追加調整が必要かどうかを確認するには、Bot Analytics と Security Events を確認してください。