ひとことで言うと
Bot検知とは、Webサービスへのアクセスが人間によるものか自動プログラム(ボット)によるものかを判別し、悪意ある自動アクセスをブロックまたは制御する仕組みです。判別の手がかりとしては、ユーザーエージェント文字列・リクエスト間隔・マウス動作・JavaScriptの実行有無などが使われます。
すべてのボットが悪いわけではなく、GooglebotのようなSEOクローラーや、Uptimerobot等の死活監視ツールも技術的にはボットです。Bot検知では「許可するボット」と「ブロックするボット」を分類して扱います。Cloudflareは独自のボットスコアを算出し、スコアに応じてChallenge(CAPTCHAなど)を表示するか、そのまま通過させるかを判断します。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
非公開のプレビューURLでもボットは発見することがあります。メールの本文にURLが含まれていると、メールプロバイダのリンクプレビュー機能がURLを自動でフェッチし、Bot検知がこれをブロックするケースがあります。受信者がリンクをクリックしても「アクセスできない」と報告される原因の一つです。
悪意のあるボットによるコンテンツスクレイピングも問題です。競合他社の自動プログラムが提案書HTMLの内容を定期的に収集していた場合、Bot検知がスクレイパーのリクエストパターンを識別してブロックするため、機密コンテンツの保護に役立ちます。
よくある誤解
「Bot検知をオンにすれば完全に安全になる」という過大評価があります。Bot検知は確率的な判別であり、高度な自動化ツールは人間に近い動作をエミュレートできます。Bot検知はあくまでも多層防御の一層であり、認証・アクセス制限・暗号化と組み合わせて使うものです。
「CAPTCHAが表示されるのはBot検知の失敗」という誤解もあります。CAPTCHAは「怪しいがボットとは断定できない」リクエストに対してCloudflareが人間確認を求めるもので、システムが正常に機能している証拠です。頻繁に表示される場合は接続元IPの評判スコアが低い可能性があります。
安全に使うための注意点
Headless ブラウザを使った自社のE2Eテスト(PlaywrightやPuppeteer等)がBot検知に引っかかる場合があります。テスト用のIPアドレスやユーザーエージェントをBot検知の許可リストに追加するか、テスト環境ではBot検知のモードを「ログのみ(モニタリング)」に下げてトラブルを回避してください。
共有サービスのBot検知設定を厳しくしすぎると、Slackbot等のリンクプレビューや社内ツールの死活監視が誤検知でブロックされます。本番運用前に主要な正規ボットのユーザーエージェントを確認し、許可リストへの追加が必要かを検討してください。
よくある質問
メールにURLを貼ったらBot検知に引っかかりました。どうすれば解消できますか?
メールプロバイダのリンクプレビュー機能が自動でURLをフェッチするためです。該当のメールサービスが使うIPレンジを許可リストに登録するか、共有URLをURLエンコードして直接フェッチされないよう工夫する方法があります。
Bot検知のスコアはどのように算出されますか?
Cloudflareのケースでは、リクエストヘッダーの構成・TLSフィンガープリント・JavaScriptチャレンジへの応答・過去のIPの評判などを機械学習で総合評価し、0〜99のボットスコアを付与します。スコアが低いほどボットである可能性が高いと判断されます。
社内の自動化ツールがブロックされないようにするにはどうすればよいですか?
ツールが送信するユーザーエージェント文字列やIPアドレスを確認し、Bot検知の除外ルールに追加してください。Cloudflareではファイアウォールルールで特定のユーザーエージェントやIPをBypassに設定することで、スコアに関わらず通過させられます。