GitHub Explorer

social-analyzer 深度分析报告

GitHub: https://github.com/qeeqbox/social-analyzer

一句话总结

一个”数据重、代码轻”的 OSINT 社交媒体用户名侦查工具——999 个网站的检测逻辑全部编码为 JSON 声明式配置,核心代码仅 3,663 行,22K stars 主要源于安全/OSINT 社区的收藏效应,但项目自 2022 年后几乎停止维护。

值得关注的理由

  1. 声明式检测引擎设计:将 999 个网站的用户名检测逻辑抽象为 JSON 配置(正向+反向检测组合),代码只是执行引擎——这种”数据即逻辑”的架构思路值得借鉴
  2. 多层扫描策略:Fast(HTTP) → Slow(Selenium+OCR) → Special(平台定制)的渐进式扫描是 OSINT 工具设计的经典模式
  3. 诚实警示:22K stars 与 129 次/月 npm 下载的巨大落差,是分析 GitHub star 虚热现象的典型案例

项目画像

维度数据
GitHubhttps://github.com/qeeqbox/social-analyzer
Star / Fork22,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/54/55/5999 个网站检测规则编码为 JSON,正向+反向检测组合
多层扫描策略3/54/54/5Fast → Slow → Special 渐进式从轻到重
置信度评分系统3/53/54/5命中率百分比替代二元判断,good/maybe/bad 三档
用户名情报分析2/53/53/5从用户名提取年龄、姓名来源、语言分布

可复用的模式与技巧

  1. 声明式检测引擎模式:将检测逻辑编码为 JSON 配置(url、detections 正向/反向匹配、type 分类),执行引擎统一解释。适用于任何需要大量规则匹配的系统。

  2. 渐进式扫描策略:Fast(HTTP 状态码检查) → Slow(Selenium 渲染+OCR 验证) → Special(平台 API 定制),按成本递增。适用于需要平衡速度和准确度的爬虫系统。

  3. 置信度评分替代二元判断:多个检测信号加权汇总为百分比置信度,避免了”存在/不存在”的假阳性问题。适用于任何多信号融合场景。

关键设计决策

  1. JSON 数据 vs 硬编码规则:将 22,760 行检测规则放在 sites.json 中。Trade-off:新增网站零代码修改,但 JSON 规则的正确性依赖人工维护,且无法表达复杂逻辑。

  2. Node.js + Python 双实现:同一功能用两种语言实现。Trade-off:覆盖了更多用户群(npm/pip),但造成了代码冗余和版本不一致(setup.py v0.45 vs package.json v2.0.32)。

  3. AGPLv3 许可证:限制了商业使用和 SaaS 部署。Trade-off:保护了开源贡献者权益,但也限制了生态扩展。

竞品格局与定位

竞品对比矩阵

维度social-analyzerSherlockMaigret
Stars22K74K19K
网站覆盖~999~400~3000
使用方式API + CLI + WebCLICLI
检测方式HTTP + Selenium + OCRHTTP 仅HTTP + 高级解析
评分系统有(置信度百分比)无无
许可证AGPLv3MITMIT
维护状态低维护(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 限制生态。不建议作为长期依赖

风险与不足

  1. 维护几乎停止:2022 年后月均 1.2 次提交,核心检测规则未更新,大量网站检测可能已失效。
  2. 代码质量问题严重:await forEach 反模式(异步不等待完成)、Node.js/Python 版本号不一致、拼写错误散布(pendding、resutls、tecert)、countries_json_path 指向错误文件。
  3. 测试覆盖为零:仅有 5 行 shell 脚本作为”测试”,核心检测逻辑无任何测试。
  4. Star 虚热:22K stars vs 129 npm/月下载,收藏量与实际使用量严重不匹配。安全/OSINT 工具天然吸引收藏但不代表实际使用。
  5. AGPLv3 限制:商业使用和 SaaS 部署受限,不如 Sherlock/Maigret 的 MIT 许可友好。
  6. 双语言冗余: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 许可以扩大生态。

知识入口

资源链接
DeepWikideepwiki.com/qeeqbox/social-analyzer
Zread.ai未收录
关联论文无
在线 Demo无

相关报告