Social Analyzer 跨平台数据聚合:5分钟拼出完整用户画像
【免费下载链接】social-analyzerAPI, CLI, and Web App for analyzing and finding a person's profile in 1000 social media \ websites项目地址: https://gitcode.com/GitHub_Trending/so/social-analyzer
手头只有johndoe、john_doe、johndoe123这 3 个 ID 变体,要在半小时内确认它们是否属于同一人——这是 OSINT(开源情报)调查里最常见的卡点。Social Analyzer 是一款跨平台数据聚合的 OSINT 工具,输入用户名后对 1000+ 个站点模板批量发探测,返回带置信度评分(confidence score)的结构化结果和一张可交互的关系图谱。跑一条流水线,替代逐平台手工翻查,是它做用户画像构建时的基本盘。
💡 先看结论:4个理由让它值得装
- 探测规模:内置 1000+ 个网站模板,
--top 50一条命令就能只打流量前 50 的站点,覆盖主流社交平台。 - 置信度评分:每个命中站点给出 0-100 的分值,并自动切档,结果可以直接进报告。
- 关系图谱:public/graph.html 把分散在各平台的账号画成一张图,连线区分 3 类关联。
- 部署成本:Docker Compose 一键起,Selenium Grid 随栈自带,无需手工配浏览器驱动。
🔍 工作原理:三个环节串成一条数据流水线
整条链路是「输入用户名 → 批量探测 → 提取 → 评分 → 出图谱」。下面按环节拆。
探测
输入是用户名或 ID 变体。data/sites.json 存着每个站点的 URL 模板,系统把{username}占位符替换后生成待探测链接。快速模式直接发 HTTP 请求取回页面源码;深度模式把任务交给 Selenium Grid 里的 Firefox 渲染 JS 动态页面,并对每页截图存档,截图就是后续 OCR 的原料。modules/fast-scan.js 和 modules/slow-scan.js 分别实现两种策略。
提取
拿到 HTML 后,先用 Cheerio 加载文档,抽出<title>、正文纯文本和页面语言;再对<meta>标签逐个过正则过滤,把property、name、itemprop里与身份标识、内容特征有关的属性留下来,无关噪音直接丢弃。最后结果统一按 JSON 结构落盘,--output json时可直接喂给下游脚本。modules/extraction.js 承载这套提取规则。
评分
引擎对每个站点逐条跑配置好的检测项:normal 型拿 username 替换后在 HTML 源码里匹配;advanced 型在纯文本里匹配;ocr 型调 tesseract.js 把截图转成文字再比对。命中项数除以检测项总数得到百分比,再按 75/40 两条线切出「高置信 / 可能匹配 / 不匹配」三档,写进结果的状态字段。modules/engine.js 是这段逻辑的家。
🚀 5分钟上手:一条命令出结果
环境上需要 Node.js(要求 13 及以上,仓库实测可用 18)并装好依赖。只跑快速模式无需浏览器驱动,装完依赖直接执行:
# 快速模式:HTTP 状态码 + 页面元数据,约几分钟出结果 node app.js --username "johndoe" --mode fast --top 50 # 深度模式:浏览器渲染 + OCR,识别率更高,耗时约为快速的 3-5 倍 node app.js --username "johndoe" --mode slow --metadata常用参数说明:
| 参数 | 作用 | 建议值 |
|---|---|---|
--username | 要查的用户名,支持逗号分隔多账号 | 单个目标或 ID 变体列表 |
--mode | 选探测策略:fast 走 HTTP,slow 走浏览器渲染 + OCR | 先 fast 摸底,再 slow 复核 |
--top | 只查流量排名前 N 的站点 | 50(快速摸底)或100 |
--websites | 直接点名目标站点,如youtube tiktok | 已知重点平台时优先用 |
--metadata | 开启元数据提取(Open Graph 等标签) | 深度模式建议常开 |
--output | 输出格式:pretty人类可读,json供脚本集成 | 进报告流程用json |
更省事的路线是 Docker:
docker-compose up -d栈里除了主容器还拉起 Selenium Hub 与 Firefox 节点——深度模式就依赖这个 Grid。起完访问http://localhost:9005/app.html即可用 Web 界面建任务、看结果,不用盯终端。
📊 评分怎么读:75分与40分的判断动作
拿一个具体目标走一遍。假设查johndoe,结果里 8 个站点命中:reddit 92%、tumblr 76%、github 45%、其余 5 个都在 30% 以下。三档分数对应 3 个不同动作:
- ≥75 分(高置信):直接采信。把链接、标题、元数据写进档案,不再人工复核;这类平台就是你用户画像的骨架。
- 40-74 分(可能匹配):交叉验证,不下结论。拉
--metadata输出,比对 Open Graph 标签里的标题与描述是否指向同一身份;或走姓名语义分析,用 modules/name-analysis.js 配 data/names.json 里的姓名库推断目标的文化背景和可能别名。两条线都坐实后再采信。 - <40 分(不匹配):忽略,除非该站是案件的关键证据源,否则不浪费人工。
这套动作本质是社交账号关联分析里的「分层取证」:高分配给自动化,中分配给半自动,低分配给垃圾桶。
把结果丢进 public/graph.html,同一目标的多平台账号会连成一张图。
图中有 3 类连线,含义各不相同:
- 直接关联:账号间共享邮箱或手机号,是同一人的最强信号,优先展开。
- 间接关联:共享同一 IP 段或设备指纹,同一团伙或同一台机器操作的概率高。
- 行为关联:发布内容语义相似,通常是内容分发行为,证明力最弱,只作辅助。
调查顺序建议:直接关联节点最先点开,间接关联次之,行为关联最后扫一眼即可。
⚠️ 常见坑与二次开发入口
3 个高频问题的解法,各一句话:
- 探测超时:站点多时整体拖慢,换出口代理,或用
--top/--websites把范围从全量缩到重点站点,先把证据拿到手。 - 平台规则过期:项目启动时会提示检测规则更新频繁,拿一份最新的 data/sites.json 重跑,而不是改代码硬修。
- OCR 识别失败:验证码、复杂版式容易读错,退回 normal/advanced 纯文本检测,或直接人工打开深度模式存的截图核对。
二次开发入口(按「改哪个文件」定位,不需要动架构):
- 加新平台:编辑 data/sites.json,一条 URL 模板加若干检测项即可接入流水线。
- 调检测逻辑:改 modules/engine.js 里的检测分支。
- 改提取规则:改 modules/extraction.js 的元数据与模式匹配。
- 词表管理:停用词、词库统一放在 data/dict.json。
模块化设计的好处就是这些扩展点互不牵连,改完单跑一个目标站点就能验证效果。
Social Analyzer 把跨平台数据聚合、置信度评分和图谱关联收进一个 CLI + Web 应用,用户画像从散点变成可核实的证据链。欢迎提 Issue 反馈失效规则,或往站点规则库里贡献你维护的平台条目。
【免费下载链接】social-analyzerAPI, CLI, and Web App for analyzing and finding a person's profile in 1000 social media \ websites项目地址: https://gitcode.com/GitHub_Trending/so/social-analyzer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考