使用 Github Actions 自动监控 Github 上的 CVE 信息
访问 cve-monitor 查看演示。
执行 python main.py
查看 run.yml 文件
pip install -r requirements.txt
Github API 每页限制返回 100 条记录
为了解决GitHub API的请求限制问题并提高安全性,本项目实现了新的数据获取和缓存机制。
我们引入了一个专门的工作流data_fetch.yml,该工作流:
- 每30分钟自动运行一次
- 优先使用
secrets.GH_TOKEN,其次使用GITHUB_TOKEN进行认证 - 获取统计数据和每日报告数据
- 将数据缓存为JSON文件存储在仓库中
- 移除前端token依赖:统计数据和每日报告页面现在直接从缓存的JSON文件读取数据,不再在前端代码中使用或暴露GitHub Token
- 降低API调用频率:通过缓存机制显著减少了API调用次数,避免触发速率限制
- 提高页面加载速度:从本地JSON文件读取数据比实时调用API更快
- 增强稳定性:即使GitHub API暂时不可用,页面仍能显示缓存的数据
数据存储在以下位置:
docs/data/cache/stats.json- 统计数据缓存docs/data/cache/reports.json- 每日报告数据缓存
要配置用于后端数据获取的GitHub Token:
-
GitHub Actions:
- 在GitHub仓库设置中添加名为
GH_TOKEN的Secret- 进入仓库 > Settings > Secrets and variables > Actions
- 点击"New repository secret"
- Name:
GH_TOKEN - Secret: 你的GitHub个人访问令牌
- 工作流程已配置为自动使用此令牌
- 在GitHub仓库设置中添加名为
-
本地运行(仅用于测试):
- 设置环境变量
GITHUB_TOKEN为你的令牌值
export GITHUB_TOKEN=your_token_here # Linux/Mac set GITHUB_TOKEN=your_token_here # Windows
- 设置环境变量
GitHub Token需要以下权限:
public_repo- 访问公共仓库信息repo(可选) - 如果需要访问私有仓库
| 状态 | 任务 | 版本 |
|---|---|---|
| 🛠 | 修复增长率显示baseline问题&本周热点CVE时间维度显示不正确(滞后性bug)&修正API错误: GitHub API 调用失败: 403以及敏感信息特殊过滤 | 3.0 |
| 🛠 | 修复每日 情报速递 报告的当日获取逻辑问题&以及原始条数&判断依据由created_at改为updated_at(有待商榷) | 3.0 |
| 🛠 | 解决UTCCN时区问题&导致出现 24 小时延迟的问题,即出现23日的 情报速递 报告 而不是 22 日的 情报速递 报告 | 3.0 |
| 🛠 | 添加钉钉、飞书推送当日 情报速递 报告 | 3.0 |
| 🛠 | 添加描述(译文)功能【暂定采用主翻译(有道)次翻译(Google Translate)】 | 3.0 |
| 🛠 | 添加统计功能 | 3.0 |
| ✅ | 2.0c | |
| ✅ | 2.0b | |
| ✅ | 2.0 | |
| ✅ | 2.0 | |
| ✅ | 绕过API限制 | 3.0 |
| 状态 | 描述 |
|---|---|
| ✅ | 已完成 |
| 🛠 | 进行中 |
| 🟢 | 待办 |
| 🟡 | 可能有一天会做 |
| 🔴 | 永不 |