social-analyzer 深度分析报告
一句话总结
一个”数据重、代码轻”的 OSINT 社交媒体用户名侦查工具——999 个网站的检测逻辑全部编码为 JSON 声明式配置,核心代码仅 3,663 行,22K stars 主要源于安全/OSINT 社区的收藏效应,但项目自 2022 年后几乎停止维护。
值得关注的理由
- 声明式检测引擎设计:将 999 个网站的用户名检测逻辑抽象为 JSON 配置(正向+反向检测组合),代码只是执行引擎——这种”数据即逻辑”的架构思路值得借鉴
- 多层扫描策略:Fast(HTTP) → Slow(Selenium+OCR) → Special(平台定制)的渐进式扫描是 OSINT 工具设计的经典模式
- 诚实警示:22K stars 与 129 次/月 npm 下载的巨大落差,是分析 GitHub star 虚热现象的典型案例
项目画像
| 维度 | 数据 |
|---|---|
| GitHub | https://github.com/qeeqbox/social-analyzer |
| Star / Fork | 22,246 / 2,099 |
| 代码行数 | 3,663 行有效代码 + 139,741 行 JSON 数据(总 144,901 行) |
| 项目年龄 | 5.1 年(2020-11 创建) |
| 开发阶段 | 低维护/衰退期(2022 年后月均 1.2 次提交) |
| 贡献模式 | 独狼型(1 人贡献 97%+,Bus Factor = 1) |
| 热度定位 | 虚热型(22K stars vs 129 npm 下载/月,收藏远大于使用) |
| 质量评级 | 代码[C] 文档[B] 测试[F] |
作者视角:为什么存在这个项目
创始人/作者背景
QeeqBox 是位于华盛顿的安全工具开发者,93 个公开仓库中大部分是安全相关工具(honeypots、chameleon 等)。social-analyzer 是其最成功的项目,2020 年底创建时正值 OSINT 工具热潮。
问题判断
2020 年 Sherlock 已有 20K+ stars,但只支持用户名存在性检查。QeeqBox 看到了扩展空间:(1) 更多网站覆盖(1000+ vs 400+);(2) 多种使用方式(API/CLI/Web);(3) 置信度评分替代二元判断;(4) OCR 和 Selenium 处理反爬。
解法哲学
“数据驱动,代码极简”:将检测逻辑编码为 JSON 配置而非硬编码,新增网站只需添加 JSON 条目。同时提供 Node.js 和 Python 双实现(虽然造成了冗余)。
战略意图
个人安全工具作品集中的一员,无明显商业化意图。AGPLv3 许可证限制了商业使用可能性。
核心价值提炼
创新之处
| 创新点 | 新颖度 | 实用性 | 可迁移性 | 说明 |
|---|---|---|---|---|
| 声明式检测引擎 | 3/5 | 4/5 | 5/5 | 999 个网站检测规则编码为 JSON,正向+反向检测组合 |
| 多层扫描策略 | 3/5 | 4/5 | 4/5 | Fast → Slow → Special 渐进式从轻到重 |
| 置信度评分系统 | 3/5 | 3/5 | 4/5 | 命中率百分比替代二元判断,good/maybe/bad 三档 |
| 用户名情报分析 | 2/5 | 3/5 | 3/5 | 从用户名提取年龄、姓名来源、语言分布 |
可复用的模式与技巧
-
声明式检测引擎模式:将检测逻辑编码为 JSON 配置(
url、detections正向/反向匹配、type分类),执行引擎统一解释。适用于任何需要大量规则匹配的系统。 -
渐进式扫描策略:Fast(HTTP 状态码检查) → Slow(Selenium 渲染+OCR 验证) → Special(平台 API 定制),按成本递增。适用于需要平衡速度和准确度的爬虫系统。
-
置信度评分替代二元判断:多个检测信号加权汇总为百分比置信度,避免了”存在/不存在”的假阳性问题。适用于任何多信号融合场景。
关键设计决策
-
JSON 数据 vs 硬编码规则:将 22,760 行检测规则放在 sites.json 中。Trade-off:新增网站零代码修改,但 JSON 规则的正确性依赖人工维护,且无法表达复杂逻辑。
-
Node.js + Python 双实现:同一功能用两种语言实现。Trade-off:覆盖了更多用户群(npm/pip),但造成了代码冗余和版本不一致(setup.py v0.45 vs package.json v2.0.32)。
-
AGPLv3 许可证:限制了商业使用和 SaaS 部署。Trade-off:保护了开源贡献者权益,但也限制了生态扩展。
竞品格局与定位
竞品对比矩阵
| 维度 | social-analyzer | Sherlock | Maigret |
|---|---|---|---|
| Stars | 22K | 74K | 19K |
| 网站覆盖 | ~999 | ~400 | ~3000 |
| 使用方式 | API + CLI + Web | CLI | CLI |
| 检测方式 | HTTP + Selenium + OCR | HTTP 仅 | HTTP + 高级解析 |
| 评分系统 | 有(置信度百分比) | 无 | 无 |
| 许可证 | AGPLv3 | MIT | MIT |
| 维护状态 | 低维护(2022 后) | 活跃 | 活跃 |
| 实际使用量 | 低(129 npm/月) | 高 | 中 |
差异化护城河
social-analyzer 的差异化在于”API + Web UI + 评分系统”的组合,但这些功能优势正在被维护停滞所侵蚀——检测规则未更新意味着越来越多的网站检测会失效。
竞争风险
- Sherlock 的社区优势:74K stars + 活跃维护 + MIT 许可,在知名度和可靠性上远超 social-analyzer
- Maigret 的覆盖优势:3000+ 网站,是 social-analyzer 的 3 倍覆盖面
生态定位
在 OSINT 用户名检查工具赛道中,social-analyzer 曾是功能最全的方案(API/CLI/Web/评分/OCR),但维护停滞使其逐渐落后于活跃维护的 Sherlock 和 Maigret。
套利机会分析
- 信息差: 负向信息差——22K stars 远高于实际使用价值,不建议基于 star 数高估此项目
- 技术借鉴: (1) 声明式检测引擎的 JSON 配置模式值得学习;(2) 渐进式扫描策略(轻 → 重)是爬虫设计的通用范式;(3) 置信度评分替代二元判断的思路有迁移价值
- 生态位: 曾填补”功能全面的 OSINT 用户名工具”空白,但已被更活跃的竞品侵蚀
- 趋势判断: 衰退中。维护停滞、检测数据过时、AGPLv3 限制生态。不建议作为长期依赖
风险与不足
- 维护几乎停止:2022 年后月均 1.2 次提交,核心检测规则未更新,大量网站检测可能已失效。
- 代码质量问题严重:
await forEach反模式(异步不等待完成)、Node.js/Python 版本号不一致、拼写错误散布(pendding、resutls、tecert)、countries_json_path指向错误文件。 - 测试覆盖为零:仅有 5 行 shell 脚本作为”测试”,核心检测逻辑无任何测试。
- Star 虚热:22K stars vs 129 npm/月下载,收藏量与实际使用量严重不匹配。安全/OSINT 工具天然吸引收藏但不代表实际使用。
- AGPLv3 限制:商业使用和 SaaS 部署受限,不如 Sherlock/Maigret 的 MIT 许可友好。
- 双语言冗余:Node.js 和 Python 实现功能重叠但维护各自独立,版本不同步。
行动建议
- 如果你要用它: 不推荐作为生产工具使用——检测规则可能已过时,代码质量有问题。优先选择 Sherlock(活跃维护 + MIT)或 Maigret(最大覆盖面)。仅在需要 Web UI 或 API 模式时考虑 social-analyzer。
- 如果你要学它: 重点关注 (1)
data/sites.json— 声明式检测规则的 JSON 配置模式;(2)modules/helper.js— 多层扫描策略(fast/slow/special)的实现;(3)modules/profile.js— 用户名情报分析管线。忽略代码质量问题,关注架构思路。 - 如果你要 fork 它: (1) 更新 sites.json 检测规则(大量已过时);(2) 修复
await forEach反模式;(3) 删除 Node.js/Python 双实现中的一个,统一维护;(4) 添加测试覆盖;(5) 考虑改为 MIT 许可以扩大生态。
知识入口
| 资源 | 链接 |
|---|---|
| DeepWiki | deepwiki.com/qeeqbox/social-analyzer |
| Zread.ai | 未收录 |
| 关联论文 | 无 |
| 在线 Demo | 无 |