项目详情

Aliens_eye

ML 混合检测的 OSINT 用户名扫描器——罕见地把「我的模型不准」写在 README 里

GitHub 地址 MIT 3.9k Stars Python · PyPI: aliens-eye 840+ 平台 · MCP Server

更新于 2026-09-07

← 返回汇总
项目速览

一句话定位

一个用户名,扫遍 840 个平台

AI-OSINT 用户名扫描器:输入一个用户名,异步扫描 840+ 社交平台找出哪些平台注册了它。与 Sherlock/Maigret 等前辈的区别在检测引擎——30 维特征向量(HTTP 状态/DOM 结构/结构化数据/指纹)喂给「启发式加权 + ML 逻辑回归」双引擎投票,输出 Found/Maybe/Not Found 与置信度。罕见的工程诚实:README 自曝模型仅 368 样本训练、F1 只有 0.56,「Found 是线索不是结论」。附完整评测体系(selfcheck/corpus/ablation/外部基线对比)。适合 OSINT 调查、安全研究、个人足迹清理。

项目速览

核心数据

3.9k
Stars
840+
扫描平台
30
维检测特征
441
Forks
5 年
2021-09 至今
v2.3.0
当前版本(活跃)
0.56
模型 F1(自曝)
2026-09-06
最近提交(昨日)

数据来源:GitHub API,采集于 2026-09-07。MIT;PyPI 包 aliens-eye;1 open issue;6 个 optional extras(browser/train/correlate/pdf/tui/serve)。

为什么存在

用户名扫描器的老病:HTTP 200 ≠ 真账号

前代做法

Sherlock/Maigret 一代工具靠「状态码 200 = 账号存在」判定。现代网站动辄对任意用户名返回 200 + 通用「用户不存在」页面——误报满天飞。

每站手写规则

Maigret 靠逐站维护检测规则,840 个平台 = 840 份要养的解释文件,网站一改版就失效。

Aliens_eye 的答案

把「这页是不是真的这个人的主页」变成一个 ML 分类问题:30 维特征 + 双引擎投票,跨站通用,且模型可重训。


本质:把 OSINT 工具从「规则引擎」升级为「可学习的检测器」——且用一套可复现的评测体系证明自己(或打脸自己)。

核心机制

双引擎投票:启发式 × ML

HTTP 响应 状态码 · DOM · meta · 时序 重定向 · 站点指纹 (异步扫描 840+ 平台) 30 维特征向量 · HTTP 状态分桶 · 用户名位置 (path/title/meta/canonical) · 错误/资料关键词 · DOM 结构 (图片/表单/profile/error CSS) Judge ① 启发式引擎 对特征做加权评分——可解释、可调、永远可用 模型缺失/损坏时静默接管(回退权重 0.4 ML 变 0) 权重 0.4 Judge ② ML 模型 逻辑回归,纯 Python 推理(运行时无需 sklearn) 随包分发,可用 aliens_eye train 重训 权重 0.6 混合概率 = 0.6 × ML + 0.4 × 启发式 → >0.556 Found · 0.322-0.556 Maybe · <0.322 Not Found(阈值随模型加载)
输入与可解释引擎 学习引擎
稀有品质

把「我的模型不准」写在 README 里

  • 自曝全文:「Detection accuracy is preliminary. The shipped model was fit on 368 samples from 43 platforms (cv_f1 = 0.5622), with ground-truth accounts skewed toward high-profile users」——白纸黑字承认小样本、偏向大 V
  • 使用警告:「Treat Found/Maybe as leads to verify, not as findings」——把工具输出定位为线索生成器而非结论
  • 训练/评估隔离:ground truth 按站点不相交切分(30 站训练 / 13 站 holdout)——防数据泄漏的规范做法,README 甚至警告「测 train split 分数高是假象」
  • 外部基线对比:eval external 直接和 Sherlock / Maigret / WhatsMyName 的规则在同一份冻结响应上跑分
为什么这在 OSINT 工具里罕见

安全工具圈的常态是晒效果截图、不谈误报率。Aliens_eye 给出 precision/recall/F1/FPR per site、自助法置信区间、消融实验(ablation:不同检测器配置的得分对比)、frozen corpus 录制重放保证可复现——把 ML 评测纪律带进了脚本小子工具箱。

评测体系

四层评测:从自检到外部对垒

命令做什么意义
selfcheck对真实+伪造账号扫描,输出每站点 precision/recall/F1/FPR知道哪个站点准、哪个站点烂
corpus record / --corpus录制冻结响应语料,之后重放评测可复现:同样的响应永远得出同样的分数
eval ablate不同检测器配置在同一语料上对比,带 bootstrap 置信区间「ML 到底有没有用」用数据回答
eval external与 Sherlock/Maigret/WhatsMyName 规则同场竞技横向定位:比前代好多少,一目了然
train collect/fit + label采集数据 → 训练 → holdout 评分;交互式标注不确定样本(主动学习)模型可持续改进,且 holdout 永不参与训练

null result 也被保留(corpus v3 with attrition fixed — the null result survives 的 commit 信息)——连「失败样本不丢弃」这种评测洁癖都有。

功能全景

不止判定:一整套调查工作流

深挖

Profile 提取(显示名/简介/头像,OpenGraph/JSON-LD/CSS);跨站关联(--correlate:头像哈希+简介+共享链接聚类「疑似同一人」);递归扩展(简介里发现的用户名继续扫)。

监控与输出

Watch 模式(定时重扫 + webhook 告警);断点续扫(JSONL checkpoint);报告 JSON/CSV/HTML/MD/PDF/GEXF/Mermaid/Maltego——可直接导入 Gephi/Maltego 做图谱分析。

运行形态

rich 终端 UI + textual 交互浏览器(tui extra);MCP server(aliens_eye serve)——把扫描能力暴露给 LLM Agent;Tor/代理;Playwright 兜底 JS 重站点;域名注册检查。


aliens_eye username --correlate --domains --format pdf   # 关联聚类 + 域名 + 调查员 PDF
aliens_eye username --watch 6h --notify https://hooks.example/aliens # 监控告警
aliens_eye serve                                   # MCP:让 Claude 扫人?
风险与局限

双刃剑,刃口朝外也朝自己

潜力评估

打分

维度评分依据
技术创新
ML+启发式混合检测在 OSINT 用户名扫描品类里是明确的代际升级
评测纪律
corpus/ablation/外部基线/site-disjoint——学术级评测进了脚本工具
功能完成度
关联/递归/监控/断点/MCP/8 种输出格式,调查工作流闭环
准确率
自曝 F1 0.56,输出定位为线索——诚实但天花板可见
伦理风险
滥用面大,ToS 冲突固有;免责与警告做得足但挡不住滥用

综合 8/10。技术上是用户名扫描器的代际升级(ML 检测 + 评测纪律),伦理上是需要使用者自我约束的双刃剑。作为「如何给脚本工具加 ML 评测体系」的工程样本,价值甚至超过工具本身。

最终裁决

适合谁,不适合谁

用
  • OSINT 调查员/安全研究员:用户名足迹调查的标准起手工具
  • 个人隐私审计:查自己的用户名在哪些平台有残留
  • 研究 ML 检测管线如何做严肃评测(corpus/ablation 流程值得学)
  • 想给 Agent 接 OSINT 能力(MCP server 现成)
别用
  • 任何未经授权的人肉搜索/骚扰/人肉定位——法律与道德双重红线
  • 把 Found/Maybe 输出当最终结论(F1 0.56 的模型 + 平台 ToS 限制)
  • 商业化情报产品(许可 MIT 但伦理与 ToS 责任完全自担)

上一个
Marketing Skills
下一个
camofox-browser
在线体验

检测判定模拟器

亲手拨动 30 维特征里的关键项,看启发式评分与 ML 概率如何加权混合成 Found/Maybe/Not Found 判定,再拖动 ML 权重滑块感受「双引擎投票」的权衡——Aliens_eye 检测器的可玩版。

进入 Playground →
1 / 12