Web開発
スクレイパーボットをスクロール行動で検出する
Detecting scraper bots through scroll behaviour (niki.cat)
要約
この記事では、複雑系科学の概念である「バーストネス(Burstiness)」と「メモリ(Memory)」を用いて、人間とスクレイパーボットのスクロール行動を区別する手法を提案しています。著者は、人間は情報を探す際に線形ではなくバースト的なスクロールパターンを示す傾向があることに着目し、このバーストネスとメモリの値を機械学習モデルの特徴量として使用しました。実験の結果、限定的な環境ではありますが、これらの値がボットと人間を区別するのに有効な予測力を持つことが示唆され、特にChatGPTエージェントは人間に近い振る舞いを見せることが確認されました。
全文翻訳
スクレイパーボットをスクロール行動で検出する
2026年8月20日
読了時間: 4分
Kwang-Il Gohによる論文「Burstiness and Memory in Complex Systems」を初めて読んだときから、論文で紹介されていた2つの数式に夢中になりました。バーストネス(B)とその同等の重要な指標であるメモリ(M)は、イベントベースシステムのダイナミクスを理解させてくれます。これらの値は、送信されたメール、テキストメッセージ、さらには心拍数など、イベントが発生した時間のみがわかっている場合に、それらの行動を分析するために使用できます。これにより、すでに分類されたデータセットに基づいて、どのパターンが人間らしく、どれがそうでないかを明確に確立できます。
人間はテキストにバースト的な manner で返信すること(返信するまでの時間が均一ではない)を知っていますが、単純なボットは可能な限り速く応答するため、異なるBとMの係数を持つことになります。Goh, K.-I., & Barabási, A.-L. (2008), Figure 4
以前の個人的な研究では、これらの2つの値を使用して、リクエストのタイミングに基づいて人間とボットのセッションを区別していましたが、これは通常うまくいきました。しかし、このアプローチでは、CSSとJSファイルを読み込んだ任意のブラウザから送信されたセッションを人間と識別してしまい、ClaudeBotのようなより高度なボットがヘッドレスブラウザを使用して人間のように見せかけることを許してしまいました。それは本質的に、実際のブラウザから送信されたリクエスト versus 作成されたリクエストを区別していたのであり、ボットと人間の区別ではありませんでした。
スクロールホイール
しばらく前に、ボットが容易に模倣できないと思われる、はっきりと人間らしい行動に気づきました。それはスクロールです。情報を探すためにスクロールホイールでページをスクロールしているとき、私は通常、線形に下にスクロールして探しているものを見つけるのではなく、バースト的なパターンでスクロールします。例えば、そのパターンは、時間系列のcではなく、aまたはeにより近いかもしれません。Goh, K.-I., & Barabási, A.-L. (2008), Figure 1
ほとんどのスクレイピングボット開発者は、まだスクロールパターンを洗練させていないと考えているため、スクロールイベントのイベント間時間のバーストネスとメモリが、人間とボットを区別するための機械学習モデルで予測力を持つ変数であるかどうかをテストすることにしました。そのために、Ethan Wangらの論文「FP-Agent: Fingerprinting AI Browsing Agents」で提供されたデータセットを使用しました。この論文の著者らは、制御された環境(その目的のために特別に作成されたウェブサイト)で異なるAIブラウジングエージェントを区別できる機械学習モデルを作成する方法を説明しました。彼らは、さまざまなエージェントと人間のウェブサイトナビゲーションのデータを記録しました。彼らのモデルは良い結果を出しましたが、さまざまなウェブサイトに適用した場合、実際の状況では効果的ではないと思います。しかし、彼らはデータセットをOSF.ioでダウンロードできるようにしました。
各エージェントの各ページにおけるJavaScriptの「scroll」イベントのバーストネスとメモリの値を計算しました(訪問したページごとに1つのバーストネスとメモリの値)。これらが結果です。
人間分布は他のエージェントとは明らかに異なり、より高いバーストネス係数とほとんどメモリがないことがわかります。人間と時々似ている唯一のエージェントはChatGPT Agentです。
このデータは有望に見えますが、2つの値に予測値があるかどうかをさらに証明するために、各単一ページインタラクションを分類するためにLightGBM(決定木勾配ブースティング)モデルをトレーニングしました。モデルには2つの特徴量(BとM)しか利用できず、どのエージェントがインタラクションを実行したかを予測する必要がありました。結果は73.4%の精度でした。これはそれほど悪くはありません。予想通り、モデルは主に人間とChatGPT Agentを混同しました。これは、特徴量の数が少ないか、データセットが小さい(エージェントあたり約150データポイントは小さすぎる)ためである可能性が高いです。モデルは、それらをさらに区別するために他の特徴量が必要になるでしょう。
結論
スクロール行動は、ボットと人間を区別するための関連性の高いデータポイントであるように思われ、バーストネスとメモリは、制御された環境で予測力を持つことが証明されています。このアプローチは、スクロールを必要としないウェブサイトでは明らかに効果がありません。一方、Wikipediaのようなブログや情報サイトは、この方法を最も活用できるサイトです。
このブログ投稿で示されたモデルは、マウスの動きやタイピングなどの他のアクションから抽出された追加の特徴量と組み合わせると、まだ正確ではありません。しかし、スクレイパーボットからウェブサイトを保護できる汎用モデルを作成することは可能だと信じています。このウェブサイトで研究結果を投稿し続けます。次に、マウスの動きのパターンを見ていきます。
共有 X (Twitter) Reddit LinkedIn リンクをコピー