THN Discord Bot
Во время учебы в колледже, и даже сейчас, я и почти все мои друзья используем 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 API, либо веб-скрейпинг THN. Я потратил некоторое время, пытаясь заставить работать Twitter API, но сдался, потому что Twitter сделал его настройку и использование действительно сложными. Поэтому я решил использовать веб-скрейпинг THN. Поскольку кодовая база должна была быть написана на Python, я использовал библиотеки requests и beautifulsoup4 для веб-скрейпинга.
С работающим скрейпером, следующей задачей, которую мы решили, был Discord-бот. Создание и развертывание Discord-бота очень просто. Поэтому мы быстро заставили бота работать менее чем за день. Мы также настроили Discord-сервер в этот же временной промежуток.
Одной из функций, которую мы добавили, была функция “фильтры”. Эта функция сортировала статьи THN по тому, были ли они “apple-news”, “google-news”, “linux-news” и/или “microsoft-news”. Она сортировала эти типы новостей в их собственные каналы. Все еще существовал канал “все”, который содержал все статьи, но мы считали, что эта функция была хорошей, потому что она сортировала типы новостей и не была слишком сложной в реализации.
Зная все это, вот общее представление о том, как работал Discord-бот:
- Каждый час он сканировал THN и извлекал ключевую информацию о статье. Эта информация включала: заголовок, детали, дату и URL статьи.
- Затем бот проверял свою историю сообщений на сервере, чтобы увидеть, какие статьи он уже сканировал и являются новыми. Это гарантировало, что бот не будет перепостить статьи, которые он уже опубликовал.
- Он фильтровал новые статьи по определенным темам, как объяснялось выше.
- Собрав и отфильтровав все статьи, бот затем публиковал URL каждой статьи на своем Discord-сервере, а также в соответствующих каналах.
- После всего этого бот ждал еще час, чтобы продолжить те же шаги снова.
В целом, Discord-бот был полностью написан на Python и использовал следующие сторонние пакеты: beautifulsoup4, requests, discord.py и python-dotenv. Также Discord-бот был размещен на моем Raspberry Pi 3 B+, который работал на 32-битной версии Raspberry Pi OS Lite. Мы запускали бота так:
# запустить бота в фоновом режиме
python3 bot.py &
После того как мы настроили бота и сервер, мы поделились нашим проектом со всеми нашими друзьями и одноклассниками. За неделю к серверу присоединилось около 25 человек.
Но через несколько месяцев мы заметили, что люди не очень активно использовали сервер, и большинство из них либо покинули сервер, либо отключили все каналы на сервере. Главная причина, по которой они это сделали, заключалась в том, что большинству пользователей нужны были более персонализированные и настраиваемые параметры фильтрации, и большинству из них не было так важно следить за кибербезопасностью.
Из-за этого мы решили закрыть Discord-сервер. Этот проект работал с февраля 2022 года по май 2022 года, официально закрывшись 25 мая 2022 года. В этот день мы остановили бота, удалили Discord-сервер, удалили учетную запись Discord-бота, которую мы создали для этого проекта, и сделали код полностью открытым. Вы можете ознакомиться с кодом здесь: https://github.com/MehmetMHY/thn-discord-bot
В целом, это был интересный проект, и мы многому научились. Также, в то время мы этого не знали, но этот проект стал началом/версией нашего самого крупного проекта на данный момент: Notify-Cyber.