- Botの種類ごとに止めるか通すかの考え方
- アクセスログでBotを見分ける3つの手がかり
- robots.txtとレート制限の役割の違い
- 一律に厳しくしたときに締め出しやすい相手
結論
Botのアクセスが多いこと自体は、異常ではありません。一般に公開しているサイトには、検索エンジンをはじめ多くの自動アクセスが来ます。判断すべきは「数が多いかどうか」ではなく、「サーバーが重くなっているか」「見せたくない場所に来ているか」の2点です。まず種類を見分け、必要なものだけ手当てします。
Botにはいくつもの種類がある
Botという言葉は、自動でサイトを見に来るプログラム全般を指します。目的はばらばらです。
| 種類 | 何をしているか | 基本の扱い |
|---|---|---|
| 検索エンジンのクローラー | 検索結果に載せるためにページを読む | 通す |
| AIの学習・回答用クローラー | 学習や回答の材料としてページを読む | 方針を決めて選ぶ |
| 監視サービス | サイトが動いているかを一定間隔で確認する | 通す(自社で契約したもの) |
| SNSやチャットのプレビュー取得 | URLを貼ったときの画像や題名を取りに来る | 通す |
| 価格や記事の収集 | 掲載内容をまとめて取得する | 負荷と方針しだい |
| 脆弱性を探す目的のもの | 管理画面やログイン画面を手当たり次第に叩く | 抑える |
最後の行だけを見て全体を判断しないでください。Bot=攻撃ではありません。検索エンジンのクローラーを弾いてしまうと、検索結果に出なくなります。
見分ける手がかり
アクセスログや解析画面では、次の3つを合わせて見ます。
- どのURLに来ているか。トップページや記事ページを順に読んでいるなら収集、ログイン画面や存在しない管理画面ばかりなら目的が違います。
- 名乗り。ユーザーエージェントには名前が書かれています。ただし名乗りは書き換えられるため、これだけでは決められません。
- 接続元。Googleは、自社のクローラーがユーザーエージェント・接続元のIPアドレス・逆引きのホスト名の3つで判別できることを公式ドキュメントで案内しています。名乗りが本物かどうかを確かめたいときは、こうした各社の案内に従います。
「深夜に同じ1ページへ毎分アクセスがある」といった規則正しい動きは、多くの場合は自社か取引先が入れた監視サービスです。止める前に、契約している外部サービスの一覧を確認してください。
手当ての順番
robots.txt は依頼であって制限ではない
robots.txt は、クローラーに対して読み込んでほしくない範囲を伝えるファイルです。Googleは、robots.txt はクロールの交通整理のためのもので、ページを検索結果から外す仕組みではないと明記しています。従うかどうかは相手しだいでもあります。見せたくない情報がある場所には、robots.txt ではなく認証をかけてください。
レート制限
同じ接続元からの短時間の大量アクセスに上限を設ける方法です。サーバーが重くなる問題には、これがいちばん素直に効きます。上限は、人が普通に閲覧したときの回数より十分に上へ置きます。1ページに画像が20個あれば、1回の閲覧で20回以上の要求が飛ぶ点に注意してください。
WAFやCDNの機能
通信の内容を見て判断する層です。不審な要求を落とす、特定の国からの接続だけ扱いを変える、といった対応ができます。WAFが何をする仕組みかは、別の記事で扱います。
サーバーやCDNによっては、既知のクローラーをまとめて扱う設定が用意されていることがあります。使う前に、その一覧に何が入っているか、外したい相手を個別に戻せるかを、契約しているサービスの公式の説明で確かめてください。一覧の中身はサービスごとに違い、更新もされます。
実務ではこうなる
予約を受けている飲食店のサイトで、月のアクセス数が急に3倍になった例で考えます。解析では訪問者は増えていません。ログを見ると、同じ接続元から検索用のページに数秒おきに要求が来ていました。掲載中のメニューを集めている収集Botでした。
やったことは3つです。検索エンジンと監視サービスは通す設定を先に確認し、検索用ページだけレート制限をかけ、画像の要求が多い時間帯にキャッシュの設定を見直しました。予約フォームには手を入れていません。サイトの表示速度は元に戻り、検索からの流入は変わりませんでした。
注意点
一律に厳しくすると、困る相手のほうを先に締め出します。よくあるのは次の3つです。
- 検索エンジンのクローラーを弾いて、検索結果に出なくなる
- 決済や配送の連携先からの通信を落として、注文が止まる
- 社内からの一括アクセス(サイト内リンクの点検など)を攻撃と判定する
「Botらしきものを全部止める」設定にする前に、止めた結果を一定期間だけ記録する設定(遮断せずに数えるだけ)があるなら、そちらから始めてください。何が引っかかるかを見てから切り替えるほうが安全です。
まとめ
Botは種類で分けて考えます。検索エンジンと監視は通し、収集は負荷しだい、脆弱性を探す目的のものは抑える。robots.txt は依頼、レート制限は負荷対策、WAFは内容の判断と、役割が違う道具を順に当てます。数の多さそのものに反応せず、遅くなっているか、見せたくない場所に来ているかで判断してください。