Social Analyzer:3 步跑通跨平台用户画像关联分析
【免费下载链接】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
手里只有一个用户名,想摸清这个人还占着哪些账号,手动上千家网站挨个搜基本不现实。Social Analyzer 是一款做跨平台用户画像关联分析的 OSINT 工具(OSINT 即开源情报,简单说就是从公开渠道挖信息):把用户名丢给它,它替你扫一遍常用社交平台,几分钟后吐出一份带置信度评分的账号清单,用户画像就有了底稿。这篇按"解决什么 → 内部怎么运转 → 三步跑通 → 怎么定制"的顺序讲,5 分钟能读完。
它到底在解决什么
同一个人往往同时占着几十个平台的账号,还喜欢复用同一个 ID;可每个平台的页面结构都不一样,也没有统一接口,人工逐个查效率约等于零。Social Analyzer 把 1000 多家网站的"账号 URL 长什么样、页面里有什么特征"整理成规则库(见 data/sites.json),再自动化地挨个探测,把散落在各平台的社交账号关联到一起。
它还有两件顺手的事。一是字符串分析:modules/string-analysis.js 会把 johndoe 自动扩展成 john_doe、john.doe、johndoe99 这类变体,一次查询覆盖更多组合,这也是跨平台账号探测里最容易漏的一环。二是名字语义分析:modules/name-analysis.js 配合 data/names.json 的姓名库,能推断名字的常见语言和文化背景,帮你补全用户画像里"人"的部分。作为 OSINT 开源工具,它的规则库、检测逻辑和提取模块全部开放,后面会讲怎么改。
内部怎么运转
想理解它,别按"采集、提取、分析"的流水线想,按两条探测路径加一个公共评分层看更清楚。
快路径:modules/fast-scan.js 直接用 HTTP 请求打各平台 URL,看状态码和返回的页面源码,默认 15 个并发、失败自动重试三轮。适合先筛一遍,扫 top 50 的平台通常几分钟内出结果。
深路径:modules/slow-scan.js 起一个无头浏览器(不开界面、后台静默跑的浏览器,基于 selenium + Firefox)把页面完整渲染出来再截图。JS 动态生成的页面快路径会漏,深路径能兜住,耗时大约是 fast 的 3-5 倍。
公共评分层:两条路径的原始结果都进 modules/engine.js。它对每个平台跑 normal(源码匹配)、advanced(正文匹配)、ocr(截图 OCR,即光学字符识别,从图片里认文字,用 tesseract.js)三类检测,把命中情况汇总成 0-100 的用户画像置信度评分 rate。
外围还有几个辅助模块:modules/extraction.js 用 cheerio 解析 HTML、抽出 Open Graph 等元数据;modules/visualize.js 把抽取结果喂给 public/graph.html,画成一张力导向关联图谱(节点按关联强度自动排布的关系图)。
评分流程简化成伪代码大概是:
// engine.js 的检测与评分(简化伪代码) for (const rule of site.detections) { // 遍历该平台的检测规则 if (rule.type === 'normal') hit = source.includes(rule.string) // 页面源码直接命中 else if (rule.type === 'advanced') hit = text_only.includes(rule.string) // 渲染后的正文命中 else if (rule.type === 'ocr') hit = ocr(screen_shot).includes(rule.string) // 截图 OCR 命中 } rate = hit_count / total_rules * 100 // 汇总成 0-100 置信度三步跑通一次完整查询 ⚡
第 1 步:装好依赖,发出第一次查询
git clone https://gitcode.com/GitHub_Trending/so/social-analyzer cd social-analyzer && npm install nodejs app.js --username "johndoe" --mode fast --top 50这条命令的意思是:拿 johndoe 去扫排名前 50 的网站,走 fast 模式。
第 2 步:fast 和 slow 模式怎么选
| 维度 | fast 模式 | slow 模式 |
|---|---|---|
| 原理 | HTTP 请求 + 状态码、页面源码 | 无头浏览器渲染 + 截图 + OCR |
| 耗时 | top 50 平台约 3 分钟 | 约为 fast 的 3-5 倍 |
| 精度 | 状态码误报偏多,靠 rate 过滤 | 实测识别准确率可到九成以上 |
| 适用 | 先筛一遍、批量用户名 | 关键平台确认、留截图存证 |
命令里把--mode fast换成--mode slow即可切换;要截图加--screenshots,要元数据加--metadata。
第 3 步:看懂输出里的置信度评分
每个找到的账号都带一个 rate:≥75 基本可以当确认,40-74 算可能,低于 40 直接当误报。加--output json能把结果落成 JSON,方便接进你自己的调查流程;--filter good则只显示高置信命中,省得翻长列表。
Web 界面里 fast 模式跑完的长这样:
命令行版本的输出过程(动图):
怎么把它适配到你的场景
仓库当前是只读的,动手前先 fork 一份到自己本地。三个最容易出效果的方向,建议按顺序试:
- 加新平台:编辑 data/sites.json,照现有条目补一条
{url: "https://xxx.com/{username}", detections: [...]},再用--websites xxx单独验证这条规则。 - 调检测规则:误报多的平台,多半是特征串太宽松。去 data/dict.json 和 modules/engine.js 里收紧匹配逻辑,必要时给该平台加更严格的检测串。
- 扩展元数据提取:modules/extraction.js 现有的 cheerio 解析只覆盖常见 meta 标签,你自己的调查维度可以在这里补规则,提取到的字段会跟着进关联图谱,用户画像构建也更完整。
如果你主要用 Python 环境,也可以直接pip3 install social-analyzer装包,CLI 参数和 Node 版基本一致。
最短上手路径
不想装 Node 环境,Docker 是最省事的:
git clone https://gitcode.com/GitHub_Trending/so/social-analyzer && cd social-analyzer docker-compose up -d起来后浏览器打开http://localhost:9005/app.html,输入用户名点 Analyze,不用碰命令行。
源码就在 modules/ 下,每个文件职责很清楚,翻一翻不难上手;用出什么问题提个 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),仅供参考