📌 项目地址megadose/holehe | ⭐ 12,306 颗星 | 🔧 Python | 📜 未标注

这个项目解决什么问题

做 OSINT 调查时,一个常见需求是:拿到一个邮箱地址,想知道它在哪些网站上注册过账号。传统做法是逐个网站尝试找回密码,但流程繁琐、容易被封 IP,还会给目标邮箱发送重置邮件,暴露调查行为。

holehe 用自动化方式解决了这个问题。它针对每个网站模拟”忘记密码”的查询流程,通过分析响应判断该邮箱是否在该站存在账号。整个过程不会向目标邮箱发送任何邮件,因此不会被目标察觉。

核心用法

安装有三种方式,按需选择:

# PyPI 安装
pip3 install holehe

# 从 GitHub 安装
git clone https://github.com/megadose/holehe.git
cd holehe/
python3 setup.py install

# Docker 方式
docker build . -t my-holehe-image
docker run my-holehe-image holehe test@gmail.com

CLI 直接运行:

holehe test@gmail.com

它不仅告诉你有无账号,还能返回部分脱敏的恢复邮箱、恢复手机号等信息。输出格式统一为 JSON 结构:

{
  "name": "example",
  "rateLimit": false,
  "exists": true,
  "emailrecovery": "ex****e@gmail.com",
  "phoneNumber": "0*******78",
  "others": null
}
  • rateLimit: 当前查询是否被目标站点限流
  • exists: 该邮箱在此服务上是否存在账号
  • emailrecovery: 恢复邮箱(部分脱敏)
  • phoneNumber: 恢复手机号(部分脱敏)
  • others: 其他额外信息

如果遇到限流,官方建议直接更换 IP。

嵌入到你自己的 Python 程序中

holehe 的每个模块都可以独立调用。README 里给出了一个只检测 Snapchat 的示例:

import trio
import httpx
from holehe.modules.social_media.snapchat import snapchat

async def main():
    email = "test@gmail.com"
    out = []
    client = httpx.AsyncClient()

    await snapchat(email, client, out)

    print(out)
    await client.aclose()

trio.run(main)

这意味着你可以只导入需要的模块,批量、异步地对接自己的调查框架,而不必每次走 CLI。

和同类工具的区别

常见的邮箱-账号检测工具如 socialscan、UhOh365 各有侧重。holehe 的特点是:

  • 利用密码找回接口,而不是注册接口,能拿到更多恢复信息(邮箱、手机号)
  • 不会触发邮件通知,这是官方在 issue 中明确验证过的行为(见 README 链接)
  • 支持超过 120 个平台,且模块化设计方便扩展

README 还提供了一个基于 Maltego 的可视化工具 holehe-maltego,适合把结果直接接入图表分析。

需要注意的事项

  • 许可证: GNU GPL v3.0,且官方声明”Built for educational purposes only”——只用于教育目的。请确保你的使用场景符合当地法律和平台条款。
  • 限流问题: 高频查询会被目标站点限流,这时 rateLimit 会变为 true,需要换 IP 或降低频率。
  • 结果并非绝对: 有些网站对不存在账号和存在账号的响应差异可能被伪装,个别模块可能需要维护。实际使用时应结合多方数据交叉验证。
  • 官方在线版: 如果不想本地装,项目提供了在线版本:osint.industries

谁能用上它

这个工具不是给普通用户”查自己邮箱”玩儿的。真正有价值的使用场景是:安全审计人员收到一封钓鱼邮件,想快速了解攻击者邮箱注册过哪些平台,从而关联其他身份信息;或者执法部门在授权调查中,用邮箱追踪嫌疑人可能使用的社交账号。如果你没有类似需求,只是好奇自己的邮箱注册过啥,也可以用,但别对这个结果抱有太高期望——它查不出淘宝和微信这类国内平台。

这篇文章对你有帮助吗?

发表回复