مقابله با بات‌ها مثل یک بازی رقابتیه: مهاجم‌ها خودشون رو وفق میدن، مدافع‌ها واکنش نشون میدن و این چرخه ادامه داره. در Cloudflare سعی می‌کنیم جلوتر از مهاجم‌ها باشیم با ترکیب دید شبکه‌ای گسترده‌مون و سیگنال‌هایی که از سمت کلاینت میاد. در لِول شبکه، روزانه بیش از 1 تریلیون درخواست رو تحلیل می‌کنیم تا اعتبار، الگوها و آنومالی‌ها رو در بیش از 20٪ وب بشناسیم. از سمت کلاینت هم تشخیص رو عمیق‌تر کردیم با Cloudflare Turnstile که از یک جایگزین CAPTCHA تبدیل شده به یک managed challenge مبتنی بر ریسک که میزان اصطکاک لازم برای احراز هویت کاربر رو پویا تنظیم می‌کنه. امروز Turnstile تقریباً 3 میلیارد بار در روز روی حساس‌ترین نقاط اینترنت اجرا میشه تا در لحظات کلیدی مثل login، signup و checkout کاربر رو تأیید کنه؛ این به حفاظت بخش‌های حیاتی اپلیکیشن کمک می‌کنه اما همچنان دید محدودی روی بقیه مسیر کاربر — تعامل انسان و بات در طول کامل session — باقی می‌مونه. 🔍🛡️

این همان شکاف دیدیه که امروز با رونمایی از Precursor قصد داریم پرش کنیم.

معرفی Precursor — Precursor یک سیستم verification مبتنی بر client-side و session است که با حفظ حریم خصوصی طراحی شده. این سیستم با تزریق پویا جاوااسکریپت، سیگنال‌های رفتاری رو در حین تعامل بازدیدکننده با اپلیکیشن به‌طور مستمر جمع‌آوری می‌کنه. این سیگنال‌ها در زمان واقعی پردازش شده و وارد سامانه‌های محافظت از بات Cloudflare می‌شن تا بتونیم به‌صورت پیوسته ترافیک انسانی رو از ترافیک automated یا agentic تفکیک کنیم. 🧠

Precursor تشخیص‌های سمت کلاینتی که یک Challenge ارائه می‌ده رو به کل اپ وب شما تعمیم می‌ده. Precursor به‌صورت اختیاری مکمل Turnstile هست — هر دو جزئی از Enterprise Bot Management می‌باشن. این رویکرد مبتنی بر مسیر کاربر قدرتمنده چون اتوماسیون‌های مدرن در بازه‌های کوتاه می‌تونن ظاهر مشروع داشته باشن: اجرای JavaScript، استفاده از real browser environments و عبور از CAPTCHAs منفرد بدون جلب توجه. چیزی که سخت‌تر تقلید میشه، رفتار مداوم انسانی در طول زمانه.

Precursor برای گرفتن همین لایه از تعامل ساخته شده؛ رفتار خودش تبدیل میشه به یک سیگنال قابل اعتماد برای شناسایی تقلب و سوء‌استفاده. با ارزیابی رفتار در طول کل session، Precursor مقدار قابل‌توجهی سیگنال به هر تصمیم اضافه می‌کنه. این دقت تشخیص رو بالا می‌بره و بنابراین بدون اتکا به Challenges تهاجمی راحت‌تر میشه کاربران واقعی رو از اتوماسیون جدا کرد. برای کاربران مشروع، یعنی وقفه‌های کمتر و تجربه روان‌تر. برای توسعه‌دهنده‌های بات، یعنی افزایش هزینه‌ی ساخت و نگهداری اتوماسیون: شبیه‌سازی یک session کامل بسیار سخت‌تر، پرهزینه‌تر و قابل‌اطمینان نبودن در مقیاس رو به همراه داره. ⚙️

خطای انسانی When a bot developer tries to make a mouse movement look human معمولاً نویز Gaussian یا تاخیرهای تصادفی اضافه می‌کنن. اما حرکت انسان فقط «شلوغ» نیست، تحت قید فیزیک هم هست: محور مچ دست — حرکات ماوس انسانی اغلب به صورت قوس انجام میشه که محدود به دامنه مچ و چرخش ساعده. بار شناختی — بین دیدن یک چک‌باکس و کلیک کردن روی آن تاخیر قابل اندازه‌گیری وجود داره. لرزش دست — حتی دست‌های ثابت هم یک لرزش فیزیولوژیک با فرکانس مشخص دارن.

بات‌ها اما اغلب رفتارهایی از خودشون نشون میدن که لو میرن: حرکت در خطوط مستقیم یا منحنی‌های Bézier ریاضی، کلیک با دقتی که انسان دست‌کم نمی‌تونه تکرارش کنه، و حتی وقتی خطاهای انسانی رو شبیه‌سازی می‌کنن، یک ریتم یا الگوی زمان‌بندی دارند که فقط وقتی کل session رو ببینی معلوم میشه. حرکت ماوس فقط یک مثال از سیگنال‌هایی هست که Precursor ارزیابی می‌کنه، ولی تفاوت رو واضح نشون میده.

برای مثال، یک کتابخانه اتوماسیون ماوس ممکنه در تعامل با سایت مسیرهای کاملاً مستقیم، بازگشت مداوم به یک نقطه origin و واکنش با سرعت یکسان داشته باشه. در مقابل، وقتی یک انسان روی همون سایت حرکت می‌کنه، مسیرها نامنظم، اصلاحات کوچک و Overshootها دیده میشه و سرعت، زمان‌بندی و جهت متغیرن. جدا از اینکه هر تعامل منفرد ممکنه قابل‌قبول به نظر بیاد، اما در طول یک session این الگوها به شکل‌هایی متفاوت منشعب میشن که جعلشون خیلی دشواره. Precursor برای ثبت و ارزیابی همین امضاءهای رفتاری در طول تعامل بازدیدکننده طراحی شده.

چطور Precursor کار می‌کنه — برای اینکه رفتار رو در طول زمان ارزیابی کنه، Precursor به‌صورت پیوسته داده‌های تعامل رو در کلاینت جمع‌آوری می‌کنه و یک دید session-level از فعالیت روی آن سایت می‌سازه.

1. Injection and collection layer — وقتی Precursor روی اپلیکیشن شما فعال باشه، Cloudflare به‌صورت خودکار یک اسکریپت سبک رو در پاسخ‌های HTML که از شبکه‌شون عبور می‌کنه تزریق می‌کنه، بدون نیاز به پیکربندی اضافه، اتصال شبکه‌ای جدید یا embed از سرویس ثالث. بسته‌ی تزریق‌شده کوچک، obfuscated و به‌صورت پویا برای هر پاسخ assemble میشه و طوری طراحی شده که با منطق صفحه تداخل نکنه. اسکریپت listenerهای سبک متصل می‌کنه تا سیگنال‌هایی مثل pointer movement، فعالیت کیبورد، تغییر فوکوس و visibility رو بگیره. این رویدادها به فرمت فشرده سریالایز و در حافظه بافر میشن و در فواصل منظم بازگشت داده به لایه ارزیابی ارسال میشه.

2. Evaluation layer — در edge server، payloadهای Precursor десerializе میشن به ورودی‌های رفتاری. یک dispatcher فهرستی از evaluators رو روی داده‌ها اجرا می‌کنه. هر evaluator استریم‌هایی که براش مهمه رو می‌خونه و می‌تونه سیگنال‌هایی رو به shared detection registry اضافه کنه. ارزیاب‌ها طوری طراحی شدن که داده‌ها رو متقاطع بررسی کنن — برای مثال تایید می‌کنن که فعالیت pointer با مدت زمان visibility صفحه همخوانی داره یا اینکه eventهای کیبورد فقط وقتی فیلد متن فوکوس شده رخ میدن. این جریان اطلاعات سپس به سیگنال‌های فردی تبدیل میشه که برای وزن‌دهی به تشخیص‌ها استفاده میشه.

3. Session integration — داده‌های Precursor سطح session دارند؛ یعنی در طول یک session تجمع پیدا می‌کنن. این session-scoping مهمه چون به بات اجازه نمی‌ده با رفرش صفحه یا شروع دوباره با یک challenge جدید، امضای رفتاری‌ش رو ریست کنه. سیستم همچنین metadata جلسه رو به لایه‌های تشخیص پایین‌دستی برای heuristicهای shadow-mode و آنالیز session، تطابق پیش‌بینی‌شده مقابل واقعی، و heuristicهای delinquency ارسال می‌کنه. این مشاهدات لبه‌ای برای بهبود تشخیص لاگ میشن و برای تنظیم bot score یک session استفاده می‌شن.

4. Privacy by design — Precursor طوری طراحی شده که فقط سیگنال‌هایی رو جمع‌آوری کنه که به تمایز الگوهای انسانی از الگوهای automated و abusive کمک می‌کنن. listenerها حداقل اطلاعات مورد نیاز رو ثبت می‌کنن؛ برای مثال فعالیت کیبورد به صورت timing و rhythm ثبت میشه، نه کلیدهای واقعی. علاوه بر این، سیگنال‌های رفتاری به عنوان الگوهای تجمعی ارزیابی می‌شن نه اقدامات منفرد، و تنها به‌صورت داخلی توسط سیستم‌های تشخیص بات Cloudflare مصرف می‌شن — این داده‌ها در داشبوردهای مشتری نمایان نمی‌شن و به حساب‌های کاربری، هویت‌های لاگین یا پروفایل‌های پایدار گره زده نمیشن. این ترکیب اجازه میده Precursor ارزیابی رفتاری پیوسته و در حال تکامل رو حفظ کنه تا دقت رو بالا ببره در حالی که اصطکاک برای کاربران خوب کم بمونه.

Per-session analytics — برای پشتیبانی از این لایه جدید تشخیص، viewهای مبتنی بر session رو در Security Analytics معرفی کردیم. این داشبوردها چشم‌انداز رو از درخواست‌های منفرد به سمت جریان کامل بازدیدکننده تغییر میدن. حالا می‌تونید سوالاتی مثل این‌ها رو جواب بدید: یک session معمولی روی سایت من چه شکلیه؟ در کجا sessionها از رفتار مورد انتظار منحرف میشن؟ کدوم sessionها نشانه‌های اتوماسیون رو در طول زمان نشون میدن؟ از Security Analytics برای کشف viewهای مرتبط با ترافیک bot management استفاده کنید — این آنالیتیک‌ها اطلاعاتی رو ثبت می‌کنن که آنالیزهای per-request قادر به دیدنش نبودن، مخصوصاً رفتار بین درخواست‌ها. Precursor مستقیماً به سیستم‌هایی مثل bot score، تصمیمات Challenge و security rules فید میده، پس بلافاصله از این زمینه اضافی بهره‌مند میشید.

چه در انتظار است — Precursor پایه‌ای برای تعمیم تشخیص بات در سراسر اپلیکیشنه. ما همچنان دامنه و عمق سیگنال‌های رفتاری برای امنیت، نحوه‌ای که بینش‌های سطح session روی محافظت‌های bot management ما تأثیر میذارن و راه‌های جدید برای تصویری‌سازی و واکنش به داده‌های session رو گسترش میدیم. هر چی بات‌ها تکامل پیدا کنن، تشخیص هم باید فراتر از نقاط بازرسی ایزوله حرکت کنه و وارد جریان کامل فعالیت کاربر بشه.

شروع کنید — Precursor همین حالا در حال rollout هست و می‌تونید مستقیماً از داشبورد Cloudflare فعالش کنید. Precursor تا زمان انتشار GA بعدی ما رایگان خواهد بود. شروع ساده است: Precursor رو برای zone خود روشن کنید و میزان سخت‌گیری برای تأیید session‌ها رو انتخاب کنید. می‌تونید در حالت low-friction اجراش کنید تا رفتارها در بک‌گراند مشاهده بشن، یا در صورت نبودن session معتبر، با اعمال Challenges یک session کاملاً verified بخواید. وقتی فعال شد، Precursor فوراً دفاع‌های بات موجود شما رو تقویت می‌کنه بدون نیاز به تغییر در اپلیکیشن. اگر قبلاً از Bot Management یا Turnstile استفاده می‌کنید، Precursor این محافظت‌ها رو فراتر از Challenges برده و به بقیه session گسترش میده — فعالیت بین لحظاتی که قبلاً محافظت می‌کردید هم پوشش داده میشه. 🚀