# **أكثر وضوحاً .إكتشاف الراديو : القتال مرة أخرى ضد المصارعين (جزء 1)**

*المصارعون على وشك البدء باستخدام الذكاء الصناعي لتقليد المستخدمين الحقيقيين - لذلك قمت ببناء كاشف للبوت الذي يتعلم , يتكيف*

**الفكرة الرئيسية: السلسلة السلوكية.** هذا يسمح بتصنيف جديد - حيث من خلال أجهزة الاستشعار وأنظمة التعلم الشفافة , قابلة للضبط | " | مجموعات |" route traffic reflexively based on learned behaviour patterns . [البوابة YARP](https://hub.docker.com/r/scottgal/mostlylucid.yarpgateway), الروبوتات لا تصل إلى حاسوبك الخلفي. أو استخدام البرمجيات الوسطى لبناء مسار سلوكي مباشرة في طبقة التطبيق

<pinned/>
<!--category-- ASP.NET, Bot Detection, Security -->
<datetime class="hidden">2025-12-08T07:00</datetime>

[![غويت](https://img.shields.io/nuget/v/mostlylucid.botdetection.svg)](https://www.nuget.org/packages/mostlylucid.botdetection/)
[![GitHub](https://img.shields.io/github/stars/scottgal/mostlylucid.nugetpackages?style=social)](https://github.com/scottgal/mostlylucid.nugetpackages/blob/main/Mostlylucid.BotDetection/README.md)
[![الدوكر](https://img.shields.io/docker/pulls/scottgal/mostlylucid.yarpgateway)](https://hub.docker.com/r/scottgal/mostlylucid.yarpgateway)

---


## **لماذا هذا موجود**

كشف البوت أصبح بصمت واحد من أصعب المشاكل في هندسة الإنترنت الحديثة.

ليس لأن الروبوتات أصبحت أذكى - لكن لأن **جعل الذكاء البشري بسيطاً لتقليد سلوك المستخدم الحقيقي**:

* تدور الوظائف المنزلية
* بصمة براؤزر صالحة تماماً
* حركة فأرة واقعية
* تنفيذ JavaScript
* التكيف عندما يتم حظرها

الحلول التجارية تحل هذا، لكنهم، ’، مكلفين. (£3،K،+/، الشهر اعتيادي. ),، مغلقة، -، المصدر، M SK6، و مرتبطة بأجهزة CDN معينة. .، لا تعرف حقاً ما يحدث تحت الغلاف.

أردت شيئاً مختلفاً

* أفتح
* المحلية
* من المنطقي
* سهلة الإمتداد
* رخيصة للتشغيل (نعم, حتى على Raspberry Pi

لذا بنيت **mostlylucid.botdetection** - محرك إكتشاف نموذجي , لآلة حذاء تعليمية

لقد بدأ ببساطة … ثم نما إلى شيء أكثر إثارة .

---


[TOC]

---


## **مثال ملموس (ما الذي يلتقطه هذا في الواقع)**

هنا 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 ميلي ثانية - لا حاجة إلى الذكاء الصناعي

هذا هو أساس التصميم كله:
**لا نعتمد على نموذج واحد كبير**

---


## فلسفة النظام

في جوهرها , هذا المشروع ’ لا يتعلق حقاً بإكتشاف الروبوتات على الإطلاق

يتصرف الروبوتات الحديثة مثل الكائنات المتكيفة.

الفلسفة هنا بسيطة : تراقب الإشارات , تدمجها | , تسمح لهم بالتفاعل |, وتتكيف مع مرور الوقت ♫. عوضاً عن آلة واحدة ♪ " ♪ الروبوت ♫ / ♪ لا \ - ♪ روبوت \" ♪ إختبار ♪, ♪ المحرك يصبح شبكة من أجهزة الاستشعار الصغيرة ♪

إن النظام مبني ليكون شفافاً..,.. قابلاً للشرح.. ,.. متمدد..

---


## **كيف يعمل ( النسخة القصيرة)**

الطلبات تتدفق عبر عدة كاشف صغيرة , كل واحد يساهم في جزء صغير من الأدلة .

فكروا بها كمكان مراقبة أمنية في المطار

```mermaid
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
```

### **طريق سريع (< 100ms)**

يشتغل بشكل متتزامن. هل لا ينبطئ الـ’ تطبيقك.

* أنماط الروبوت المعروفة
* الخبوع المفقودة المتصفحات الحقيقية دائماً ترسل
* IP لمركز البيانات (AWS/AzureM SK2GCP )
* معدلات ذروة
* إختلافات بين رؤوس UA +

هذا يلتقط **80%** من الروبوتات فورا.

### **الطريق البطيء (Async)**

يجري في الخلفية.

* النموذج الهيوريستي مع الوزن المتعلم
* استدلال LLM من خلال [أولاما](https://ollama.com/)
* تحديث السمعة النمطية
* نسيان إشارات مسدودة

هذا يلتقط الروبوتات المتكيفة - التي يلتصق بها معظم الناس *تفكر* إنهم ' يلتقطون مع "regex على المستخدمM SK2Agent".

---


## **حاول ذلك في 10 ثوان**

```bash
dotnet add package Mostlylucid.BotDetection
```

```csharp
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مجموعة الرأس الحقيقية |

التماسك هو ميزة النوم - الروبوتات الحديثة يمكن أن تتقلب *واحد* إشارة ولكنها غالباً تفشل عند الإختراق -ماسك الإشارات .

---


## **نتيجة إكتشاف حقيقية (Broken Down)**

هنا ' هذا ما يبدو عليه الكشف الحقيقي - هذا من العرض الذي يشغل `fastpath` سياسة (كل أجهزة الكشف المتوازيةM SK1 في الإنتاج, معظم الطلبات تخرج مبكراً بعد أن يتفق أجهزة الكشف 2-3

### الخلاصة

```json
{
  "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

### إشارات تم جمعها

كل كاشف يصدر إشارات تغذية النموذج الهيوريستي

```json
{
  "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" هنا لأن نظام العرض لا يُمكن الخروج مبكراً لإظهار جميع المساهمات

### خط أنابيب كامل (النموذج التجريبي مع LLM)

للقارنة , هنا ' هو `demo` سياسة - السلسلة الكاملة بما فيها استدلال LLM . هذا يوضح ما يحدث عند أجهزة الكشف **لا نتفق**:

```json
{
  "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 بتصنيفها كبوت محتمل** في حين أن جميع أجهزة الاستشعار ثابتة تقول الإنسان

```json
{
  "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 ــ ' ــ كإشارة تُرسل مرة أخرى إلى نظام التعلم ـــ . ــ مع مرور الوقت ــ, ــ إذا كان هذا النمط يستمر في الظهور و يتم تأكيده كحركة الروبوت ـــ, ــ فإن الوزن الهيدريّسي سوف يتناسب ــ

ملاحظة:

1. **جري هدرائي مرتين** - مبكراً (قبل كل أجهزة الكشف ,) وأخيرا .(بعد كل الأدلة , ). قالوا كلاهما .

2. **لم يوافق الـ LLM** - لقد لاحظ النمط الذي لم يتمكن من إكتشافه أجهزة الاستشعار الميكانيكية. تأثيره +2.13 مع وزنه يعادل جزئياً التأثير الهيوريستيM SK3s -3.46.

3. **لا بصمة أصابع** -ClientSide أعاد 0 لأن JS لم يكن قد تم تنفيذه بعد'M SK3 في متصفح حقيقيMSC4 سوف يضيف هذا إشارة إنسانية أكثرMST5

4. **الحكم النهائي: تسمح** - حتى مع إشتاؤه 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

---


## **باستخدام النتائج**

```csharp
if (context.IsBot())
    return Results.StatusCode(403);

var score = context.GetBotConfidence();  // 0.0–1.0
var risk  = context.GetRiskBand();       // Low/Elevated/Medium/High
```

### حماية النقاط النهائية

```csharp
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 |

---


## **إكتشاف الذكاء الاصطناعي (إختياري)**

ليس مطلوبا - لكن مفيدا لالتقاط التكنلوجيا المتقدمة .

### **كاشف عصبي (سرعة,تعلمM SK2**

النظام يحتوي على كاشف حراري يستخدم regression logistic مع وزنات تعلمة ديناميكيا. إنه يبدأ بإعدادات تلقائية معقولة ويتطور على أساس ردود الفعل للكشف.

تأخير نموذجي: **1–5ms**

```json
{
  "BotDetection": {
    "AiDetection": {
      "Heuristic": {
        "Enabled": true,
        "LoadLearnedWeights": true,
        "EnableWeightLearning": true
      }
    }
  }
}
```

الميزات يتم استخراجها ديناميكيا - النماذج الجديدة تحصل تلقائيا على الوزن الលំនាំي وتتعلم مع مرور الوقت . النظام يكتشف ما هو مهم *إختيارك* حركة المرور.

### **Ollama LLM (سبب عميق)**

يلتقط الروبوتات المنحرفة التي تبدو "fineM SK1 إلى قواعد سريعة. تستخدم [أولاما](https://ollama.com/) من أجل إستنتاج LLM محلي.

```bash
ollama pull gemma3:1b
```

```json
{
  "BotDetection": {
    "AiDetection": {
      "Provider": "Ollama",
      "Ollama": { "Model": "gemma3:1b" }
    }
  }
}
```

الذكاء هو **فشل-safe** - إذا كان ' ينزل

---


## **نظام التعلم: متكيف, غير محفزM SK2 سعيد**

لائحة بلاك ثابتة تذهب إلى حالة جامد. المهاجمين يكيفون.
إذن هذا النظام يتعلم

```mermaid
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
```

الأنماط تتحلل مع مرور الوقت:

* يتم إعادة توزيع IP
* يتم إصلاح برمجيات خاطئة
* تتغير حركة المرور بشكل طبيعي

بدون تدمير تقوم بحظر المستخدمين الشرعيين إلى الأبد

```json
{
  "BotDetection": {
    "Learning": {
      "Enabled": true,
      "ScoreDecayTauHours": 168,
      "GcEligibleDays": 90
    }
  }
}
```

---


## **بوابة YARP: حماية حافة لتطبيقك**

هناك أيضاً **دوكر-أول ناظف YARP عكسي** التي تقوم بكشف *قبل* طلبات تضغط على تطبيقك.

```mermaid
flowchart LR
    I[Internet] --> G[YARP Gateway]
    G -->|Human| App[Your App]
    G -->|Search Engine Bot| App
    G -->|Malicious| Block[403]
```

تشغيله في خط واحد:

```bash
docker run -p 80:8080 \
  -e DEFAULT_UPSTREAM=http://your-app:3000 \
  scottgal/mostlylucid.yarpgateway
```

تعمل على:

* لينكس
* macOS
* الحواسيب
* **ARM (yesM SK1 Raspberry Pi)**

للتوجيه حسب الطلب

```yaml
services:
  gateway:
    image: scottgal/mostlylucid.yarpgateway
    volumes:
      - ./yarp.json:/app/config/yarp.json
```

---


## **نظام تصنيع معقول**

```json
{
  "BotDetection": {
    "BotThreshold": 0.7,
    "BlockDetectedBots": true,
    "EnableAiDetection": true,
    "Learning": { "Enabled": true },
    "PathPolicies": {
      "/api/login": "strict",
      "/sitemap.xml": "allowVerifiedBots"
    }
  }
}
```

---


## **أين يذهب هذا**

هذا هو الجزء 1 (üleview).
الأجزاء التالية تعمق أكثر

* **الجزء 2**: [واجهات داخلية جديدة,ذاكرة التوقيع, حلقات ردود الفعل للإستجابةM SK2 وعمارة StyloBot (رمزMSTK4مستوىMTSK5](/blog/post/botdetection-part2-signature-pipeline-and-stylobot-architecture)
* **الجزء 3**: تحليل السلوك
* **الجزء 4**:klient-مساحة الأصابع الجانبية
* **الجزء 5**: كاشف هuriستي - يزن وزن التعلم في الوقت الحقيقي
* **الجزء 6**: مداخلات كشف LLM
* **الجزء 7**: نظام التعليم يشرح بشكل صحيح

**خريطة الطريق المستقبلية:**

* نموذج مبني على RAG- يتطابق مع المداخلات الفيكتورية
* إستنتاج نموذج صغير محلي من خلال [لاماما شارب](https://github.com/SciSharp/LLamaSharp) /NX
* تشابه لغوي لكشف نمط الهجمات الجديدة

إذا أردت كاشف روبوت يمكنك *فهم*, *توسيع*, و *تجري في أي مكان*, هذه السلسلة لك

---


## **الروابط**

* **GitHub:** وثائق كاملة
  [https://githubM SK1com/scottgalMSC3mostlylucidMスク4nugetpackages](https://github.com/scottgal/mostlylucid.nugetpackages)
* **NuGet:** تشغيل الحزمة
  [https://www .nuget.orgM SK3packagesMST4mostlylucidMSC5botdetection](https://www.nuget.org/packages/mostlylucid.botdetection)
* **مركز دوكر:** بوابة YARP
  [https://hubM SK1docker.comMSC3rMST4scottgalMSSK5mostlylucidMSR6yarpgateway](https://hub.docker.com/r/scottgal/mostlylucid.yarpgateway)

**لا ترخيص – دعامه عامة. استخدمها كما تريد**