はじめに
Googleのクローラーに代表される自動化されたウェブサイトへのアクセスは一般的にボットと呼ばれます。ボットにはさまざまな種類があり、中には悪意があるものや、ビジネス上の競合他社が価格の情報などを取得するためにアクセスを行っているような、アクセスされる側からはあまりうれしくないものも存在します。
Loggolはウェブサイトのアクセスログを分析しSQLインジェクション等の攻撃を可視化するのが主な機能ですが、このたびボットのアクセスも検知できるようにしました(プラスプラン、フルサポートプランが対象)。
今回の記事ではこの「ボット検知機能」について説明します。
ボットのアクセスはとても多い
ボット検知機能を実装してみて実感したのが、ウェブサイトにおけるボットからのアクセスの多さです。22のウェブサイトについて、ボットのアクセスの割合を調査した結果が次のようになります。
この図ではアクセス数(=アクセスログの行数)について、ボットがどのくらいの割合を占めているかを表示しています。最もボットの割合が多い「Site15」では、87%のアクセスがボットによって行われています。ボットのアクセスが50%を超えるサイトは22サイト中、6サイトもありました。
次に、こちらの図では縦軸には先ほどの図と同じくアクセスログの行数でのボットの割合を、そして横軸にはIPアドレス単位でのボットの割合をプロットしています。ログ全体に記録されているIPアドレスの総数のうち、どのくらいのIPがボットのものだったのか、が横軸です。
最も右にプロットされている「Site10」では、アクセスが行われた全IPアドレスのうち半数以上がボットのIPアドレスであることになります。
また、図の中央付近の上部には先程「87%のアクセスがボットだった」とした「Site15」がプロットされています。こちらはIPアドレス単位で捉えた場合は全体の23%がボットであることになります。つまりそれぞれのボットはボット以外のクライアントに比べ多くのアクセスを行う傾向がありそうだと推測できます。あるいは、一部のボットが非常に多くのアクセスをしているかもしれません。
このようにボットのアクセスが非常に多いサイトがあることがわかります。一方で、一部のサイトではボットのアクセスは数%程度の低い割合であり、サイトによって状況が大きく異なることがわかります。
ボットはアクセス解析では可視化されないこともある
非常に単純なボットはサイトのコンテンツを取得するものの、一般的なウェブブラウザのようにJavaScriptを実行することをしません。そのため、JavaScriptによって情報を取得している近年の一般的なアクセス解析にはその挙動が記録されず、結果として「アクセスしていることがまったく可視化されない」ことがあります。これはボットが意図して自身のアクセスを隠蔽している、というような難しい話ではなく、単なるJavaScriptベースのアクセス解析の仕様の話です。
このようなボットのアクセスもアクセスログには当たり前に記録されているため、今や古いスタイルとはなりましたが「単にログを分析する」というアプローチでの可視化はとても役に立ちます。
Loggolは最も手軽なボット検知
Loggolにより、この「単にログを分析して、ボット全体の動向を把握する」ことが非常にシンプルに行うことができるようになりました。ボット検知の方法は従来のLoggolの使い方と同じく、単にログをアップロードして分析ボタンを押すだけです。
結果としてボットと分類されたIPアドレスの情報と、それぞれのIPアドレスから実際に行われたアクセス内容を示す該当の行がいくつか出力されます。全部を出力してしまうと量が多すぎるため、現時点の仕様としては一部は省略しています。
Loggolは現在動いているウェブサーバやウェブアプリに組み込む必要がなく、アクセスログだけを取り出せば独立して利用できます。そのため、Loggolを導入することで稼働中のシステムに障害やバグを波及させる可能性がなく、非常に気軽かつ手軽に使うことができます。「うちのサイト、どのくらいボット来てるんだ?」という質問に、すぐに答えを得られます。
ボットの問題点
ボットによるアクセスも少数ならばあまり気にしなくてよいですが、多くなってくるとコスト面やシステムへの負荷が気になってきます。特にクラウドの課金体系として完全な従量課金のサービスを利用している場合、競合他社や、なんだかよくわからない海外の情報収集ボットなどのアクセスによってチャリンチャリンと料金が発生するのはなかなかつらいです。
また、少数のアクセスしか見込んでいない小さなウェブのシステムなどをインターネット上で動作させた場合に、ボットによって想定外の高頻度アクセスが行われてシステムが落ちるようなこともよくある話です。
サイトにアクセスしてもらう必要がないボットについては、可能ならばIPアドレスなどでそのアクセスを特定し、ファイアウォール等でアクセスを拒否することが望ましいでしょう。LoggolによってIPアドレスは特定できるため、例えば海外の特定の地域やISPなどの誤検知する可能性が低そうなIPアドレスについてはどんどん拒否していくというような運用が考えられます。
情報収集を行うボットは画像ファイルやCSSなどの静的なファイルよりもウェブサイトのコンテンツ自体にアクセスすることが多いです。そのため動的なウェブサイトではシステム負荷に直結しやすいのも好ましくないポイントです。
Loggolのボット検知ができないこと
前述したようにLoggolのボット検知機能はアクセスログさえ取り出せばよいため、現状稼働しているシステムへの副作用なしで気軽かつ手軽に使えます。一方でウェブのシステムに組み込まれて動作するわけではないため、例えばリアルタイムでアクセスしてきたクライアントをボットかどうか分類し、もしボットであればCAPTCHAを表示する、というような動作は難しいです。
いわゆる「ボット対策」と呼ばれるようなソリューションにはJavaScriptなどを複雑に組み合わせることでボットによる商品の購入やチケット申込みなどを防ぐものなどがありますが、Loggolにはそのような機能はありません。
また、ヘッドレスブラウザを使い、かつ非常に自然なアクセスを行うボットについては、アクセスログ上で正常なユーザによるアクセスとの区別がとても難しく、検知できない場合があります(こちらについては、Loggol以外のボット検知や対策サービスでもかなり区別は難しいだろうと思います)。
まとめ
今回はLoggolで新たに利用できるようになったボット検知機能について紹介しました。従来のGoogle等のクローラーに加え、最近ではChatGPTに代表される生成AIベンダーが情報をもとめてかなりアグレッシブにクローラーを動作させています。一度可視化してみて、どの程度のボットがサイトのリソースを消費しているのかを確認してみると面白いかもしれません。
Loggolでは二週間の無料トライアルを提供中です。ぜひお気軽にお試しください。また、質問などあればお気軽に金床にメンションしてポストしてください。