今日ウェブ上ではボット、クローラー、AIツールなどが絶えずウェブサイトをスキャンし、コンテンツやデータを探しています。

検索エンジンのクローラーなど、コンテンツの発見に役立つボットもありますが、トラフィックの指標や分析の整合性に即座に影響を与え、サーバーの超過料金が発生する可能性があります。

そこで今回は、Cloudflareを利用して不要なボットトラフィックを減らし、WordPressサイトを保護して、サーバーリソースを訪問者のために確保する方法をご紹介します。ボットファイトモード、JavaScript、マネージドチャレンジなどのセキュリティツールは、無料で使用することができます。

Cloudflareのボット対策機能(無料で利用可能)

Cloudflareで不要なボットトラフィックを遮断するのに、有料プランや複雑な設定は不要です。無料プランでも強力なセキュリティ機能を利用できます。

サイトをCloudflareに接続する

Kinstaのお客様は、エンタープライズグレードのパフォーマンスとグローバルCDNを含むCloudflare統合により、Cloudflareの恩恵をデフォルトで受けることができますが、高度なセキュリティツールを利用するには、別途Cloudflareアカウントを接続する必要があります。

設定方法は簡単です。以下の記事でドメインの追加からDNSレコードとネームサーバーの設定までを詳しくご紹介しています。

👉 WordPressサイトにCloudflareを導入する方法

ドメインとCloudflareを接続し、有効になったら、セキュリティ機能を設定することができます。

ボットファイトモードを利用する

不要な自動トラフィックのフィルタリングを手っ取り早く開始するには、ボットファイトモードを利用します。

この無料機能はクロール、スクレイピング、または過負荷をかける可能性のある既知のボットを検出し、軽減するのに役立ちます。

ボットファイトモードは、以下の手順で有効にすることができます。

  1. 左側メニューから「セキュリティ」>「設定」に移動
  2. フィルター」セクションの「ボットトラフィック」を選択
  3. ボット ファイト モード」のトグルスイッチをオンに切り替える
Cloudflare管理画面の「ボット ファイト モード」を有効化
Cloudflare管理画面の「ボット ファイト モード」を有効化

これを有効化すると、MyKinstaの分析画面で結果を監視することができます。サイトに到達する前にCloudflareが正当な訪問者以外のリクエストをフィルタリングするため、訪問数が減少し始めます。

Cloudflareの有料プランをご利用の場合は、ボットファイトモードの強化版であり、より柔軟性の高いスーパーボットファイトモードを利用することができます。このモードは、基本となるボットファイトモードと同じ技術がベースになっていますが、さまざまな種類のトラフィックに対してどのように処理するかを選択でき、JavaScriptを使った検出によって、ヘッドレスブラウザやステルス型スクレイパーなどの悪意あるトラフィックをより的確に捕捉できるようになっています。

例えば、すべてのクローラーをブロックする代わりに、「Definitely automated traffic(確実に自動トラフィック)」のみをブロックし、検索エンジンのクローラーのような「Verified bots(検証済みボット)」を許可するように設定することが可能です。

Cloudflareのスーパーボットファイトモード
Cloudflareのスーパーボットファイトモード

JavaScriptとマネージドチャレンジの設定

ボットファイトモードを有効にしていても、通常のユーザーのブラウジング行動を模倣するタイプの自動クローラーや AIツールなど、一部のボットがすり抜けてしまうことがあります。

Cloudflareのセキュリティルールを使えば、追加の保護としてチャレンジ(Challenge)を適用できます。これはアクセスを許可する前に訪問者が人間であることを確認する仕組みです。

JSチャレンジをサイト全体に適用することもできますが、WordPressサイトでは一般的に、以下のような特定のパスに限定して使用するのが最適です。

  • /wp-login.php(WordPressのログインページ)
  • /xmlrpc.php(一般的なボットターゲット)
  • /wp-admin/(WordPress管理画面)

JavaScriptまたはマネージドチャレンジのルールは、以下の手順で追加することができます。

  • セキュリティ」>「セキュリティルール」に移動
  • ルールの作成」>「カスタムルール」を選択
  • ルール名(「JS Challenge for wp-login」など)を入力
  • 受信要求が一致した場合」で以下を設定
    • フィールド:URIパス
    • オペレータ:contains
    • /wp-login.php
Cloudflareのカスタムルール設定
Cloudflareのカスタムルール設定

必要に応じて「Edit expression(式を編集)」をクリックし、以下のように条件を追加することもできます。

(http.host in {"example.com" "www.example.com"} and 
 starts_with(http.request.uri.path, "/wp-admin") and 
 not cf.client.bot and 
 not http.request.uri.path contains "/wp-admin/admin-ajax.php")

上記の例では、/wp-adminエリアをターゲットとし、検証済みのボットをスキップして、WordPressプラグインが使用するAJAXエンドポイントを除外しています。

Then take action(以下を実行)」で、以下のいずれかを選択します。

  • JavaScriptチャレンジ:すべての訪問者に対してブラウザテストを実行
  • マネージドチャレンジ:行動とリスクレベルに基づき、CloudflareのAIがいつチャレンジするかを決定

最後に「デプロイ」をクリックしてルールを有効にします。最初にテストしたい場合は、「下書きとして保存」をクリックしてください。

Cloudflare機能による効果を監視

ボットファイトモードを有効にするか、独自のCloudflareルールを設定したら、これらが機能しているか、訪問数の不当な増加の原因となった自動トラフィックが効果的にブロックされているかを確認することが重要です。

これはCloudflareとMyKinstaの両方で確認することができます。

Cloudflareのセキュリティ分析を確認する

Cloudflareの管理画面で「セキュリティ」>「分析」>「ボット分析」に移動します。

Cloudflareのボット分析
Cloudflareのボット分析

この画面では、サイトトラフィック全体のうち、人間によって生成されたものとボットによって生成されたものの内訳を明確に把握できます。

Cloudflareでは、パターン、機械学習、行動シグナルに基づいて、すべての受信リクエストにボットスコアが割り当てられます。このスコアは、以下のような種類に分類されます。

  • Automated(自動):明らかに人間によるものではないリクエスト
  • Likely automated(自動の可能性が高い):ボットの可能性がある疑わしいリクエスト(ヘッドレスブラウザやAIスクレイパーなど)
  • Likely human(人間の可能性が高い):ブラウザを使用している通常の訪問者
  • Verified bot(検証済みボット):GooglebotやPayPalなどの正規のボット

ボット分析グラフは、これらのカテゴリをリアルタイムで表示します。フィルター(国、IPアドレス、ブラウザ、またはオペレーティングシステム別)を使用して、自動トラフィックのほとんどの発信元を特定可能です。

フィルターを使用したトラフィック分析
フィルターを使用したトラフィック分析

MyKinstaの分析を確認する

次に、Mykinstaにログインし、「WordPressサイト」>(サイト名)>「分析」に移動し、「訪問数」チャートを確認します。

MyKinstaの訪問数チャート
MyKinstaの訪問数チャート

MyKinstaでは、(Google アナリティクスのようなJavaScriptトラッキングではなく)毎日見られる一意のIPアドレスに基づいて訪問を測定するため、他のフィルターをすり抜けたボットも含め、サイトにアクセスするすべてのトラフィックの正確なビューを提供します。

Cloudflareが自動リクエストをブロックし始めると、このチャートの総訪問数が減少します(ボットがオリジンに到達しなくなるため)。

それでもアクセスの急増が続く場合は、「位置情報とIP」タブの「上位クライアントIP」のレポートを確認し、特定のURLやIPが繰り返しリクエストされていないかを調査します。新たなCloudflareのチャレンジや国別ブロックを設定する際の有力な候補になります。

MyKinstaの分析画面で確認できる上位クライアントIPアドレス
MyKinstaの分析画面で確認できる上位クライアントIPアドレス

まとめ

望ましくないボットトラフィックを管理することは、現代のサイト運営において避けられない作業です。Cloudflareの無料ツールを使えば、自動クローラーやスクレイパーをパフォーマンスに影響が出たり、サーバー使用量が膨らんだりする前に素早くフィルタリングできます。

Kinstaをご利用の場合は、今回ご紹介したCloudflareのセキュリティ機能とKinstaのサーバー環境を組み合わせることで、実際の訪問者を正確に反映した分析データを保ちちながら、リソース使用量を安定させることができます。Kinstaでより予測しやすい料金体系をご希望の場合は、従来の訪問数ベースのプランではなく、新たに導入された帯域幅ベースのプランが便利です。

CloudflareとKinstaを併用することで、ボットへの対処に追われるのではなく、コンテンツとユーザーに集中できる環境が手に入ります。

Joel Olawanle Kinsta

Kinstaでテクニカルエディターとして働くフロントエンド開発者。オープンソースをこよなく愛する講師でもあり、JavaScriptとそのフレームワークを中心に200件以上の技術記事を執筆している。