Show HN: 一款 CLI 工具,可识别虚假 GitHub Star、高风险依赖和许可陷阱
该文章介绍了一款名为 StarGuard 的 CLI 工具,用于评估 GitHub 仓库的信任度。它能检测虚假 Star、依赖劫持、许可风险等问题,帮助 CTO、安全团队和投资者进行开源尽职调查。StarGuard 通过分析 Stars、Dependencies、Licences、Maintainers 和 Code Signals 等方面,生成信任评分,并提供 JSON、Markdown 等多种输出格式。该工具基于 Python,支持 GitHub API,并提供快速扫描和详细报告功能。
CLI 工具,用于检测虚假 Star 活动、依赖劫持、许可危险信号以及其他仓库风险迹象。受“450 万虚假 Star”研究的启发,StarGuard 帮助 CTO、安全团队和投资者执行快速、自动化的开源尽职调查。
License
Apache-2.0 license 40 stars 0 forks Branches Tags Activity Star Notifications
⭐ StarGuard: GitHub 仓库的信任评分
CLI tool 用于检测虚假 star 活动、依赖劫持、许可危险信号和其他开源风险信号。受 4.5 million fake stars study 的启发,StarGuard 帮助 CTO、安全团队和 VCs 在几秒钟内自动化开源尽职调查。
📌 为什么选择 StarGuard?
- 虚假 stars 泛滥。 研究表明,僵尸网络和付费活动人为地夸大仓库的受欢迎程度。
- 供应链攻击正在上升。 恶意软件包和许可陷阱很容易到达生产环境。
- 手动审查无法扩展。 StarGuard 将关键的公共信号提炼成信任评分 — 快速、可重复且可扩展。
🚀 功能
类别 | StarGuard 检查内容 ---|--- ⭐ Stars | 突发检测 (MAD + 启发式算法), 机器人相似性分析, Fake Star Index, 信任徽章生成. 📦 Dependencies | SBOM / manifest 解析,支持 npm, PyPI, Maven, Go, Ruby;标记未固定、影子或非注册依赖项. ⚖ Licences | 检测未知或高风险许可 (GPL/AGPL 标志),扫描仓库和直接依赖项. 🛠 Maintainers | 贡献者集中度、提交频率、非活动警告. 🧪 Code Signals | 模式扫描,查找混淆、远程执行、加密挖掘或数据泄露提示. 📤 Outputs | JSON, Markdown, 纯文本报告;PNG star 历史图;shields.io 徽章嵌入.
⚙️ 工作原理
- GitHub API/GraphQL – 收集 stars, forks, issues, 流量统计信息.
- BurstDetector – 滑动窗口 MAD 算法 + 规则,用于捕获非自然 star 峰值.
- User Profiler – 抽样 stargazers,检查帐户年龄、头像、关注者数量、仓库历史.
- Dependency & Licence Parsers – 使用 API 或基于文件的回退.
- Scoring Engine – 标准化组件,应用加权信任评分 + Fake-Star 惩罚.
flowchart TD
GH[GitHub API] --> Collectors
Collectors -->|Star, forks, issues| Analyzers
MF[Manifest files] --> Parser
Analyzers --> ScoreCombiner
Parser --> ScoreCombiner
ScoreCombiner -->|Report / Badge / API| Output
Loading
🧪 快速开始
Requirements
- Python ≥ 3.9
- GitHub Personal Access Token (用于更高的速率限制)
Run
export GITHUB_TOKEN=ghp_xxxxxxxxx
# Full scan with star plot
python starguard.py pytorch/pytorch --format markdown --plot stars.png
# Burst-only fast scan
python starguard.py https://github.com/vercel/next.js --burst-only
🖥 CLI 参考
python starguard.py OWNER/REPO [options]
Options:
-t, --token TEXT GitHub token (or set GITHUB_TOKEN env)
-f, --format [text|json|markdown] 输出格式 (默认: text)
-o, --output FILE 将报告写入文件
--plot FILE 保存 star 历史 PNG
--no-fake-stars 跳过 Fake-Star 分析
--burst-only 仅运行突发检测
-v, --verbose 启用调试日志
🔍 使用案例
- CTO – 在审查期间控制开源添加.
- 安全团队 – 安排扫描,与安全审查集成.
- VCs – 对 "10k stars" 开发者工具进行快速尽职调查.
- 开源维护者 – 显示 StarGuard 徽章以提高透明度.
🤝 贡献
- Fork 并创建分支
- 运行
make test
(TBA) - 提交包含小而集中的提交的 PR
- 遵循 Conventional Commits
- 在 Apache-2.0 许可下发布
🔒 安全 & 隐私
- 仅读取公共元数据 (除非提供 token)
- 不执行任何代码;仅进行静态分析
- 不存储任何个人数据或凭据