Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/rsac-labs/quantickle
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعجمع المعلوماتالأدوات والمكوناتاستخبارات التهديدات
GitHubrsac-labs/quantickle

Quantickle

مجموعة أدوات رسوم بيانية لبحوث التهديدات - وأشياء أخرى

عرض المستودع
195منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
Quantickle — مجموعة أدوات رسوم بيانية لبحوث التهديدات - وأشياء أخرى | Kitploit

Quantickle - تصور الرسم البياني الشبكي لاستخبارات التهديدات


q-mainheader


أداة تصور الرسوم البيانية الشبكية تعمل في المتصفح، مبنية على Cytoscape.js. تساعد Quantickle في تصور وتحليل البيانات المترابطة من أي نوع، لكنها موجهة نحو استخبارات التهديدات.

التثبيت

  • تعليمات التثبيت

جدول المحتويات

  • نظرة عامة
  • الإمكانيات والأمثلة
  • المفاهيم الأساسية
  • نموذج البيانات
    • تنسيقات الاستيراد والتصدير
  • التخطيطات
  • التكاملات
  • سير العمل
  • الإعدادات
  • واجهة برمجة التطبيقات
  • التخزين
  • استكشاف الأخطاء وإصلاحها
  • هيكل المشروع
  • توثيق إضافي

إخلاء المسؤولية

تم كتابة هذا المشروع إلى حد كبير بواسطة الترميز الصوتي (vibecoding)، لذا اتخذ الاحتياطات المناسبة. تمت مراجعة الكود بواسطة مبرمجين حقيقيين، لكنه ليس محصنًا ضد الثغرات. لا تعرضه خارجيًا دون مراجعة أمنية شاملة.

نظرة عامة

Quantickle هي مجموعة أدوات تفاعلية تعمل في المتصفح أولاً لبناء واستكشاف الرسوم البيانية الشبكية. يتولى الواجهة الأمامية (Cytoscape.js + واجهة مستخدم مخصصة) معالجة العرض والتحرير وتنفيذ التخطيط، بينما يخدم خادم Express الخفيف الواجهة الأمامية، ويوكل استدعاءات التكامل، ويخزن الرسوم البيانية اختياريًا في Neo4j. بعبارة أخرى، يمتلك المتصفح حالة الرسم البياني والتصور، بينما يوجد الخادم لتوفير الأصول والتكاملات عند الحاجة.

✨ الميزات الرئيسية

  • لا تخزين من جانب الخادم افتراضيًا: تعيش الرسوم البيانية في متصفحك حتى تقوم بتصديرها أو مزامنتها عبر التكاملات.
  • طرق إدخال بيانات متعددة:
    • تحميل ملف CSV/قائمة الحواف
    • تكامل واجهة برمجة التطبيقات REST
    • إدخال البيانات المباشر
  • أداء عالي:
    • عرض WebGL للرسوم البيانية الكبيرة
    • تحميل تدريجي
    • تحسين الأداء التلقائي
  • تصور مرن:
    • أكثر من 20 خوارزمية تخطيط
    • أنماط قابلة للتخصيص للعقد والحواف
    • حقل معلومات مدعوم بـ Markdown للعقد
    • تصفية ديناميكية
    • الرسوم البيانية واعية بالتسلسل الزمني (تخطيطات زمنية، تلوين زمني)
  • أنماط منحنيات الحواف:
    • يعرض محرر الحواف خيارات منحنية (bezier)، مستقيمة، مجمعة (unbundled-bezier)، تاكسي، وتاكسي مدور.
    • يدعم Cytoscape أيضًا أنماط المنحنيات haystack و segments من خلال التنسيق المخصص.
  • واجهة تفاعلية:
    • عناصر تحكم في التكبير/التصغير والتحريك
    • سحب العقد
    • أدوات التحديد
    • وظيفة البحث
    • لا يتحرك الرسم البياني عند تحريك العقد الفردية
    • عقد حاوية لتجميع العناصر ذات الصلة
    • إضافة تعليقات وصور للسياق
    • جميع الأسطح يمكن أن تحتوي على أيقونات وخلفيات قابلة للتخصيص
  • رسوم بيانية قابلة للربط:
    • أضف عقد رسم بياني لإنشاء نقطة قفز إلى رسم بياني آخر
    • سيعرض الرسم البياني الهدف زر "رجوع"
    • سلسلة الرسوم البيانية معًا في هياكل شجرية ولوحات معلومات

الإمكانيات والأمثلة

فيما يلي بعض الأمثلة على ما يمكن أن تفعله Quantickle:

تخصيص كل شيء: الخلفيات، الأيقونات، التعليقات، أنواع العقد والحواف، بالإضافة إلى مجالات البحث


اختر من بين أكثر من 20 خوارزمية تخطيط (مثل Klay مقابل Euler)


قم بتضمين جزء من الرسم البياني في عقد حاوية، وطبق تنسيقًا وتخطيطًا منفصلين


ضع طوابع زمنية على عقدك لإنشاء خطوط زمنية أو رسوم بيانية ملونة زمنيًا

تنزيل الأداة

اربط الرسوم البيانية لإنشاء لوحات معلومات قابلة للتصفح واتصالات منطقية


احفظ إلى JSON. قم بالتصدير إلى CSV، PDF، PNG، أو HTML ثابت. استيراد CSV، لصق، أو جلب محتوى من التكاملات


احفظ اختياريًا إلى قواعد بيانات Neo4j


استعلام عن التكاملات مثل VirusTotal أو OpenAI - احصل على النتائج في حاويات منفصلة

المفاهيم الأساسية

تبني Quantickle على مجموعة صغيرة من المفاهيم المشتركة التي تربط مجموعة التوثيق:

  • نظام الإحداثيات والتخطيطات المكانية - تستخدم تخطيطات Quantickle المطلقة والواعية بالعمق مكعبًا بحجم 0-1000 لإحداثيات x و y و z. انظر COORDINATE_SYSTEM.md للحصول على القواعد المكانية الكاملة وسلوك الإضاءة.

  • إدارة ملفات الرسوم البيانية وملفات المشروع - ملفات .qut هي الحالة المحفوظة الأساسية؛ فهي تخزن العقد والحواف والبيانات الوصفية والتسلسل الهرمي للحاويات.

  • تكامل Neo4j - يمكن للخادم تخزين واسترداد الرسوم البيانية من Neo4j، بما في ذلك لقطات البيانات الوصفية. انظر NEO4J_INTEGRATION_README.md للحصول على تفاصيل التكوين وسير العمل.

نموذج البيانات

الرسم البياني في Quantickle هو مجموعة من العقد والحواف مع بيانات وصفية تدفع التخطيط والتنسيق والتجميع.

  • الرسم البياني (Graph): مجموعة البيانات الكاملة، بما في ذلك metadata، ومصفوفة العقد، ومصفوفة الحواف، وحالة التخطيط أو العرض الاختيارية.
  • العقدة (Node): رأس (vertex) مع id مطلوب بالإضافة إلى سمات اختيارية مثل و و و والإحداثيات. قد تتضمن العقد أيضًا من Markdown أو خصائص مخصصة تستخدمها التكاملات.
label
type
size
color
info
  • الحافة (Edge): علاقة مع معرفات عقد source + target وسمات اختيارية مثل label و type و weight وبيانات وصفية للتنسيق.
  • الحاوية (Container): عقدة تجمع العناصر ذات الصلة. يمكن أن تكون الحاويات متداخلة وغالبًا ما تكون بمثابة حدود مرئية أو دلالية.
  • JSON الداخلي للرسم البياني في Quantickle هو هيكل مسطح يحتوي على مصفوفات nodes و edges. يتم الحفاظ على علاقات الحاويات والفئات كبيانات وصفية للعقد.

    تنسيقات الاستيراد والتصدير

    يقبل Quantickle عدة تنسيقات استيراد من ملف → استيراد بيانات ومن التكاملات الآلية. كل أداة استيراد تغذي نفس خط أنابيب الرسم البياني المستخدم عند حفظ ملفات مشروع .qut، لذا فإن الهياكل أدناه تمثل أيضًا أشكال التصدير.

    استيراد CSV

    تتعرف أداة استيراد CSV على تخطيطين:

    1. أقسام العقد + الحواف – تنسيق التصدير المستخدم بواسطة Quantickle والخيار الأكثر أمانًا عند إعداد البيانات يدويًا. يحتوي الملف على جدول عقد يتبعه صف فارغ وجدول حواف: ```csv node_id,node_label,node_type,node_size,node_color,node_x,node_y srv-1,Gateway,server,40,#2dd4bf,100,250 cli-1,Analyst,client,28,#38bdf8,320,210

      source,target,label,weight,type srv-1,cli-1,allows,1,connection

      root@kitploit:~

    يتم قبول الأعمدة الإضافية—يقوم برنامج الاستيراد بتطبيع الترويسات مثل Node Label أو nodeLabel أو label، ويحافظ على أي قيم color/size صريحة، ويحتفظ بالإحداثيات عند توفيرها.

    1. قائمة الحواف مع سمات اختيارية – ملفات CSV بسيطة تحتوي على الأقل على عمودين source و target. يتم دمج الأعمدة الاختيارية مثل label أو type أو weight أو source_type أو target_type أو source_label أو color في العقد والحواف المولَّدة عند وجودها: ```csv source,target,label,source_type,target_type srv-1,cli-1,allows,server,client srv-1,sensor-2,monitors,server,sensor
      root@kitploit:~

    يقوم Quantickle بتحليل الرؤوس بدون حساسية لحالة الأحرف، ويقبل كلاً من snake_case والأسماء المفصولة بمسافات، ويتخطى الصفوف الفارغة تلقائيًا.

    قائمة الحواف (.edges)

    أزواج الحواف المفصولة بمسافات بيضاء عادية مدعومة لإنشاء رسوم بيانية هيكلية سريعة. يتم إنشاء العقد المفقودة تلقائيًا:```text srv-1 cli-1 srv-1 sensor-2

    root@kitploit:~
    > **ملاحظة:** لم يعد يتم دعم دفاتر عمل Excel (`.xlsx`). قم بتصدير البيانات أو حفظها بصيغة CSV قبل استيرادها إلى Quantickle.
    
    #### JSON
    
    `File → Import Data` يقبل أيضًا صادرات JSON التي ينتجها Quantickle أو مجموعات عناصر Cytoscape الخام. عندما يحتوي الملف على `elements` تحتوي على إدخالات `data` متداخلة، يتم تسويتها إلى الهيكل الداخلي لـ Quantickle.
    
    #### رسم بياني Quantickle (`.qut`)
    
    ملفات `.qut` هي مستندات JSON تحتوي على كائنات العقد والحواف المسطحة. يبدو رسم بياني صغير كما يلي:
    ``````json
    {
      "metadata": { "name": "My graph" },
      "nodes": [
        { "id": "srv-1", "label": "Gateway", "type": "server", "size": 40 }
      ],
      "edges": [
        { "id": "srv-1_cli-1", "source": "srv-1", "target": "cli-1", "label": "allows" }
      ]
    }
    

    لا تزال الملفات القديمة التي تخزن العقد/الحواف داخل كائن data مقبولة—يقوم المحمل بتسويتها تلقائيًا ويحافظ على الإحداثيات والفئات وبيانات التسلسل الهرمي للحاوية.

    حمولات API

    عند تبادل البيانات مع واجهة برمجة التطبيقات HTTP أو تكامل Neo4j، أرسل نفس الشكل المسطح المستخدم في ملفات .qut:```json { "nodes": [ { "id": "srv-1", "label": "Gateway", "type": "server", "size": 40 } ], "edges": [ { "id": "srv-1_cli-1", "source": "srv-1", "target": "cli-1", "label": "allows" } ] }

    root@kitploit:~
    الحقل الاختياري `info` لا يزال يدعم Markdown ويتم الاحتفاظ به بجانب أي خصائص مخصصة.
    
    <a id="layouts"></a>
    ## التخطيطات
    
    يقوم Quantickle بتجميع التخطيطات في مجموعات عملية حتى تتمكن من اختيار التخطيط المناسب للمهمة:
    
    - **القوة الموجهة** (force, cose, fcose) — جيد لاكتشاف البنية الاستكشافية وعندما تريد التجميع الطبيعي.
    - **التسلسل الهرمي والتدفق** (breadthfirst, dagre) — أفضل لأشجار التبعيات، رسوم الاستدعاء، أو التدفقات السببية.
    - **الشبكة والدائرة** — تخطيطات سريعة وحتمية للوحات المعلومات والرسوم البيانية الصغيرة والتصدير.
    - **قائم على الزمن** (timeline, timeline-scatter, temporal-attraction) — استخدم عندما يكون الترتيب الزمني أو الحداثة هي القصة.
    - **المكاني/المطلق** (absolute, depth-aware) — استخدم للتخطيطات الشبيهة بالخريطة أو الرسم التخطيطي ذات الإحداثيات المعروفة.
    - **المجموعة/الشعاعي** (radial-recency) — استخدم عندما تريد التجميع حسب النوع أو حلقات الحداثة.
    
    ### خيارات التخطيط```javascript
    // js/layouts.js
    const layoutOptions = {
      'force': {
        name: 'force',
        animate: true,
        randomize: false,
        infinite: false
      },
      'grid': {
        name: 'grid',
        rows: undefined,
        cols: undefined
      }
      // ... more layouts
    }
    

    تخطيط الخط الزمني

    يضع تخطيط timeline المخصص العقد على طول محور زمني. يمكنك تخصيص الشريط المركزي عبر خيار barStyle:```javascript cy.layout({ name: 'timeline', barStyle: { color: '#3498db', // bar color height: 15, // bar height in pixels className: 'my-timeline-bar' // optional CSS class } }).run();

    root@kitploit:~
    عندما يتم توفير `className`، يتلقى شريط الجدول الزمني تلك الفئة وتتم إزالة تنسيق اللون والارتفاع الافتراضيين حتى تتمكن من استهدافه عبر CSS.
    
    ### تخطيط الأحدثية الشعاعي
    
    استخدم `radial-recency` لرسم أحدث العناصر الأقرب إلى المركز والأقدم على الحلقات الخارجية. يربط التخطيط الزاوية بسمة ثانوية (نوع/مجموعة/مجموعة) بحيث تبقى العقد ذات الصلة محاذاة حول الدائرة. يمكنك ضبط الحلقات ببعض الخيارات:```javascript
    cy.layout({
      name: 'radial-recency',
      ringThickness: 140, // radial spacing between time rings
      minSeparation: 80,  // minimum distance between neighbors along a ring
      angleJitter: 0.15,  // optional jitter (radians) to break perfect symmetry
      angleStrategy: 'grouped' // or 'alphabetical' for deterministic ordering
    }).run();
    

    شاهد graphs/radial_time_rings.qut للحصول على نموذج صغير يوضح نطاقات زمنية متحدة المركز مجمعة حسب بيانات تعريف المجموعة/النوع.

    Timeline Scatter Layout

    استخدم تخطيط timeline-scatter لربط الطوابع الزمنية مباشرة بالمواضع على المحور x مع توزيع العقد رأسيًا حسب التشابه أو الفئة أو المجتمع. يقبل مقاييس قابلة للضبط لكلا المحورين واهتزاز اختياري لتقليل التداخل:```javascript cy.layout({ name: 'timeline-scatter', xScale: 0.5, // pixels per millisecond (auto-calculated when omitted) yScale: 60, // spread for similarity/category lanes jitter: 4, // optional per-node jitter to minimise overlap barStyle: { // applied when timeline bars already exist color: '#222', height: 12, className: 'scatter-bar' } }).run();

    root@kitploit:~
    ### تخطيط الجذب الزمني
    
    العُقَد ذات درجات التشابه الرقمية (`similarity`، `similarityScore`، أو `similarity_score`) تتركز حول المتوسط، بينما التصنيفات القاطعة أو المجتمعية تُنشئ ممرات متساوية التباعد على طول المحور الصادي.```javascript
    cy.layout({
      name: 'temporal-attraction',
      timeMode: 'gaussian',          // or 'bucket'
      timeSigma: 60 * 60 * 1000,     // Gaussian falloff window (in ms)
      bucketSize: 24 * 60 * 60 * 1000, // bucket size when using bucket mode
      repulsionStrength: 12          // minimal node repulsion
    }).run();
    

    اختر Layout → Temporal Attraction - Time Weighted في واجهة المستخدم أو مرّر name: 'temporal-attraction' عبر تكوين التخطيط CLI/API لتفعيله.

    عمليات التكامل

    يمكن لـ Quantickle سحب البيانات من الأنظمة الخارجية أو المزامنة معها. تمر عمليات التكامل بشكل عام عبر الخادم لأنها تتطلب بيانات اعتماد أو قواعد وكيل أو استمرارية.

    • Neo4j — تخزين واستعلام لقطات الرسم البياني؛ انظر NEO4J_INTEGRATION_README.md.
    • SerpAPI — يُستخدم من قبل خط أنابيب RAG للبحث على الويب؛ انظر مفاتيح API.
    • VirusTotal — إثراء العقد بذكاء المجال/IP/الملف/URL ورسوم بيانية للعلاقات.
    • CIRCL-LU (MISP OSINT feed) — استيعاب أحداث MISP المنسقة من تغذية CIRCL-LU.
    • OPML RSS watcher — استيراد قوائم تغذية OPML وتحويل المقالات المطابقة إلى رسوم بيانية.

    سير العمل

    🧭 الخطوات الأولى في التطبيق

    • شغّل واجهة المستخدم في متصفحك على http://localhost:3000.
    • استخدم File → Set workspace لاختيار مكان وجود ملفات المشروع.
    • استورد مجموعات البيانات عبر File → Import Data، أو الصق البيانات من الحافظة، أو ببساطة ضع العقد يدويًا باستخدام قائمة السياق.
    • تنقل بين طرق عرض الرسم البياني وتعريفات الأنواع وجدول البيانات حسب الحاجة.
    • افتح محرر العقد عبر Tools → Node Editor للتحرير التفصيلي.
    • لتعيين القيم الافتراضية للرسم البياني، استخدم Tools → Graph Area Editor.

    للحصول على أدلة تشغيل مفصلة ولقطات شاشة، انظر دليل الاستخدام.

    التصدير والمشاركة

    • احفظ بصيغة .qut للحصول على لقطة مشروع كاملة الدقة (تخطيط، بيانات وصفية، حاويات).
    • صدّر بصيغة CSV للتوافق مع أدوات جداول البيانات أو خطوط أنابيب الرسم البياني.
    • صدّر بصيغ HTML الثابتة أو PNG أو PDF للحصول على مخرجات جاهزة للتقارير.

    التهيئة

    يتم تهيئة Quantickle من خلال الكائن العام window.QuantickleApp المُعرّف في js/main.js. يقوم التطبيق تلقائيًا باستدعاء window.QuantickleApp.init() عندما يكون DOM جاهزًا.

    التكوين

    إعدادات الأداء```javascript

    // js/config.js const config = { performance: { nodeLimit: 1000, // Max nodes to render at once batchSize: 100, // Nodes to add per batch webgl: true, // Enable WebGL rendering hideEdgesOnViewport: false // Hide edges while dragging } }

    root@kitploit:~
    <a id="api"></a>
    ## API
    
    ### HTTP API
    
    يقوم خادم Express (`server.js`) بتقديم الواجهة الأمامية الثابتة ويعرض عدة نقاط نهاية JSON تستخدمها واجهة المستخدم. جميع المسارات مسبوقة بـ `/api`:
    
    | الطريقة والمسار | الوصف |
    | --- | --- |
    | `GET /api/domain-files` | يسرد تعريفات نطاقات JSON الموجودة في `assets/domains/`. |
    | `GET /api/examples` | يعرض بيانات وصفية حول رسوم بيانية `.qut` نموذجية مرفقة. |
    | `GET /api/serpapi` | يقوم بوكالة طلبات بحث Google إلى SerpApi؛ يتطلب `SERPAPI_API_KEY` في سلسلة الاستعلام أو البيئة. |
    | `GET /api/openai/models` | يقوم بوكالة طلبات قائمة نماذج OpenAI إلى `api.openai.com`؛ يتطلب رأس `Authorization: Bearer ...`. |
    | `GET /api/proxy?url=…` | يمرر طلبات HTTP/HTTPS إلى مضيفين مسموح بهم مع رؤوس شبيهة بالمتصفح. |
    | `POST /api/neo4j/graph` | يحفظ رسماً بيانياً في Neo4j. يقبل جسم JSON المسطح لرسم Quantickle البياني الموضح أعلاه. |
    | `POST /api/neo4j/node-graphs` | يجد الرسوم البيانية المحفوظة التي تحتوي على عقد تطابق مصفوفة `labels` المقدمة. |
    | `GET /api/neo4j/graphs` | يسرد الرسوم البيانية المخزنة في Neo4j مع بيانات وصفية موجزة. |
    | `GET /api/neo4j/graph/:name` | يجلب رسمًا بيانيًا محفوظًا، مع إرجاع `metadata` و `nodes` و `edges`. |
    | `DELETE /api/neo4j/graph/:name` | يزيل رسمًا بيانيًا مخزنا من Neo4j. |
    
    تقبل جميع نقاط نهاية Neo4j بيانات الاعتماد عبر الرؤوس `X-Neo4j-Url` و `X-Neo4j-Username` و `X-Neo4j-Password` (أو المتغيرات البيئية `NEO4J_URL` و `NEO4J_USER` و `NEO4J_PASSWORD` على الخادم). عند توفيره، يتم حفظ كائن `metadata` إلى جانب الرسم البياني ويتم إضافة طابع زمني `savedAt` تلقائيًا.
    
    <a id="api-keys"></a>
    ### API Keys
    
    تتطلب بعض الميزات مفاتيح API. يتم تخزينها في التخزين المحلي للمتصفح عبر لوحة التكاملات.
    
    - **SerpAPI** — مطلوب لخط أنابيب RAG في البحث على الويب. أضف مفتاحك في حوار التكاملات وسيتم استخدامه من قبل خط أنابيب RAG من جانب العميل.
    - **VirusTotal** — يُستخدم لإثراء عقد النطاق/IP/الملف/URL وسحب الرسوم البيانية للعلاقات.
    - **CIRCL-LU** — بيانات اعتماد مصادقة اختيارية إذا كان خلاصة MISP الخاصة بك تتطلبها.
    
    للاستخدام عبر سطر الأوامر، يمكنك بدلاً من ذلك تعيين `SERPAPI_API_KEY` في البيئة.
    
    <a id="backend-proxy"></a>
    ### Backend Proxy
    
    يعرض الخادم وكيلاً يتجاوز CORS يقوم بتمرير طلبات HTTP(S) إلى المضيفين المدرجين في القائمة المسموح بها للوكيل. استخدم `/api/proxy` مع معلمة URL:```
    curl "http://localhost:3000/api/proxy?url=https%3A%2F%2Fopentip.kaspersky.com%2F"
    

    القائمة المسموح بها الأساسية موجودة في config/proxy-allowlist.json. يجب عليك توفير هذا الملف (أو تعيين متغير البيئة PROXY_ALLOWLIST المفصول بفواصل قبل بدء الخادم)؛ وإلا، سيسجل الوكيل خطأ تكوين قاتل ويرفض كل طلب برمز HTTP 403.

    المضيفات الخاصة بالتكامل (لمحولات التكامل الخلفية مثل OpenAI وVirusTotal) تخضع لـ config/integration-allowlist.json (أو INTEGRATION_ALLOWLIST). في وقت التشغيل، يتم دمج القائمتين المسموح بهما. يجب أن يسرد كل إدخال مضيفًا أو نمط حرف بدل يمكن للوكيل الوصول إليه. يتم دعم أحرف البدل باستخدام * في أي مكان في الإدخال، لذا *.example.com يسمح بأي نطاق فرعي من example.com، والقناع مثل news-* يتصرف كما هو متوقع. كما ترث النطاقات الفرعية إدخال النطاق الأصلي، لذا إضافة example.com يسمح تلقائيًا بـ www.example.com.

    ملف القائمة المسموح بها الأدنى يبدو كالتالي:```json { "allowlist": ["otx.alienvault.com", "feeds.example.org"] }

    root@kitploit:~
    إذا كنت تفضل متغيرات البيئة، قم بتعيين `PROXY_ALLOWLIST="otx.alienvault.com,feeds.example.org"` قبل تشغيل الخادم.
    
    عندما يقوم البروكسي بإعادة توجيه طلب، فإنه الآن يرسل مجموعة رؤوس تشبه المتصفح (بما في ذلك قيم `User-Agent` و `Accept` و `Accept-Language` و `Sec-Fetch-*` الخاصة بمتصفح Chrome الحديثة) بحيث تستجيب المواقع التي تحجب المحتوى خلف مرشحات مكافحة البوت بنفس الطريقة التي تستجيب بها لتحميل صفحة عادي. يمكن تجاوز أي من هذه الرؤوس عن طريق توفير تجاوزات `x-proxy-<header>` من طلب العميل عند الحاجة.
    
    <a id="storage"></a>
    ## التخزين
    
    يحتفظ Quantickle بحالة الرسم البياني في المتصفح أثناء العمل، ثم يحفظها عند التصدير أو المزامنة.
    
    - **تخزين المتصفح** — يتم تخزين الإعدادات ومفاتيح API محليًا في المتصفح.
    - **ملفات المشروع (`.qut`)** — تُحفظ في مجلد مساحة العمل الخاصة بك للحصول على لقطات كاملة الدقة للرسم البياني. انظر [GRAPH_FILE_MANAGEMENT_README.md](https://github.com/rsac-labs/quantickle/blob/HEAD/GRAPH_FILE_MANAGEMENT_README.md) لمزيد من المعلومات حول قواعد مساحة العمل ودورة حياة الملفات.
    - **Neo4j** — استمرارية اختيارية على جانب الخادم للتعاون والبحث، مهيأة عبر تكامل Neo4j.
    
    <a id="project-structure"></a>
    ## هيكل المشروع```
    quantickle/
    ├── assets/                               # Static assets
    │   ├── backgrounds/                      # Background graphics
    │   ├── icons/                            # Mostly empty now; icons are colocated with node types
    │   ├── domains/                          # Node type definitions
    │   ├── help/                             # Help pages
    │   ├── examples/                         # Example graphs
    │   └── css/                              # Stylesheets referenced by index.html
    ├── config/                               # Proxy allowlist
    ├── data_retrieval/                       # SerpAPI/web search helpers used by the RAG pipeline
    ├── graphs/                               # Workspace folder for bundled and test .qut graphs
    ├── js/                                   # Front-end source modules
    │   ├── main.js                           # Application bootstrap
    │   ├── ai-input-manager.js               # Currently unused
    │   ├── api.js                            # HTTP client for server endpoints
    │   ├── graph.js                          # Graph rendering and management
    │   ├── graph-manager.js                  # High-level graph state orchestration
    │   ├── graph-reference-resolver.js       # Normalization of graph references
    │   ├── layouts.js                        # Layout registration and options
    │   ├── 3d-globe-layout.js                # 3D Layout
    │   ├── absolute-layout.js                # Absolute coordinate layout
    │   ├── custom-layouts.js                 # Other custom layouts
    │   ├── aggressive-performance-fix.js     # Aggressive Performance Fix for Large Graph Panning 
    │   ├── non-invasive-performance-fix.js   # Non-Invasive Performance Fix for Large Graphs
    │   ├── lod-system.js                     # Level of Detail (LOD) System
    │   ├── auto-refresh.js                   # Auto-refresh functionality when new data arrives
    │   ├── config.js                         # Default settings
    │   ├── domain-loader.js                  # Loading and managing domain-specific node type configurations
    │   ├── edge-editor.js                    # Editing edge styles
    │   ├── extensions.js                     # Loading and registration of Cytoscape extensions 
    │   ├── integrations.js                   # Configuration and connection to external services
    │   ├── rag-pipeline.js                   # Handles AI-assisted data ingestion
    │   ├── secure-storage.js                 # Encrypts sensitive values in sessionStorage
    │   ├── source-editor.js                  # Editor for the JSON graph source
    │   ├── tables.js                         # Data table updates, filtering, and display
    │   ├── ui.js                             # User interface interactions and notifications
    │   ├── validation.js                     # Validation of all data inputs
    │   ├── workspace-manager.js              # Workspace file functionality
    │   ├── utils.js                          # Shared browser utilities
    │   ├── integrations/                     # Integration-specific helpers (MISP/CIRCL-LU, etc.)
    │   └── features/                         # Feature modules (node editor, callouts, timeline, ...)
    ├── tests/                                # Automated regression tests covering UI flows, imports, and APIs
    ├── utils/                                # Node helpers (Neo4j client, readability shim, CLI scripts)
    ├── public/                   
    │   ├── index.html                        # Static front-end
    │   └── favicon.ico                       # Main app icon
    ├── package.json                          # Node dependencies and scripts
    └── server.js                             # Express server exposing the HTTP API
    

    🐛 استكشاف الأخطاء وإصلاحها

    المشكلات الشائعة

    1. عدم عرض الرسم البياني

      • تحقق من وحدة تحكم المتصفح بحثًا عن الأخطاء
      • تحقق من تنسيق البيانات
      • تحقق من دعم WebGL
    2. ضعف الأداء

      • قلل حد العقد في الإعدادات
      • فعّل عرض WebGL
      • استخدم تخطيطات أبسط للرسوم البيانية الكبيرة
    3. مشكلات التخطيط

      • جرب خوارزميات تخطيط مختلفة
      • اضبط معلمات التخطيط
      • تحقق من وجود عقد غير متصلة

    🤝 المساهمة

    هذا المشروع لا تتم صيانته بنشاط كمستودع رسمي. من المحتمل تجاهل طلبات السحب. ومع ذلك، نرحب بالملاحظات وتقارير الأخطاء والتعليقات.

    📄 الترخيص

    هذا المشروع مرخص بموجب رخصة Apache 2.0 - راجع ملف LICENSE للحصول على التفاصيل.

    🙏 الشكر والتقدير

    • مُبني باستخدام Cytoscape.js
    • خوارزميات التخطيط من مساهمين مختلفين في Cytoscape
    • تحسينات الأداء مستوحاة من أبحاث تصور الرسوم البيانية واسعة النطاق

    📚 وثائق إضافية

    • دليل الاستخدام
    • إدارة ملفات الرسم البياني
    • التكامل مع Neo4j
    • نظام الإحداثيات
    • دليل الأداء