Webサイトを訪れるインターネットボットの特徴とは?
はじめに
ボットと聞いて何を思い浮かべるでしょうか?コンピューターウイルスと答える人もいれば、Webサイトのチャットボットや検索エンジンのクローラーと答える人など三者三様の回答になると思います。一般的な定義としては、”ユーザーまたは別のプログラムのために自動化されたタスクを実行するプログラム”とされているのではないでしょうか。
近年、チケットを買い占めるボット、アカウントを不正に乗っ取るボット、アンケートフォームを“荒らす”ボットなど悪質な行為をおこなうボットが話題にあがることも少なくありません。本ブログでは、インターネット上で動作するボットについての理解を深めていただく第一歩として、人とボットの違いについてご紹介します。
インターネット上で動くボットの種類
インターネットボットは大きく分けて良性ボットと悪性ボットの2つがあります。良性ボットはインターネットでのユーザー体験に悪影響を及ぼさず、Webサイト所有者に迷惑をかけない、有用または役立つタスクを実行するボットです。一般的には以下のような例が挙げられます。
※良性ボット、悪性ボット、グレーなボットはWebサイトの特性や環境等により変化します。
Webクローラー |
検索エンジンや学術サイトに掲載するWebサイトコンテンツのインデックス化を実施する |
監視システム |
Webサイトやアプリの状態を監視する |
コンテンツアグリゲーター |
インターネット上に存在している情報を収集する |
チャットボット |
サイト訪問者にサポートやアドバイスを提供する |
反対に悪性ボットは、ユーザー、Webサイト所有者に不利益をもたらす以下のようなボットが挙げられます。
スクレイパー |
Webサイトの無断複製や価格調査などを目的としたコンテンツスクレイピングを実施する |
スパムボット |
SNS上などで詐欺や広告などの不適切なメッセージを送りつける |
アドフラウドボット |
デジタル広告を不正にクリックなどを実施する |
悪質な攻撃を実施するボットネット |
DoS、DDoS攻撃、Webアプリケーション攻撃、パスワードリスト型攻撃(クレデンシャルスタッフィング)、ブルートフォース攻撃を実施する |
このようなインターネットボットの通信を Akamai App & API Protector や Akamai Bot Manager では検知することが可能ですが、どのように人ではないHTTPリクエストと判定しているか以降で説明します。
人とインターネットボットによるWebサイトアクセスの違い
人がブラウザを利用してWebサイトを閲覧する場合とインターネットボットがWebサイトにアクセスする場合にどのような差異があるかを最初にご紹介します。人がブラウザを利用する場合は以下の図のようなヘッダーがセットされたHTTPリクエストがWebサイトに送信されています。

図1. Edgeブラウザを利用したリクエストヘッダーの例
図から見て取れるように、利用者が意図して設定をしたわけではありませんが、ブラウザの言語設定(Accept-Language)や、ブラウザ情報(User-Agent)、対応する圧縮方式(Accept-Encoding)などがHTTPリクエストヘッダーとして付加されWebサイトに送信されています。また、過去に同じWebサイトを閲覧していた場合などには cookie もリクエストヘッダーに付与されます。このようにブラウザを利用してWebサイトを閲覧する場合は、各種情報がセットされHTTPリクエストが送信されます。逆に、このようなヘッダー情報がない場合やヘッダーに異常性がある場合は人ではないHTTPリクエストと判断することができるわけです。また、良性ボットやWebアクセスツールの多くは User-Agent で自発的に自分自身を特定できる情報(ボットの名前など)を付与していますので、それで見分けることができます。
次に悪性ボットのHTTPリクエストにどのような特徴があるかご紹介します。悪性ボットはその巧妙さによりさまざまなパターンがありますが、以下のような特徴があります。
前述の Accept-Language や Accept、Accept-Encoding などのヘッダーが欠落している、または空値である
一般的なブラウザではありえないバージョンの User-Agent を付与している
よく知られたWebクローラーの User-Agent を使用しているが、送信元IPアドレスが、User-Agent が示すサービスとは明らかに関係のないIPアドレスである
存在するべき cookie や Referer が欠落している
JavaScript を処理できない
このような特徴をHTTPリクエストから捉えることで、人とインターネットボットを区別することができます。ただし、悪性ボットの中にはより巧妙にブラウザを模倣したHTTPリクエストを送信し、検出を回避するようなものも存在することが確認されています。このような巧妙な悪性ボットに対しては、自動化の兆候を高度にチェックすることが必要となります。 Akamai Bot Manager では”ふるまい検知”として、ログイン画面などにおけるユーザーのマウスの動きのパターンや文字入力のスピードなど、人間らしいふるまいかどうかを判定する機能を有し、この結果とリクエストから得られるさまざまなシグナルを掛け合わせ巧妙な悪性ボットに対応しています。
最後に
本ブログでは人とインターネットボットのHTTPリクエストの違いとAkamai がどうやってボットを検出しているかについてご紹介しました。Webサイトの管理者様の中には「最近アクセス数が急増したけど本当にこんなに閲覧者が増えたのか?」といった疑問をもたれている方もいらっしゃると思います。Webサイトにアクセスしてくる一つ一つのリクエストを人かボットか確認することはアクセスログからでは非常に難しく大変な作業です。Akamai App & API Protectorに含まれるBot Visibility & Mitigation や Akamai Bot Manager をご利用いただくと以下の図のように簡単に可視化が可能となります。ぜひトライアルをご検討いただけると幸いです。

図2. 可視化の例