Precursor の紹介:継続的なクライアント側信号を用いたエージェント型行動の検出
Cloudflare は、従来の CAPTCHA や単発の検証を超え、セッション全体にわたる継続的なクライアントサイド行動信号を収集・分析する「Precursor」を発表し、高度な自動化ボットやエージェント型攻撃の検知精度を飛躍的に向上させた。
キーポイント
セッションベースの連続的検知
単発の CAPTCHA や Challenge に依存せず、動的に注入された JavaScript を通じてユーザーのセッション全体にわたって行動信号を継続的に収集し、リアルタイムで分析する仕組み。
人間特有の行動パターンの抽出
ボットが短期間の動作やノイズ付加で擬態できる現状に対し、マウス移動の複雑さや一貫性など、長時間にわたる「人間の行動」のみが持つ特徴を信号として利用する。
エージェンティック攻撃への対抗
スクリプト実行やブラウザ環境の利用が可能になった現代の高度なボットに対し、フルセッションをシミュレーションするコストと難易度を大幅に引き上げ、検知精度を高める。
プライバシー配慮とユーザー体験
クライアントサイドでのデータ収集でありながらプライバシーを重視し、正当なユーザーには不必要な摩擦(Challenge)を減らしつつ、ボット開発者への対策コストを増大させる設計。
物理的・認知的制約の検出
人間の動きはガウスノイズだけでなく、手首の可動域や認知負荷による遅延、生理的な手の震えといった物理的・認知的制約によって特徴付けられる。
セッション全体でのパターン分析
個々のインタラクションは偽装可能でも、セッション全体を通じた速度、タイミング、方向の変動や修正の癖など、一貫した行動特性を捉えることでボットを識別する。
クライアントサイドでの継続的データ収集
Cloudflare によって自動的に注入される軽量スクリプトが、ポインタ移動やキーボード入力などの信号をリアルタイムで収集し、エッジサーバーでセッションレベルの行動評価を行う。
重要な引用
What remains difficult to replicate is consistent human behavior over time.
Precursor is a client-side, session-based verification system, built with privacy in mind, that uses dynamically injected JavaScript to continuously collect behavioral signals as visitors interact with your application.
This improves detection precision, making it easier to distinguish real users from automation without relying on aggressive Challenges.
Bots, by contrast, often behave in ways that give them away. They move in linear interpolations or mathematically ideal Bézier curves.
Individually, these interactions might look plausible. But over the course of a session, these patterns diverge in ways that are difficult to fake.
The system also feeds session metadata into downstream detection layers for additional shadow-mode heuristics and session analysis, predicted vs. actual completion, and session delinquency heuristics.
影響分析・編集コメントを表示
影響分析
この発表は、従来の静的なルールや単発の検証に基づくボット対策から、行動分析と機械学習を活用した動的・継続的な防御への転換点を示すものです。特に生成 AI や自律型エージェント(Agentic AI)が普及する中で、人間と機械の境界線があいまいになる現代において、セッション全体のパターンを捉える手法はセキュリティ業界に新たな基準をもたらします。
編集コメント
生成 AI の進化によりボットが人間そっくりに振る舞うようになりつつある中、単発の検証では対応しきれない課題に対し、Cloudflare が「時間軸」を重視したアプローチで対抗策を提示したのは非常に示唆に富んでいます。
ボット対策は、攻撃者が適応し、防御側が対応する、終わりのない対戦ゲームです。Cloudflare では、グローバルネットワーク全体にわたる可視性と、クライアント側の環境から得られる信号を組み合わせることで、常に一歩先を行くことを目指しています。
ネットワークレベルでは、毎日 1 兆件を超えるリクエストを分析し、ウェブの 20% 以上における評判、パターン、異常を検出します。一方、クライアントサイドでは、Cloudflare Turnstile を活用して検知機能をさらに深化させています。Turnstile は単なる CAPTCHA の代替手段から進化し、ユーザーが本物であることを検証するために必要な摩擦(手間)をリスクに応じて動的に調整する、管理されたチャレンジシステムへと生まれ変わりました。
現在、Turnstile はインターネット上で最も機密性の高いエンドポイントにおいて、1 日あたり約 30 億回実行されています。ログイン、サインアップ、チェックアウトといった重要な瞬間にユーザーの身元を確認することで、顧客アプリケーションの最重要領域における保護を強化しています。しかし、これだけではアプリケーション全体、特に人間とボットがユーザー体験のどの段階でどのように相互作用しているかという、残りの部分への可視性は限定的です。
この「可視性のギャップ」を埋めるために、私たちは本日 Precursor の発表を行います。
Precursor の紹介
Precursor は、プライバシーを重視して設計されたクライアントサイドのセッションベース検証システムです。訪問者がアプリケーションとやり取りする際に動的に注入される JavaScript を活用し、行動信号を継続的に収集します。これらの信号はリアルタイムで処理され、Cloudflare のボット保護機能に取り込まれるため、人間によるトラフィックと自動化されたトラフィックやエージェント型トラフィックを常時区別することが可能になります。
これは、Challenge が提供するクライアントサイド検知機能を、Web アプリケーション全体に拡張するものです。Precursor は Turnstile との併用が可能なオプション機能であり、両方とも Enterprise Bot Management の一部として提供されています。
このユーザー行動に基づく検知手法が強力な理由は、現代の自動化技術が短時間の活動では人間そっくりに見えるようになっているからです。ボットは JavaScript を実行したり、実際のブラウザ環境を利用したり、個々の CAPTCHA を突破したりして疑いをかけられなくなっています。しかし、時間を通じて一貫した人間の行動を再現することは依然として困難です。
Precursor は、その相互作用の層を捉えるために設計されており、行動そのものを詐欺や悪用を検出するための信頼できるシグナルに変換します。セッション全体にわたって行動を評価することで、各判断において大幅に多くのシグナルを追加します。これにより検出精度が向上し、過度なチャレンジ(Challenge)に頼ることなく、実在するユーザーと自動化プログラムを区別することが容易になります。正当なユーザーにとっては、不必要な中断が減ることを意味します。一方、ボット開発者にとっては、完全なセッションのシミュレーションを要求されることで、自動化システムの運用コストが大幅に上昇します。これは構築がはるかに難しく、維持費も高くつき、大規模運用においては信頼性も著しく低下します。
過ちは人間にこそある
ボット開発者がマウス操作を人間らしく見せかけようとする際、通常はガウシアンノイズや一様ランダムな遅延を追加します。しかし、人間の動きは単なる「ノイズ」があるだけでなく、物理法則によって制約されています。
手首の支点:人間のマウス操作は、手首の可動域と前腕の回転によって制限された弧を描くことがほとんどです。
認知負荷:チェックボックスを目にしてクリックするまでに、人間には測定可能な遅延が生じます。
手の震え:最も安定した人間の手にさえも、生理的な振動周波数による微細な揺れが現れます。
一方、ボットは往々にして自らの正体を明かすような行動をとります。直線的な補間や数学的に完璧なベジェ曲線を描いて移動したり、人間が再現できないほどの精度でクリックを行ったりします。たとえ人間のミスを模倣することに成功したとしても、そのリズムを把握するにはセッション全体を検証する必要があります。
マウスの動きは Precursor が評価するシグナルの一例に過ぎませんが、この違いを明確に示しています。以下は、あるマウス自動化ライブラリがサイトと相互作用している様子です。マウスが完全に直線的な経路を描き、常に原点に戻り、同じ速度で反応している様子がわかります。
これに対し、人間が同じサイトを操作する場合はどうでしょうか。不規則な軌道、微細な修正やオーバーシュート、そして速度・タイミング・方向におけるばらつきが見て取れます。
個々の行動だけを見れば一見もっともらしく思えるかもしれません。しかし、セッション全体を通じてこれらのパターンは、偽造が極めて困難な形で乖離していきます。Precursor は、ユーザーがアプリケーションとやり取りする過程で形成されるこうした行動の特徴を捉え、評価するために設計されています。
Precursor の仕組み
時間をかけて行動を評価するため、Precursor はクライアント側で継続的にインタラクションデータを収集し、そのサイトにおける活動のセッション全体像を構築します。
- 注入と収集レイヤー
アプリケーションに Precursor を有効化すると、Cloudflare は追加の設定やネットワーク接続、サードパーティの埋め込みを一切必要とせず、サイトからの HTML レスポンスが自社のネットワークを通過する際に自動的に軽量なスクリプトを注入します。この注入される Precursor バンドルはコンパクトで難読化されており、レスポンスごとに動的に組み立てられます。また、ホストされている Web アプリケーションの既存ロジックに干渉しないよう設計されています。
このスクリプトは、ポインタの動きやキーボード操作、フォーカスの切り替え、ページの表示状態といった相互作用のシグナルを捉えるための軽量なイベントリスナーを取り付けています。これらのイベントはコンパクトな形式に変換され、メモリ上にバッファリングされます。定期的に、バッファされたデータが評価層へ送信されて分析が行われます。
- 評価層
エッジサーバーでは、受信した Precursor のペイロードがデシリアライズされ、行動入力として処理されます。ディスパッチャーが登録された一連の評価器(evaluator)をこの入力データに対して実行します。各評価器は自身が監視する Precursor ストリームを読み取り、共有検出レジストリにシグナルを送出できます。
評価器はデータの相互照合を目的として設計されています。例えば、ポインタの動きがページの表示時間と相関しているか、あるいはテキストフィールドがフォーカスされている場合にのみキーボードイベントが発生しているかなどを確認します。これらの情報ストリームは統合され、検出結果に重み付けを行うための個別のシグナルへと変換されます。
- セッション連携
Precursor のデータはセッション範囲に限定されており、1 つのセッション中に蓄積されていきます。このようにセッション単位で管理する理由は、ボットがページをリフレッシュしたり新しいチャレンジを開始したりしても、行動の特徴をリセットできないようにするためです。
また、システムはセッションメタデータを検知層へ転送し、追加のシャドウモードによるヒューリスティック解析や、予測完了と実際の完了の比較、セッション遅延に関するヒューリスティック評価などに活用しています。これらのエッジ側での観測データは、検知精度の向上と、セッションごとのボットスコアの調整のために記録されます。
- プライバシーバイデザイン
Precursor は、人間の行動パターンと自動化・悪意のあるパターンを区別するために必要な信号のみを収集するように設計されています。
イベントリスナーは、自動化や不正を検知する上で有用な信号となるために必要な最小限の情報しか取得しません。例えば、キーボード操作については、押された実際のキーではなく、タイミングやリズムとして記録されます。さらに、行動信号は個々のアクションではなく集約されたパターンとして評価され、Cloudflare のボット検知システム内部で利用されるのみです。顧客ダッシュボードに表示されることもなく、ユーザーアカウントやログインID、永続的なプロファイルとも紐付けられません。
これらすべての仕組みを組み合わせることで、Precursor は行動の継続的な評価を維持し、精度を最大化しながら、正当なユーザーへのストレスを最小限に抑えています。
セッションごとの分析
この新たな検知層をサポートするため、Security Analytics にセッションベースのビューを導入しました。これにより、個々のリクエストから訪問者の全体像(ジャーニー)へと視点をシフトできます。
具体的には、以下のような問いに答えることが可能になります。
- サイト上で典型的なセッションはどのようなものか?
- どのセッションが期待される行動から逸脱しているか?
- 時間の経過とともに自動化の兆候を示すセッションはどこか?

Bot Management トラフィックに対して、Security Analytics を活用してセッションベースのビューを検索・分析できます。
これらの分析では、従来のリクエスト単位の分析では捉えきれない情報、特にリクエスト間の行動データを取得できるようになりました。Precursor は既存のシステム(ボットスコア、チャレンジ判定、セキュリティルールなど)に直接フィードバックするため、追加された文脈を即座に活用できます。
今後の展望
Precursor は、アプリケーション全体にわたるボット検知機能を拡張するための基盤となります。今後は、セキュリティのための行動信号の範囲と深さをさらに広げ、セッションレベルの洞察がボット管理保護にどう影響するか、そしてセッションデータを可視化・活用する新たな方法を模索し続けていきます。
ボットの進化に伴い、検知も単なるチェックポイントを超え、ユーザー活動の全体フローへと移行していく必要があります。
導入方法
Precursor は現在、展開を開始しており、Cloudflare ダッシュボードから直接有効化できます。本年後半の一般提供(GA)リリースまでは無料でご利用いただけます。
利用開始は簡単です。ゾーンで Precursor をオンにし、セッション検証の厳格さを設定するだけです。背景で動作を確認したい場合は低負荷モードで実行し、すでにセッションが存在しない場合にのみチャレンジを課して完全な検証セッションを要求することも可能です。
一度有効化すると、Precursor はアプリケーション側の変更なしに、既存のボット対策を即座に強化します。すでに Bot Management や Turnstile を利用中の方でも、Precursor を有効化することで、その保護範囲を「チャレンジ」から「セッション全体」へと拡張できます。これにより、従来保護していた瞬間と瞬間の間にあるユーザー活動まで含め、セッション全体での検知が可能になります。
原文を表示
Bot mitigation is an adversarial game: attackers adapt, defenders respond, and the cycle continues. At Cloudflare, we stay ahead by combining visibility across our global network with signals from the client-side environment. At the network level, we analyze over 1 trillion requests per day to understand reputation, patterns, and anomalies across more than 20% of the web. On the client side, we’ve pushed detection deeper with Cloudflare Turnstile, which has evolved from a CAPTCHA replacement to a risk-based managed challenge that adapts the amount of friction needed to verify the user is authentic.
Today, Turnstile runs nearly 3 billion times per day on some of the most sensitive endpoints on the Internet, helping verify users at key moments like login, signup, and checkout. This improves protection on the most important areas of customer applications, but still leaves limited visibility into the rest of the application — how humans and bots actually interact across the full user journey.
This is the visibility gap we’re closing today with our launch of Precursor.
Introducing Precursor
Precursor is a client-side, session-based verification system, built with privacy in mind, that uses dynamically injected JavaScript to continuously collect behavioral signals as visitors interact with your application. These signals are processed and incorporated into Cloudflare’s bot protection in real time, allowing us to continuously distinguish human traffic from automated or agentic traffic.
This extends the client-side detections offered by a Challenge to your entire web application. Precursor is an optional complement to Turnstile — both are features of our Enterprise Bot Management.
This user-journey-based detection is powerful because modern automation is increasingly capable of appearing legitimate in short bursts. Bots can execute JavaScript, use real browser environments, and pass individual CAPTCHAs without raising suspicion. What remains difficult to replicate is consistent human behavior over time.
Precursor is built to capture that layer of interaction, turning behavior itself into a reliable signal for detecting fraud and abuse. By evaluating behavior across an entire session, Precursor adds significantly more signal to each decision. This improves detection precision, making it easier to distinguish real users from automation without relying on aggressive Challenges. For legitimate users, Precursor means fewer unnecessary interruptions. For bot developers, it raises the cost of operating automation by requiring them to simulate a full session. This is significantly harder to build, more expensive to maintain, and far less reliable to operate at scale.
To err is human
When a bot developer tries to make a mouse movement look human, they usually add Gaussian noise or uniform random delays. But human movement isn't just "noisy," it is also constrained by physics:
Wrist pivot: A human mouse movement is often an arc, limited by the range of the wrist and the rotation of the forearm.
Cognitive load: There is a measurable delay between a human seeing a checkbox and clicking it.
Hand tremor: Even the steadiest human hand oscillates at a physiological tremor frequency.
Bots, by contrast, often behave in ways that give them away. They move in linear interpolations or mathematically ideal Bézier curves. They click with a precision that humans could never replicate. And even when they do manage to simulate human error, there is a rhythm to human movements that can only be seen by examining an entire session.
Mouse movement is just one example of the signals Precursor evaluates, but it illustrates the difference clearly. Below is an example of a mouse automation library interacting with a site. You can see how the mouse moves in perfectly straight lines, always returns to an origin, and reacts with the same velocity.
Now, contrast that with a human navigating the same site: you see irregular paths, small corrections and overshoots, and variations in speed, timing, and direction.
Individually, these interactions might look plausible. But over the course of a session, these patterns diverge in ways that are difficult to fake. Precursor is designed to capture and evaluate these behavioral signatures as they develop over a visitor’s interaction with an application.
How Precursor works
To evaluate behavior over time, Precursor continuously collects interaction data on the client and builds a session-level view of activity for that site.
- Injection and collection layer
When Precursor is enabled on your application, Cloudflare automatically injects a lightweight script into HTML responses from your site as they pass through our network, with no additional configuration, network connections, or third-party embedding required. The injected Precursor bundle is compact, obfuscated, and assembled dynamically for each response. The bundle is designed to not interfere with any additional page logic of the hosted web application.
The script attaches lightweight event listeners to capture interaction signals such as pointer movement, keyboard activity, focus changes, and visibility. These events are serialized into a compact format and buffered in memory. At regular intervals, the buffered data is sent back to the evaluation layer for analysis.
- Evaluation layer
On the edge server, incoming Precursor payloads are deserialized into behavioral inputs. A dispatcher runs a roster of evaluators on the input data. Each evaluator reads the Precursor streams it cares about and can raise signals into the shared detection registry.
Evaluators are designed to cross-reference data. For example, they confirm that pointer activity correlates with page visibility duration, or that keyboard events only fire when a text field is focused. This stream of information is then consolidated into individual signals that are used for weighting detections.
- Session integration
Precursor data is session-scoped, meaning it accumulates throughout a session. Session scoping is important because it means a bot cannot reset its behavioral signature by refreshing the page or starting over with a new challenge. The system also feeds session metadata into downstream detection layers for additional shadow-mode heuristics and session analysis, predicted vs. actual completion, and session delinquency heuristics. These edge-side observations are logged for detection improvement purposes and to adjust the bot score of a session.
- Privacy by design
Precursor was designed to collect signals that help to distinguish human patterns from automated and abusive patterns.
The event listeners capture the minimum information needed to be a useful signal for detecting automation and abuse. For example, keyboard activity is captured as timing and rhythm, not as the actual keys pressed. In addition, behavioral signals are evaluated as aggregate patterns rather than individual actions and are consumed internally by Cloudflare's bot detection systems; they are not exposed to customer dashboards or tied to user accounts, login identities, or persistent profiles.
Taken together, this allows Precursor to maintain a continuously evolving evaluation of behavior, maximizing precision while minimizing the friction on good users.
Per-session analytics
To support this new layer of detection, we are introducing session-based views in Security Analytics. These dashboards shift the perspective from individual requests to full visitor journeys. You can now answer questions like:
What does a typical session look like on my site?
Where do sessions diverge from expected behavior?
Which sessions show signs of automation over time?
image
Use Security Analytics to explore session-based views for your bot management traffic.
These analytics now capture information that per-request analytics can’t — especially the behavior that occurs between requests. Precursor feeds directly into existing systems like bot score, challenge decisions, and security rules, so you benefit from this added context immediately.
What’s next
Precursor is the foundation for extending bot detection across the entire application. We are continuing to expand the range and depth of behavioral signals for security, how session-level insights influence our bot management protections, and new ways to visualize and act on session data. As bots evolve, detection needs to move beyond isolated checkpoints and into the full flow of user activity.
Get started
Precursor is rolling out now and can be enabled directly from your Cloudflare dashboard. Precursor will be free to use until our GA release later this year. Getting started is simple: turn Precursor on for your zone and choose how strictly you want to verify sessions. You can run it in a low-friction mode to observe behavior in the background, or require a fully verified session by enforcing Challenges if a session doesn’t already exist.
Once enabled, Precursor begins enhancing your existing bot defenses immediately, with no changes required to your application. If you're already using Bot Management or Turnstile, Precursor extends those protections beyond Challenges and into the rest of the session. Enable Precursor to extend detection across the full user session, including the activity between moments you already protect.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み