بوت Discord لأخبار الهاكر
خلال الجامعة، وحتى الآن، أنا ومعظم أصدقائي نستخدم Discord كواحدة من منصات المراسلة الاجتماعية الرئيسية لدينا. في ذلك الوقت، وحتى الآن، أرغب في البقاء على اطلاع بأخبار الأمن السيبراني. لذا فكرت، كمشروع ممتع، أنني وصديقي سنصنع بوت Discord يعيد نشر أخبار الأمن السيبراني من The Hacker News إلى خادم Discord. قدمت الفكرة لصديقي وأحبها، فبدأنا في تطويرها.
The Hacker News (THN) هو موقع أخبار أمن سيبراني. الآن، THN ليس Hacker News. كان هناك بعض الجدل حول تشابه اسم “The Hacker News” مع “Hacker News” الذي يُعد موقع أخبار اجتماعي مشهور وأساطيري يركز على ريادة الأعمال التقنية. لكن، كشخص يستخدم The Hacker News طوال الوقت، أعتقد أن The Hacker News مصدر جيد للحصول على أخبار الأمن السيبراني.
أثناء العمل على هذا المشروع، واجهت تحديًا وهو العثور على طريقة لاستخراج الأخبار من THN. الخيارات المتاحة كانت إما استخدام واجهة برمجة تطبيقات Twitter أو استخراج البيانات من الويب (web scrape) لـ THN. قضيت بعض الوقت أحاول تشغيل واجهة برمجة تطبيقات Twitter لكنني توقفت لأن Twitter جعلتها صعبة جدًا في الإعداد والاستخدام. لذا لجأت إلى استخراج البيانات من الويب لـ THN بدلاً من ذلك. نظرًا لأن قاعدة الشيفرة ستُكتب بلغة Python، استخدمت مكتبة requests وbeautifulsoup4 للقيام بعملية استخراج الويب.
مع عمل أداة الاستخراج، كان التالي الذي تناولناه هو بوت Discord. إنشاء ونشر بوت Discord أمر بسيط جدًا. لذا تمكنا بسرعة من تشغيل البوت في أقل من يوم. كما قمنا بإعداد خادم Discord خلال تلك الفترة أيضًا.
أضفنا ميزة واحدة كميزة “فلاتر”. هذه الميزة كانت ترتب مقالات THN بحسب ما إذا كانت “apple-news”، “google-news”، “linux-news” و/أو “microsoft-news”. كانت ترتب تلك الأنواع من الأخبار في قنواتها الخاصة. كان لا يزال هناك قناة “all” تحتوي على جميع المقالات لكننا رأينا أن هذه الميزة مفيدة لأنها ترتب الأنواع إلى حد ما ولم تكن صعبة التنفيذ.
مع معرفة كل هذا، إليكم فكرة عامة عن كيفية عمل بوت Discord:
- كل ساعة واحدة، كان يقوم باستخراج بيانات THN واستخلاص المعلومات الأساسية عن المقال. شملت هذه المعلومات: العنوان، التفاصيل، التاريخ، ورابط المقال.
- ثم يتحقق البوت من سجل رسائله في الخادم لمعرفة أي المقالات التي تم استخراجها جديدة. هذا يضمن أن البوت لا يعيد نشر المقالات التي نشرها بالفعل.
- سيقوم بفلترة المقالات الجديدة بحسب مواضيع معينة، كما هو موضح أعلاه.
- بعد جمع جميع المقالات وتصفيةها، يقوم البوت بنشر رابط كل مقال في خادم Discord الخاص به وكذلك في القنوات المخصصة لكل نوع.
- بعد كل ذلك، ينتظر البوت ساعة أخرى لمتابعة نفس الخطوات مرة أخرى.
بشكل عام، تم كتابة بوت Discord بالكامل بلغة Python واستخدم الحزم الخارجية التالية: beautifulsoup4، requests، discord.py، وpython-dotenv. أيضًا، تم استضافة بوت Discord على جهاز Raspberry Pi 3 B+ الخاص بي الذي كان يعمل بنظام Raspberry Pi OS Lite 32 بت. كنا نشغل البوت هكذا:
# run the bot in the background
python3 bot.py &
بعد أن أعددنا البوت والخادم، شاركنا مشروعنا مع جميع أصدقائنا وزملائنا في الصف. خلال أسبوع حصلنا على حوالي 25 شخصًا انضموا إلى الخادم.
لكن بعد بضعة أشهر، لاحظنا أن الناس لم يستخدموا الخادم فعليًا ومعظمهم إما غادروا الخادم أو كتموا جميع القنوات فيه. السبب الرئيسي لذلك هو أن معظم المستخدمين أرادوا خيارات فلاتر شخصية ومخصصة أكثر، ومعظمهم لم يهتموا بالأمن السيبراني كثيرًا.
بسبب ذلك، قررنا إغلاق خادم Discord. استمر هذا المشروع من فبراير 2022 إلى مايو 2022، وتم إغلاقه رسميًا في 25 مايو 2022. في ذلك اليوم، أوقفنا البوت، حذفنا خادم Discord، حذفنا حساب بوت Discord الذي أنشأناه لهذا المشروع، وجعلنا الشيفرة مفتوحة المصدر بالكامل. يمكنك الاطلاع على الشيفرة هنا: https://github.com/MehmetMHY/thn-discord-bot
في النهاية، كان هذا مشروعًا ممتعًا وتعلمنا منه الكثير. أيضًا، في ذلك الوقت لم نكن نعلم ذلك، لكن هذا المشروع كان البداية/الإصدار الأول لأكبر مشروع لنا حتى الآن: Notify-Cyber.