
أداة بحثية وخادم MCP يفحص المخاوف الأمنية والخصوصية في روبوتات Discord التابعة لجهات خارجية عبر تحليل المراجعات على نطاق واسع، ووسم بواسطة LLM، وتصنيف من 31 موضوعًا.
الورقة البحثية: Kofi Ampomah و Tu Le. Measuring Users' Security and Privacy Concerns About Third-Party Community Bots on Discord. ندوة أمن الأنظمة الموزعة (NDSS) 2027. https://dx.doi.org/10.14722/ndss.2027.230535
مراجعو المخرجات: ابدأ بـ
ARTIFACT-EVALUATION.md. فهو يربط كل ادعاء في الورقة بالأمر الدقيق الذي يعيد إنتاجه، ويسرد المخرجات المتوقعة وأزمنة التشغيل، ويوضح أي المكونات خارج النطاق.
يحتوي هذا المستودع على الشيفرة المصدرية لخط معالجة BotLens، الذي يحلل مخاوف الأمان والخصوصية (S&P) في البوتات المجتمعية الخارجية على Discord من خلال تحليل المراجعات على نطاق واسع وتدقيق البيانات الوصفية. يعالج خط المعالجة 183,142 مراجعة مستخدم عبر 23,102 بوت تم جمعها من Top.gg، ويحدد 8,832 مراجعة ذات صلة بالأمان والخصوصية — بعائد ملحوظ لخط المعالجة بنسبة 4.82% — ويربطها بتصنيف الأمان والخصوصية المكوّن من 31 موضوعًا.
BotLens/
├── README.md # This file
├── ARTIFACT-EVALUATION.md # Claim → command → expected output
├── LICENSE # See License below
├── CITATION.cff # How to cite (also used by Zenodo)
├── botlens-ndss-data.zip # The data; unpack to data/ (see Data below)
├── requirements-lock.txt # Exact versions used for the paper
├── requirements.txt # Looser version bounds
│
├── config/ # Pipeline configuration
│ ├── __init__.py
│ ├── settings.py # Paths, model params, thresholds
│ └── taxonomy.py # 31-theme S&P taxonomy (single source of truth)
│
├── scrapers/ # Data collection scripts
│ ├── topgg_metadata_scraper.py # Bot metadata scraper (Top.gg pages)
│ ├── topgg_reviews_scraper.py # Bot review scraper (Top.gg reviews)
│ └── discord_server_scanner.py # Server bot scanner — OUT OF SCOPE, see below
│
├── scripts/ # Pipeline stages + analysis
│ ├── stage0_preprocess.py # Merge, clean, detect language, translate
│ ├── stage1_llm_labeling.py # Binary S&P classification via Ollama
│ ├── stage1b_active_learning.py # Active learning loop
│ ├── stage2_prepare_data.py # Train/val/test splits with balancing
│ ├── stage3_finetune_deberta.py # Fine-tune DeBERTa-v3-large classifier
│ ├── stage4_classify_all.py # Classify all 183K reviews
│ ├── stage5_theme_assignment.py # Assign 31-theme taxonomy themes
│ ├── stage6_emotion_classification.py # GoEmotions → Ekman-style groups
│ ├── stage7_analysis.py # Sec. IV-A: SPRR, TPR, per-tag/per-bot tables
│ ├── stage8_visualizations.py # Figs. 2–9
│ ├── rq3_permissions_metadata.py # RQ3 (Sec. IV-D): statistics + Figs. 10–14, 18
│ ├── language_affective_analysis.py # Appendix B: Fig. 17
│ ├── experiment_labeling_pct.py # Labeling-budget experiment (10–45%)
│ ├── create_irr_sheets.py # Inter-rater reliability labeling sheets
│ ├── compute_kappa.py # Cohen's kappa (Sec. III-C3)
│ ├── check_langs.py # Language distribution (Table IV; needs raw crawl)
│ └── prep_30pct_for_al.py # Prepare labels for active learning
│
├── tests/
│ └── test_smoke.py # Fast integrity checks, no data required
│
└── mcp_server/ # BotLens MCP server (Sec. V)
├── server.py # The six tools of Sec. V-B2 (+ internal helpers)
├── example_client.py # MCP SDK client reproducing Use Cases 1 and 2
└── benchmark_latency.py # Sec. V-D latency session
كل شكل تكتبه السكربتات يُسمّى تبعًا لرقم الشكل في الورقة
(figures/fig02_sprr_over_time.png هو الشكل 2، وهكذا). تُنتج السكربتات
بالضبط الأشكال الموجودة في الورقة: الأشكال 2–14 و17 و18. الشكل 1 هو المخطط
التخطيطي لخط المعالجة، والشكلان 15–16 هما لقطتا شاشة لواجهة تقرير BotLens.
يُصدر الـ artifact على https://github.com/ua-spectral/BotLens. كل إصدار على GitHub يُؤرشف بشكل دائم على Zenodo مع DOI؛ ويُذكر الـ DOI في ملحق الـ artifact الخاص بالورقة وعلى صفحة الإصدار في المستودع.
تُشحن البيانات في المستودع باسم botlens-ndss-data.zip (41 ميغابايت؛ ملف واحد
يُفكّ إلى 515 ميغابايت، وهو ما يتجاوز حد GitHub لكل ملف). فُكّ ضغطه مرة واحدة، في
جذر المستودع:
python -m zipfile -e botlens-ndss-data.zip .
هذا يُنشئ data/ بجانب config/؛ لا حاجة لتنزيل أي شيء آخر. التخطيط هو:
BotLens/
└── data/
├── processed/
│ ├── all_reviews_classified.csv # 183,142 rows — required by the MCP server
│ ├── privacy_reviews_full.csv # 8,832 S&P reviews w/ themes + affect
│ ├── bot_metadata_cleaned.csv # 23,102 bots (Table I, MCP fallback)
│ ├── train.csv / val.csv / test.csv
│ └── label_map.json
├── results/ # Tables behind the paper's numbers
├── reference_figures/ # Our output of every generated figure
└── irr/ # Annotator workbooks (Sec. III-C3)
تحقّق من السلامة باستخدام sha256sum -c SHA256SUMS.txt من داخل data/.
يصف data/README.md كل ملف.
| المرحلة | السكربت | الوصف | المخرجات الرئيسية |
|---|---|---|---|
| 0 | stage0_preprocess.py | دمج المراجعات + البيانات الوصفية، كشف اللغة، Argos Translate | data/raw/reviews.csv |
| 1 | stage1_llm_labeling.py | تصنيف ثنائي للأمن والخصوصية (S&P) عبر Ollama/Llama 3 8B | phase1_binary_labels.csv |
| 1b | stage1b_active_learning.py | أخذ عينات عدم اليقين + تسميات التصويت بالأغلبية | مجموعة تدريب محسّنة |
| 2 | stage2_prepare_data.py | تصفية حسب الثقة، خفض العينات بنسبة 5:1، تقسيمات طبقية | train/val/test.csv |
| 3 | stage3_finetune_deberta.py | الضبط الدقيق لـ DeBERTa-v3-large (F1 = 0.938 عند 30% من التسميات) | best_model/ |
| 4 | stage4_classify_all.py | استدلال دفعي على جميع المراجعات البالغ عددها 183,142 | all_reviews_classified.csv |
| 5 | stage5_theme_assignment.py | يُسنِد Ollama موضوعات من تصنيف الـ 31 موضوعًا | privacy_reviews_themed.csv |
| 6 | stage6_emotion_classification.py | GoEmotions (RoBERTa) → 8 مجموعات تأثير | privacy_reviews_full.csv |
| 7 | stage7_analysis.py | SPRR، TPR، SPRR لكل وسم ولكل بوت، التأثير حسب الموضوع | data/results/analysis_summary.json |
| 8 | stage8_visualizations.py | الأشكال 2–9، بما في ذلك اتجاه OLS في الشكل 2 (R² = 0.35) | figures/fig02_* … fig09_* |
unassigned.يتألف تصنيف الأمن والخصوصية ذو الـ 31 موضوعًا (الجدول V في الورقة) من 20 موضوعًا موروثًا من
Akgul et al. (USENIX Security 2024) و11 موضوعًا طُوّرت استقرائيًا في هذه
الدراسة — موضوعان إضافيان للأمن والسلامة و9 موضوعات خاصة بـ Discord.
config/taxonomy.py هو المصدر الوحيد للحقيقة؛ ويستمد stage8_visualizations.py
تجميعاته منه.
مجموعة الموضوعات 1 — ممارسات البيانات (7، جميعها موروثة): جمع البيانات، مشاركة البيانات، حذف البيانات، إزالة المعلومات الشخصية القابلة للتعرّف، كشف البيانات، إخفاء البيانات، الموقع والتتبّع
مجموعة الموضوعات 2 — حقوق المستخدم وعناصر التحكم (7، جميعها موروثة): الموافقة، عناصر التحكم في الخصوصية، إخفاء الهوية / التعرّف، الإعلانات، سياسات الخصوصية والقوانين، انتهاك الخصوصية، الخصوصية الإيجابية