2025/06/24 13:29 A short history of web bots and bot detection techniques

ロボ子、今日のITニュースはWebボットの検出技術の進化じゃ!

Webボットですか。最近よく耳にするようになりましたね。

そうじゃ。Webボットは便利なものもあるが、悪質なものも多いからの。サイト運営者は常にボットとの戦いを強いられているのじゃ。

なるほど。それで、どのようにボットを検出するのですか?

最初は簡単だったのじゃ。例えば、`curl`や`wget`のようなツールは、User-Agentヘッダーで自分自身をWebサイトに知らせてしまうからの。

User-Agentヘッダーですか。でも、それは簡単に偽装できますよね?

その通り!だから、IPアドレスのチェックも重要になるのじゃ。主要なクラウドプロバイダーのIP範囲からのリクエストは、ボットの可能性が高いからの。

クラウドプロバイダーのIPアドレス範囲は既知なのですね。でも、ボットもプロキシを使うのでは?

さすがロボ子!プロキシを使うボットもいるからの。でも、Webサービスはプロキシの使用も積極的にチェックするのじゃ。ポートをプローブしたりしてな。

ポートをプローブするんですか。それはどのように?

プロキシがよく使うポート(1080など)が開いているか確認するのじゃ。開いていれば、プロキシを使っている可能性が高いと判断できるのじゃ。

なるほど。ボットも対策して、ローテーションプロキシを使うかもしれませんね。

そうじゃな。サービスがIPを禁止するのを避けるために、ボットの活動を異なるIPに分散させるのじゃ。さらに、モバイルプロキシを使うこともあるぞ。モバイルキャリアの仕組み上、WebサービスはモバイルIPアドレスのブロックをためらうからの。

どんどん巧妙になりますね。他に検出方法はあるんですか?

TCPフィンガープリントという手もあるぞ。各OSはTCPパケットの処理が少し違うからの。それを利用して、OSを特定するのじゃ。

TCPフィンガープリントですか。User-Agentと矛盾がないかチェックするんですね。

その通り!さらに、TLSフィンガープリントも使えるぞ。TLSのハンドシェイクで、暗号スイートなどが少しずつ違うからの。

TLSフィンガープリントまで!奥が深いですね。

JavaScriptも強力な武器になるのじゃ。ブラウザから大量の情報を収集して、サーバーに送信するのじゃ。

JavaScriptを実行しないクライアントは怪しいと。

そうじゃ。Selenium、Puppeteer、Playwrightなどのツールでブラウザを制御することもできるのじゃ。

ヘッドレスブラウザですね。でも、ヘッドレスChromeは検出されやすいと聞きました。

さすがロボ子、よく知っておるの。`navigator.webdriver`プロパティなどが違うからの。でも、新しいヘッドレスモードは検出が難しいらしいぞ。

新しいヘッドレスモードですか。それは知りませんでした。

オーケストレーションソフトウェアも「攻撃対象領域」を増やすことになるのじゃ。デフォルト設定のまま使っていると、簡単にバレてしまうぞ。

なるほど。フラグなどもチェックされるんですね。

IPCフラッディングという手もあるぞ。Chromeのフラッド保護を逆手に取るのじゃ。

IPCフラッディングですか。初めて聞きました。

JavaScriptを使えば、プロキシの検出方法も大幅に拡張できるのじゃ。レイテンシーをチェックしたり、WebRTCリークやDNSリークを調べたりするのじゃ。

WebRTCリーク!プロキシがUDPをサポートしていないと、IPアドレスが漏れてしまうんですね。

タイムゾーンのチェックも忘れちゃいけないぞ。IPロケーションとタイムゾーンが一致しない場合、プロキシを使っている可能性が高いからの。

細かいところまでチェックするんですね。

最終手段はCaptchaじゃ!人間にとっては簡単だが、マシンにとっては難しいタスクを課すのじゃ。

Captchaも突破されることがあると聞きますが。

そうじゃな。Captcha解決サービスを使うボットもいるからの。Proof-of-workや行動Captchaも有効じゃが、完璧ではないのじゃ。

行動分析ですか。マウスの動きやタイピングパターンを調べるんですね。

そうじゃ。人間はマシンとは違って、遅くて非効率的な動きをするからの。AIモデルをトレーニングして、高度な行動分析を行うこともできるぞ。

AIモデルまで使うとは!ボット検出も高度になりましたね。

まさに、イタチごっこじゃな。でも、Webサイトを守るためには、常に新しい技術を学ぶ必要があるのじゃ!

本当にそうですね。勉強になりました!

ところでロボ子、ボットがバレないようにするにはどうすれば良いと思う?

えっと…、人間になること、でしょうか?

正解!…って、ロボ子が人間になったら、それはそれで大問題じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
