dhruvgupta03-spec/threatwire
GitHub: dhruvgupta03-spec/threatwire
一个纯 Python 构建的主动式威胁情报新闻聚合器,自动从多家网络安全媒体抓取报道并按严重程度和时效性排名,生成循环更新的静态头版页面。
Stars: 0 | Forks: 0
# THREATWIRE
**一个主动式威胁情报新闻聚合器,以头版形式呈现。**
从多家网络安全新闻源抓取最新报道,按严重程度和时效性进行排名,
并生成一份《华尔街日报》(Wall Street Journal)风格的特刊,循环更新以保持内容最新。
使用纯 Python(无框架)构建 → 静态站点 → 在 GitHub Pages 上提供免费的公共托管,并支持绑定你自己的域名。
## 循环工程
ThreatWire 包含三个循环,遵循循环工程模型(目标 goal → 上下文 context → 执行 act →
验证 verify → 状态 state → 停止 stop):
| 循环 | 文件 | 职责 |
|------|------|------|
| **1 · Fetch** | `src/fetch.py` | 从每个数据源拉取最新条目并将其标准化 |
| **2 · Process** | `src/process.py` | 去重、标记主题、评估严重程度、按严重程度 + 时效性排名 |
| **3 · Render** | `src/render.py` | 构建华尔街日报(WSJ)风格的 `site/index.html` |
`src/build.py` 只运行**一**次迭代(fetch → process → render),并带有
**验证关卡**(如果 fetch 为空则构建失败,因此绝不会发布空白版本)和
**状态**管理(每个版本都会保存到 `data/latest.json`)。
**触发器**是外部的:本地使用 `src/loop.py`,在生产环境中则是 GitHub Actions
cron(`.github/workflows/build.yml`,每 15 分钟运行一次)。
## 在本地运行
```
python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
# 一次构建
./.venv/bin/python -m src.build
open site/index.html
# 或者运行 live dev loop(每 5 分钟重新构建一次)
./.venv/bin/python -m src.loop 5
```
## 配置数据源
编辑 `src/config.py` —— 在 `FEEDS` 中添加/移除订阅源,调整 `SEVERITY` / `TOPICS`
关键词,或者修改 `MAX_ITEMS` / `MAX_AGE_DAYS`。
## 部署(公共站点 + 自定义域名)
1. 将此仓库推送到 GitHub。
2. 进入仓库的 **Settings → Pages → Source: GitHub Actions**。
3. 工作流会在每次推送时以及每 15 分钟自动构建并部署。
4. 在 **Settings → Pages → Custom domain** 下添加你的域名,然后将
DNS 记录指向 GitHub Pages。在 `src/config.py` 中设置 `SITE["base_url"]` 使其与之匹配。
## 数据来源
新闻标题均链接至原始发布者;版权归各媒体所有。
目前包含的通讯社:Krebs on Security、BleepingComputer、The Hacker News、Dark Reading、
SANS ISC、CISA、The Record、Schneier on Security、Google Security、Microsoft Security。
标签:GitHub Actions, Python, 威胁情报, 开发者工具, 新闻聚合器, 无后门, 网络调试, 自动化, 自动笔记, 逆向工具, 静态站点