didrod205/can-i-be-phished
GitHub: didrod205/can-i-be-phished
通过检查公开 DNS 中的 DMARC/SPF 记录来判断任意域名是否可被邮件伪造,并提供可信机构的防护状态排行榜。
Stars: 1 | Forks: 0
# 我会被钓鱼吗 🎣
**骗子能发出看起来像来自你的医院、学校或慈善机构的电子邮件吗?** 粘贴任何组织的域名并立即查明。它会检查该域名是否强制实施了 **DMARC** —— 这项设置可以阻止任何人伪造其地址 —— 并直截了当地告诉你它是否可以被伪造。无需 API key,在你的浏览器中运行,不会发送任何关于你的信息。
### 🌐 [**检查任何域名 + 可伪造的受信任机构名单 →**](https://didrod205.github.io/can-i-be-phished/)
```
npx can-i-be-phished stjude.org
npx can-i-be-phished list --list charity
```
```
wish.org · Make-A-Wish
Spoofable 🎣 (25/100)
• DMARC p=none — monitoring only; forged mail is still delivered to inboxes.
• SPF ends in ~all (softfail) — permissive on its own.
DMARC: v=DMARC1; p=none; rua=mailto:DMARCAlerts@wish.org; …
```
## 为什么
电子邮件默认极易被伪造 —— 唯一能阻止骗子在钓鱼邮件中写上 `From: your-children's-hospital.org` 的,是一条设置为 `p=reject` 且名为 **DMARC** 的 DNS 记录。大多数组织从未完成设置。结果是:一份关于受信任机构的快照发现,**48 家中有 27 家** —— 包括 **Make-A-Wish、Salvation Army、Doctors Without Borders(根本没有 DMARC)、MIT、Penn State 和一家儿童医院** —— 没有完全阻止他人冒充自己。该工具允许任何人检查他们信任的机构,并持续维护一份尚未解决此问题的机构名单。
## 工作原理
```
DNS-over-HTTPS (Cloudflare / Google, keyless, CORS) ─→ _dmarc. TXT → policy
─→ TXT → SPF
↓
p=reject → protected · p=none / missing → spoofable
```
- **随处运行** — DoH 是 CORS 开放的,且从不进行速率拦截,因此相同的检查可以在 CLI、CI 和**你的浏览器中实时**运行(无需后端,无需密钥)。
- **可辩护性** — 它报告的是域名的**已发布 DNS 策略**。“Spoofable”(可伪造)意味着伪造的 `From:` 邮件可以到达收件箱;这**并不**代表该组织被黑客攻击或其邮件今天正在被伪造。这是一个可修复的配置问题。
- **实时网站**是静态的:一个每日运行的 GitHub Action 会重新检查监控列表并提交一份新的排行榜。无需服务器。
## 安装与使用
```
npm i -g can-i-be-phished # then: can-i-be-phished stjude.org
# 或者使用 zero-install:
npx can-i-be-phished irs.gov
```
```
can-i-be-phished harvard.edu # check one domain
can-i-be-phished list # check the whole trusted-institution watchlist
can-i-be-phished list --list childrens-hospital # one category
can-i-be-phished stjude.org --json # machine-readable
```
`phishcheck` 是一个更简短的别名。类别:`childrens-hospital`、`charity`、`university`、`school-district`、`government`。
## 结论的含义
| 结论 | DMARC 策略 | 来自该域名的伪造邮件… |
| --- | --- | --- |
| **受保护** 🛡️ | `p=reject` | 在进入收件箱前被拒绝 |
| **部分受保护** ⚠️ | `p=quarantine`(或 `pct<100`) | 进入垃圾邮件,或者部分漏网 |
| **可伪造** 🎣 | `p=none` 或无 DMARC | 被投递到收件箱 |
## 库
```
import { analyzeDomain } from "can-i-be-phished";
const r = await analyzeDomain("salvationarmyusa.org");
r.verdict.band; // "spoofable"
r.dmarc.policy; // "none"
r.verdict.reasons; // plain-English why
```
## 诚实与责任
这里的所有信息都来自域名的**公开** DNS —— 也就是每个邮件服务器都会读取的相同记录。该工具报告的是一个**配置事实**(“该域名的 DMARC 策略为 `p=none`,因此伪造的 From 可以到达收件箱”),而不是指责某个组织已被攻破或此刻正被冒充。它有意**不**解释如何伪造任何人 —— 仅说明域名是否受保护,以及修复方法是发布 `p=reject`。它的目标是**组织**,而非个人。
## License
MIT © [didrod205](https://github.com/didrod205)
这是一条公开的 DNS 记录,只需一行代码即可修复。这仅仅是展示了谁还没落实它。请自行判断。
## 💖 赞助
觉得这个项目有用?[**在 GitHub 上赞助**](https://github.com/sponsors/didrod205) —— 这有助于这些项目的持续维护。
[](https://github.com/sponsors/didrod205)
标签:DMARC检查, MITM代理, SYN扫描, 前端工具, 域名解析, 数据可视化, 暗色界面, 电子邮件安全, 自动化攻击, 防钓鱼