THN 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 API 或者对 THN 进行网页抓取。我花了一些时间尝试让 Twitter API 工作,但因为 Twitter 让设置和使用他们的 API 变得非常困难,我放弃了。因此,我转而对 THN 进行网页抓取。由于代码库将用 Python 编写,我使用了 requests 和 beautifulsoup4 来进行网页抓取。
在抓取器工作正常后,我们接下来的任务是 Discord 机器人。制作和部署一个 Discord 机器人非常简单。因此,我们在不到一天的时间里就让机器人工作起来了。在此期间,我们也设置了 Discord 服务器。
我们添加的一个功能是“过滤器”功能。这个功能会根据新闻是“apple-news”、“google-news”、“linux-news”和/或“microsoft-news”来对 THN 文章进行分类。它会将这些类型的新闻分类到各自的频道中。还有一个“所有”频道,包含所有文章,但我们认为这个功能很好,因为它在某种程度上对类型进行了分类,并且制作起来并不太具挑战性。
了解这一切后,以下是 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 年 2 月运行到 2022 年 5 月,正式于 2022 年 5 月 25 日关闭。在这一天,我们停止了机器人,删除了 Discord 服务器,删除了为该项目创建的 Discord 机器人账户,并将代码完全开源。您可以在这里查看代码:https://github.com/MehmetMHY/thn-discord-bot
总的来说,这是一个有趣的项目,我们学到了很多。此外,当时我们并不知道,但这个项目是我们迄今为止最大项目的初始开始/版本:Notify-Cyber。