
अनुसंधान आर्टिफ़ैक्ट और MCP सर्वर जो बड़े पैमाने पर समीक्षा विश्लेषण, LLM लेबलिंग और 31-थीम वर्गीकरण के माध्यम से तृतीय-पक्ष Discord बॉट्स में सुरक्षा और गोपनीयता संबंधी चिंताओं का ऑडिट करता है।
पेपर: Kofi Ampomah और Tu Le. Measuring Users' Security and Privacy Concerns About Third-Party Community Bots on Discord. Network and Distributed System Security (NDSS) Symposium 2027. https://dx.doi.org/10.14722/ndss.2027.230535
आर्टिफ़ैक्ट समीक्षक:
ARTIFACT-EVALUATION.mdसे शुरू करें। यह पेपर के प्रत्येक दावे को उस सटीक कमांड से जोड़ता है जो उसे पुनरुत्पादित करता है, अपेक्षित आउटपुट और रनटाइम की सूची देता है, और बताता है कि कौन से घटक दायरे से बाहर हैं।
इस रिपॉज़िटरी में BotLens पाइपलाइन का स्रोत कोड है, जो बड़े पैमाने के समीक्षा विश्लेषण और मेटाडेटा ऑडिटिंग के माध्यम से Discord पर तृतीय-पक्ष समुदाय-आधारित बॉट्स में सुरक्षा और गोपनीयता (S&P) संबंधी चिंताओं का विश्लेषण करता है। पाइपलाइन Top.gg से स्क्रैप किए गए 23,102 बॉट्स की 183,142 उपयोगकर्ता समीक्षाओं को संसाधित करती है, 8,832 समीक्षाओं को S&P-प्रासंगिक के रूप में पहचानती है — जो 4.82% की प्रेक्षित पाइपलाइन उपज है — और उन्हें 31-थीम वाली S&P टैक्सोनॉमी पर मैप करती है।
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 Fig. 2 है, और इसी तरह आगे भी)। स्क्रिप्ट पेपर में
मौजूद आकृतियाँ ही उत्पन्न करती हैं: Figs. 2–14, 17 और 18। Fig. 1 पाइपलाइन
योजनाबद्ध आरेख है और Figs. 15–16 BotLens रिपोर्ट UI के स्क्रीनशॉट हैं।
आर्टिफैक्ट https://github.com/ua-spectral/BotLens पर जारी किया गया है। प्रत्येक GitHub रिलीज़ को Zenodo पर DOI के साथ स्थायी रूप से संग्रहीत किया जाता है; DOI पेपर के आर्टिफैक्ट परिशिष्ट और रिपॉज़िटरी के रिलीज़ पेज पर दिया गया है।
डेटा रिपॉज़िटरी में botlens-ndss-data.zip के रूप में शामिल है (41 MB; एक फ़ाइल
खुलने पर 515 MB हो जाती है, जो GitHub की प्रति-फ़ाइल सीमा से अधिक है)। इसे एक बार, रिपॉज़िटरी
रूट में अनपैक करें:
python -m zipfile -e botlens-ndss-data.zip .
यह config/ के बगल में data/ बनाता है; और कुछ भी डाउनलोड करने की आवश्यकता नहीं है। लेआउट इस प्रकार है:
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)
data/ के अंदर से sha256sum -c SHA256SUMS.txt के साथ अखंडता सत्यापित करें।
data/README.md प्रत्येक फ़ाइल का वर्णन करता है।
| चरण | स्क्रिप्ट | विवरण | मुख्य आउटपुट |
|---|---|---|---|
| 0 | stage0_preprocess.py | समीक्षाओं + मेटाडेटा का विलय, भाषा पहचान, Argos Translate | data/raw/reviews.csv |
| 1 | stage1_llm_labeling.py | Ollama/Llama 3 8B द्वारा बाइनरी S&P वर्गीकरण | 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 फ़ाइन-ट्यूनिंग (30% लेबलिंग पर F1 = 0.938) | 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, जिसमें चित्र 2 का OLS ट्रेंड (R² = 0.35) शामिल है | figures/fig02_* … fig09_* |
unassigned लेबल वाली समीक्षाओं को छोड़कर।31-थीम S&P टैक्सोनॉमी (पेपर तालिका V) में Akgul et al. (USENIX Security 2024) से
विरासत में मिली 20 थीम और इस अध्ययन में आगमनात्मक रूप से विकसित 11 थीम शामिल हैं
— 2 अतिरिक्त Security & Safety थीम और 9 Discord-विशिष्ट थीम।
config/taxonomy.py एकमात्र सत्य-स्रोत है; stage8_visualizations.py
इससे अपने समूहीकरण प्राप्त करता है।
थीम समूह 1 — डेटा प्रथाएँ (7, सभी विरासत में मिली): Data Collection, Data Sharing, Data Deletion, Remove Personally Identifiable Information, Data Exposure, Data Hiding, Location and Tracking