zer0spin/infosec-digest

GitHub: zer0spin/infosec-digest

一个安全优先的网络安全新闻和播客聚合器,采用 GitOps 静态架构自动聚合多源 RSS 内容。

Stars: 7 | Forks: 1

[![在线演示](https://img.shields.io/badge/Live_Demo-Online-brightgreen?style=for-the-badge&logo=vercel)](https://infosec-digest.vercel.app) ## [阅读 Português (pt-BR) 版本](README.pt-br.md) # InfoSec 摘要 **InfoSec Digest** 是一个现代化、安全且高性能的网络安全新闻和播客聚合器。该项目采用解耦的 GitOps 架构构建,以静态方式提供内容以实现最大的安全性和速度,并具有全自动更新功能。 ## ✨ 功能特性 - **集中化内容**:聚合来自最相关网络安全源的最新新闻和播客剧集。 - **简洁快速的界面**:使用 HTML、Vanilla JS 和 Pico.css 构建的静态前端,提供轻量级且响应迅速的用户体验。 - **自动更新**:GitHub Actions 工作流每小时获取新内容,确保网站始终保持最新状态。 - **弹性机制**:系统设计旨在容忍单个 RSS 源的故障,而不会中断整体运行。 - **安全至上**:“安全设计”架构,旨在最小化攻击面。 ## 🏛️ 架构 该项目采用 GitOps 方法,将数据收集过程与内容交付分离开来。 1. **数据收集 (GitHub Actions)**: - 计划工作流 (`fetch_news.yml`) 每小时运行一次。 - 该工作流执行 Python 脚本 (`app/fetcher.py`)。 - 该脚本从 `sources.json` 读取新闻源,从每个 RSS 源获取内容,使用 `keywords.json` 对其进行分类,并生成单个静态数据文件 (`public/data.json`)。 - 每个条目都会添加一个 `timestamp_added`,以跟踪其被添加到系统的时间。 2. **内容交付 (静态托管)**: - `public/` 目录包含一个静态网站 (HTML, CSS, JS)。 - 当 `data.json` 被工作流更新时,提交会触发部署到静态托管服务(如 GitHub Pages、Vercel、Netlify 等)。 - 客户端的 JavaScript (`public/js/main.js`) 获取 `data.json` 并动态渲染界面,通过将所有内容视为文本 (`.textContent`) 来防止 XSS 攻击。 ## 🛠️ 工程决策 这些是为了增强项目稳定性和性能而做出的审慎技术选择。 #### 为什么选择 Python 3.11 而不是 3.13? 在自动化工作流中选择 Python 3.11 是一个保守的工程决策,旨在为生产环境 (CI/CD) 实现最大的可靠性。 * **稳定性与成熟度**:3.11 版本久经考验,拥有成熟的库生态系统,并已在其上进行了广泛的验证。 * **生态系统兼容性**:它保证了我们的依赖项(如 `feedparser`)和执行环境 (GitHub Actions runners) 拥有稳定的长期支持。 * **风险与回报**:较新 Python 版本的性能优势对于此 I/O 密集型脚本来说可以忽略不计,因此我们优先考虑稍旧、广泛采用的版本的经过验证的稳定性。 #### 为什么 CSS 内嵌在 HTML 中? 将 CSS 放置在 HTML 的 `