المصارعون على وشك البدء باستخدام الذكاء الصناعي لتقليد المستخدمين الحقيقيين - لذلك قمت ببناء كاشف للبوت الذي يتعلم , يتكيف
الفكرة الرئيسية: السلسلة السلوكية. هذا يسمح بتصنيف جديد - حيث من خلال أجهزة الاستشعار وأنظمة التعلم الشفافة , قابلة للضبط | " | مجموعات |" route traffic reflexively based on learned behaviour patterns . البوابة YARP, الروبوتات لا تصل إلى حاسوبك الخلفي. أو استخدام البرمجيات الوسطى لبناء مسار سلوكي مباشرة في طبقة التطبيق
كشف البوت أصبح بصمت واحد من أصعب المشاكل في هندسة الإنترنت الحديثة.
ليس لأن الروبوتات أصبحت أذكى - لكن لأن جعل الذكاء البشري بسيطاً لتقليد سلوك المستخدم الحقيقي:
الحلول التجارية تحل هذا، لكنهم، ’، مكلفين. (£3،K،+/، الشهر اعتيادي. ),، مغلقة، -، المصدر، M SK6، و مرتبطة بأجهزة CDN معينة. .، لا تعرف حقاً ما يحدث تحت الغلاف.
أردت شيئاً مختلفاً
لذا بنيت mostlylucid.botdetection - محرك إكتشاف نموذجي , لآلة حذاء تعليمية
لقد بدأ ببساطة … ثم نما إلى شيء أكثر إثارة .
هنا MSC0 مشهد حقيقي MSC1 سيناريو العالم msc2
مخادعة المزخرفة:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120
يبدو مشروعا.
ولكنها ينسى يرسل Chrome دائماً :
Sec-Fetch-Mode
ومن ثم Accept-Language header doesn’t match the claimed locale.
و معدل الطلب هو آلي بشكل واضح.
إشارة واحدة جيدة.....اثنان مثير للشك.. ...ثلاثة نمط.
النظام يضع علامة عليه تحت 100 ميلي ثانية - لا حاجة إلى الذكاء الصناعي
هذا هو أساس التصميم كله: لا نعتمد على نموذج واحد كبير
في جوهرها , هذا المشروع ’ لا يتعلق حقاً بإكتشاف الروبوتات على الإطلاق
يتصرف الروبوتات الحديثة مثل الكائنات المتكيفة.
الفلسفة هنا بسيطة : تراقب الإشارات , تدمجها | , تسمح لهم بالتفاعل |, وتتكيف مع مرور الوقت ♫. عوضاً عن آلة واحدة ♪ " ♪ الروبوت ♫ / ♪ لا \ - ♪ روبوت " ♪ إختبار ♪, ♪ المحرك يصبح شبكة من أجهزة الاستشعار الصغيرة ♪
إن النظام مبني ليكون شفافاً..,.. قابلاً للشرح.. ,.. متمدد..
الطلبات تتدفق عبر عدة كاشف صغيرة , كل واحد يساهم في جزء صغير من الأدلة .
فكروا بها كمكان مراقبة أمنية في المطار
flowchart TB
subgraph Request["Incoming Request"]
R[HTTP Request]
end
subgraph FastPath["Fast Path (< 100ms)"]
UA[User-Agent Check]
HD[Header Analysis]
IP[Datacenter IP Lookup]
RT[Rate Anomalies]
HE[Heuristic Model]
end
subgraph SlowPath["Slow Path (Async Learning)"]
LLM[LLM Reasoning]
Learn[Weight Learning]
end
subgraph Output["Decision"]
Score[Risk Score 0-1]
Action[Allow / Throttle / Block]
end
R --> UA & HD & IP & RT
UA & HD & IP & RT --> HE
HE --> Score --> Action
HE -.-> LLM -.-> Learn
Learn -.->|updates weights| HE
style FastPath stroke:#10b981,stroke-width:2px
style SlowPath stroke:#6366f1,stroke-width:2px
style Output stroke:#f59e0b,stroke-width:2px
يشتغل بشكل متتزامن. هل لا ينبطئ الـ’ تطبيقك.
هذا يلتقط 80% من الروبوتات فورا.
يجري في الخلفية.
هذا يلتقط الروبوتات المتكيفة - التي يلتصق بها معظم الناس تفكر إنهم ' يلتقطون مع "regex على المستخدمM SK2Agent".
dotnet add package Mostlylucid.BotDetection
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddBotDetection();
var app = builder.Build();
app.UseBotDetection();
app.Run();
ذلك مسك0 إنه مسك1 كل شيء يعمل خارج الصندوق المسك2
| تأكد | ما يجده |
|---|---|
| المستخدم-agent | الروبوتات المعروفةM SK1 المكتبات, قراصنة |
| الرؤوس | سرير أمنية مفقودة, تركيبات مستحيلة |
| IP | مضيفي السحاب يتظاهرون بأنهم “ مستخدمي منزل |
| معدل | إنفجارات آلية, هدم توزيعي |
| التماسك | “Chrome/120” بدون ChromeM SK3مجموعة الرأس الحقيقية |
التماسك هو ميزة النوم - الروبوتات الحديثة يمكن أن تتقلب واحد إشارة ولكنها غالباً تفشل عند الإختراق -ماسك الإشارات .
هنا ' هذا ما يبدو عليه الكشف الحقيقي - هذا من العرض الذي يشغل fastpath سياسة (كل أجهزة الكشف المتوازيةM SK1 في الإنتاج, معظم الطلبات تخرج مبكراً بعد أن يتفق أجهزة الكشف 2-3
{
"policy": "fastpath",
"isBot": false,
"isHuman": true,
"humanProbability": 0.8,
"botProbability": 0.2,
"confidence": 0.76,
"riskBand": "Low",
"recommendedAction": { "action": "Allow", "reason": "Low risk (probability: 20%)" },
"processingTimeMs": 50.7,
"detectorsRan": ["UserAgent", "Ip", "Header", "ClientSide", "Behavioral", "Heuristic", "VersionAge", "Inconsistency"],
"detectorCount": 8,
"earlyExit": false
}
8 أجهزة الكشف تعمل في 51ms - أن' الإعدام المتوازن عبر مصادر إثبات متعددة .
كل كاشف يساهم في تأثير وزني. سلبي M SK1 إشارة بشرية. إيجابية = إشارات حذاءMSC4
| كاشف | تأثير | وزن | محمول | سبب | |||
|---|---|---|---|---|---|---|---|
| موظف المستخدم | -0.20 ≥ | 1.0 ♫ | -0.20 ♪ | المستخدم- يظهر العميل طبيعياً ♫ | |||
| العنوان | -0.15 | ||||||
| السلوكي | -0.10 | ||||||
| الهيوريستيكس | -0.77 | 2.0 | -1.54 | 88% إحتمالية إنسانية (16 مميزات | |||
| واجهة клиент | -0.05 | ||||||
| عمر الإصدار | -0.05 | ♫ | 0.8 ♫ | ||||
| عدم التماسك | -0.05 ≥ | \0.8 | -0.04 | ||||
| IP | 0.00 |
الـ كاشف عصبي يمثّل هنا - إنه' يُزن 2x ويستخدم 16 الخصائص ليصل إلى S88% الثقة الإنسانيةM SK5
كل كاشف يصدر إشارات تغذية النموذج الهيوريستي
{
"ua.is_bot": false,
"ua.raw": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
"ip.is_local": true,
"ip.address": "::1",
"header.has_accept_language": true,
"header.has_accept_encoding": true,
"header.count": 16,
"fingerprint.integrity_score": 1,
"behavioral.anomaly": false,
"heuristic.prediction": "human",
"heuristic.confidence": 0.77,
"versionage.analyzed": true
}
هذه الإشارات تستمر وتدرب النظام التعلمي على مر الزمن.
مجموع الدرجات للقرار النهائي:
| الفئة | النتيجة | الوزن | ملاحظات S | ||||
|---|---|---|---|---|---|---|---|
| هدرستي | -1.54 | ||||||
| العميل المستخدم | -0.20 | ||||||
| العنوان | -0.15 | ♫ | 1.0 ♪ | جميع العناوين المتوقعة موجودة | |||
| سلوكي | -0.10 | ||||||
| جانب المشتري | -0.04 | \0.8 ♪ | حصلت على بصمة إصبع حقيقية | ||||
| عمر الإصدار | -0.04 | ||||||
| عدم توازن | |||||||
| IP | 0.00 | ♫ | 0.5 ♫ |
مجموع الدرجات المُزنة: -2.11 → إشارة بشرية قوية → تسمح.
ملاحظة: هذا هو العرض
fastpathالسياسة التي تسير كل كاشفات لرؤية . في الإنتاج الحقيقي مع إحداث الخروج المبكر , عالية تحت 10ms. الـ"51ms" هنا لأن نظام العرض لا يُمكن الخروج مبكراً لإظهار جميع المساهمات
للقارنة , هنا ' هو demo سياسة - السلسلة الكاملة بما فيها استدلال LLM . هذا يوضح ما يحدث عند أجهزة الكشف لا نتفق:
{
"policy": "demo",
"isBot": false,
"isHuman": true,
"humanProbability": 0.87,
"botProbability": 0.13,
"confidence": 1.0,
"botType": "Scraper",
"riskBand": "Low",
"recommendedAction": { "action": "Allow", "reason": "Low risk (probability: 13%)" },
"processingTimeMs": 1370,
"aiRan": true,
"detectorsRan": ["UserAgent", "Ip", "Header", "ClientSide", "Behavioral",
"VersionAge", "Inconsistency", "Heuristic", "HeuristicLate", "Llm"],
"detectorCount": 10
}
10 كاشفات في 1.4 ثواني - جرب LLM و لا يتفقون مع الهيوريستيك
| كاشف | تأثير | وزن | محمول | سبب | |||
|---|---|---|---|---|---|---|---|
| LLM | +0.85 | 2.5 | +2.13 | "الक्रोم الشائع في الروبوتات, كُكيز + المراجع مثير للشكM SK4 | |||
| هُريستيكية أواخر | -0.77 ≥ | ≤2.5 | ±-1.92 ♪ | ♪ 88% إنسان ( مع كل الأدلة | |||
| الهيوريستيكس ( مبكرة) | -0.77 ♫ | ♫ | |||||
| موظف المستخدم | -0.20 ≥ | 1.0 ♫ | -0.20 ♪ | المستخدم- يظهر العميل طبيعياً ♫ | |||
| العنوان | -0.15 | ||||||
| السلوكي | -0.10 | ||||||
| واجهة клиент | 0.00 | ||||||
| عمر الإصدار | -0.05 | | 0.8 | |||||
| عدم التماسك | -0.05 ≥ | \0.8 | -0.04 | ||||
| IP | 0.00 |
هذه هي الحالة المثيرة للاهتمام - قامت الـ LLM بتصنيفها كبوت محتمل في حين أن جميع أجهزة الاستشعار ثابتة تقول الإنسان
{
"ai.prediction": "bot",
"ai.confidence": 0.85,
"ai.learned_pattern": "Browser string suggests Chrome, common in bots. Presence of cookies and a specific referer also points to a potential bot."
}
يُسجل منطق الـ LLM ــ ' ــ كإشارة تُرسل مرة أخرى إلى نظام التعلم ـــ . ــ مع مرور الوقت ــ, ــ إذا كان هذا النمط يستمر في الظهور و يتم تأكيده كحركة الروبوت ـــ, ــ فإن الوزن الهيدريّسي سوف يتناسب ــ
ملاحظة:
جري هدرائي مرتين - مبكراً (قبل كل أجهزة الكشف ,) وأخيرا .(بعد كل الأدلة , ). قالوا كلاهما .
لم يوافق الـ LLM - لقد لاحظ النمط الذي لم يتمكن من إكتشافه أجهزة الاستشعار الميكانيكية. تأثيره +2.13 مع وزنه يعادل جزئياً التأثير الهيوريستيM SK3s -3.46.
لا بصمة أصابع -ClientSide أعاد 0 لأن JS لم يكن قد تم تنفيذه بعد'M SK3 في متصفح حقيقيMSC4 سوف يضيف هذا إشارة إنسانية أكثرMST5
الحكم النهائي: تسمح - حتى مع إشتاؤه LLM' , الدلائل المجمعة لا تزال تفضّل البشر botType: "Scraper" العلم يعني أنه يُراقب
تسلسل التصنيف يظهر التوتر:
| الفئة | النتيجة | الوزن | ملاحظات S | ||
|---|---|---|---|---|---|
| الهيوريستيكس | -3.46 | ||||
| الذكاء الصناعي | +2.13 ♫ | ♫ ♫ 2.5 ♫ | |||
| العميل المستخدم | -0.20 | ||||
| سرية | -0.15 | ||||
| سلوكي | -0.10 | ||||
| الجزء العلوي للزبائن | 0.00 | \1.8 ♪ | لا نحصل على بصمة إصبعية بعد | ||
| عمر الإصدار | -0.04 | ||||
| عدم توازن | |||||
| IP | 0.00 |
مجموع الدرجات المُزنة: -1.86 → البشر يفوزون, لكن معارضة الـ LLM ' تُلاحظ
رؤية أساسية: لا يثق النظام في أي جهاز كاشف وحيد. عندما يختلفون. عندما يتم تقييم الأدلة، يفوز الغالبية. لكن آراء الأقلية يتم تسجيلها للتعلم.
مهم: هذا المخرج ال verbose هو demo-onlyM SK1 في الإنتاج, تحصل على استجابة خفيفة من خلال مخطوطات HTTP (
X-Bot-Confidence,X-Bot-RiskBand, وغيره.) أو ببساطةcontext.IsBot()تأكد. ال JSON الكامل هو للحل والضبط - أنت ' لن ترسل هذا أبدا إلى العملاءM SK3
if (context.IsBot())
return Results.StatusCode(403);
var score = context.GetBotConfidence(); // 0.0–1.0
var risk = context.GetRiskBand(); // Low/Elevated/Medium/High
app.MapGet("/api/data", Secret).BlockBots();
app.MapGet("/sitemap.xml", Sitemap)
.BlockBots(allowVerifiedBots: true);
مستويات المخاطر تقود التحرك
| الأخطار | الثقة | الإجراء recommandé | |||||||
|---|---|---|---|---|---|---|---|---|---|
| منخفض | < | 0.3 | |||||||
| مرتفعة | 0.3–0.5 | سجل | %4 | معدل | 5 | حد | 6 | ||
| متوسط | 0.5–0.7 | تحدي S | |||||||
| عالي | > | 0.7 | 4 | بلاك | 5 |
ليس مطلوبا - لكن مفيدا لالتقاط التكنلوجيا المتقدمة .
النظام يحتوي على كاشف حراري يستخدم regression logistic مع وزنات تعلمة ديناميكيا. إنه يبدأ بإعدادات تلقائية معقولة ويتطور على أساس ردود الفعل للكشف.
تأخير نموذجي: 1–5ms
{
"BotDetection": {
"AiDetection": {
"Heuristic": {
"Enabled": true,
"LoadLearnedWeights": true,
"EnableWeightLearning": true
}
}
}
}
الميزات يتم استخراجها ديناميكيا - النماذج الجديدة تحصل تلقائيا على الوزن الលំនាំي وتتعلم مع مرور الوقت . النظام يكتشف ما هو مهم إختيارك حركة المرور.
يلتقط الروبوتات المنحرفة التي تبدو "fineM SK1 إلى قواعد سريعة. تستخدم أولاما من أجل إستنتاج LLM محلي.
ollama pull gemma3:1b
{
"BotDetection": {
"AiDetection": {
"Provider": "Ollama",
"Ollama": { "Model": "gemma3:1b" }
}
}
}
الذكاء هو فشل-safe - إذا كان ' ينزل
لائحة بلاك ثابتة تذهب إلى حالة جامد. المهاجمين يكيفون. إذن هذا النظام يتعلم
flowchart LR
N[Neutral] -->|repeated bad activity| S[Suspect]
S -->|confirmed| B[Blocked]
B -->|no activity| S
S -->|stays clean| N
style B stroke:#ef4444,stroke-width:2px
style S stroke:#eab308,stroke-width:2px
style N stroke:#10b981,stroke-width:2px
الأنماط تتحلل مع مرور الوقت:
بدون تدمير تقوم بحظر المستخدمين الشرعيين إلى الأبد
{
"BotDetection": {
"Learning": {
"Enabled": true,
"ScoreDecayTauHours": 168,
"GcEligibleDays": 90
}
}
}
هناك أيضاً دوكر-أول ناظف YARP عكسي التي تقوم بكشف قبل طلبات تضغط على تطبيقك.
flowchart LR
I[Internet] --> G[YARP Gateway]
G -->|Human| App[Your App]
G -->|Search Engine Bot| App
G -->|Malicious| Block[403]
تشغيله في خط واحد:
docker run -p 80:8080 \
-e DEFAULT_UPSTREAM=http://your-app:3000 \
scottgal/mostlylucid.yarpgateway
تعمل على:
للتوجيه حسب الطلب
services:
gateway:
image: scottgal/mostlylucid.yarpgateway
volumes:
- ./yarp.json:/app/config/yarp.json
{
"BotDetection": {
"BotThreshold": 0.7,
"BlockDetectedBots": true,
"EnableAiDetection": true,
"Learning": { "Enabled": true },
"PathPolicies": {
"/api/login": "strict",
"/sitemap.xml": "allowVerifiedBots"
}
}
}
هذا هو الجزء 1 (üleview). الأجزاء التالية تعمق أكثر
خريطة الطريق المستقبلية:
إذا أردت كاشف روبوت يمكنك فهم, توسيع, و تجري في أي مكان, هذه السلسلة لك
لا ترخيص – دعامه عامة. استخدمها كما تريد
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.