Cracka01/domain-monitor

GitHub: Cracka01/domain-monitor

自托管的 Web 域名监控工具,用于批量追踪疑似钓鱼域名并在其从不活跃转为上线时发出告警。

Stars: 0 | Forks: 0

# Domain 监控 一个用于监控列表中的相似/钓鱼域名,并在**非活跃**域名突然**上线**时获取通知的自托管 Web 工具。 专为蓝队、品牌保护和 CTI 工作流而构建,适用于上游检测器产生数千个候选域名,而您只有时间手动审查那些实际提供内容的域名的场景。 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Python](https://img.shields.io/badge/python-3.10%2B-blue) ## 功能 - **批量导入** — 导入包含数千个域名的 CSV/TXT 文件;解析器兼容 URLs、多列 CSV(`;`, `,`, `\t`)、表头、空格和重复项。 - **HTTP 探测** — 发送真实的 `GET` 请求(先 HTTPS 后 HTTP),跟随重定向,将每个域名分类为 `ACTIVE` / `PARKED` / `4XX` / `5XX` / `UNREACHABLE`。停放检测会检查 HTML 中典型的交易市场/出售关键字(`godaddy`, `sedo`, `for sale`, 默认 nginx 页面等)。 - **DNS 解析** — 存储每个域名解析后的 IPv4 地址。 - **VirusTotal 集成**(可选) — 为每个域名查询 VT v3 API,对判定结果进行分类并直接链接到 VT 报告。内置的速率限制器遵守免费版 4 次请求/分钟的配额;24 小时的缓存避免了在重复运行时消耗配额。 - **每 N 小时自动复查**(默认为 `4`) — 在后台线程中运行,无需 cron。即使浏览器关闭也能持续运行。 - **非活跃 → 活跃状态转换** — 当以前失效的域名重新上线时,会被标记为 `NEW`,置顶到表格中,并以高亮警报的形式显示。 - **可过滤/排序的表格**、**CSV 导出**、单行复查/删除、持久化的 SQLite 存储。 - **单条命令即可启动**,无需 Docker、Redis 或任何外部服务。 ## 快速开始 打开终端(`cmd`、PowerShell、bash 等)并运行: ``` git clone https://github.com/Cracka01/domain-monitor.git cd domain-monitor pip install -e . python -m domain_monitor ``` 这样就完成了。您的浏览器将会打开 。 下次您只需要运行最后一条命令: ``` python -m domain_monitor ``` ### 替代方案:免克隆安装 ``` pip install git+https://github.com/Cracka01/domain-monitor.git python -m domain_monitor ``` ## 用法 `python -m domain_monitor` 接受以下选项: ``` python -m domain_monitor # http://127.0.0.1:5000, opens browser python -m domain_monitor --port 8080 # custom port python -m domain_monitor --host 0.0.0.0 # expose on LAN (use with care) python -m domain_monitor --no-browser # headless mode python -m domain_monitor --data-dir ./data # store monitor.db in ./data python -m domain_monitor --version ``` 同时会安装一个 `domain-monitor` 控制台命令作为别名,因此 `domain-monitor --port 8080` 的作用完全相同。 Web UI 提供了所有功能:CSV 上传、手动检查、设置、CSV 导出。状态会持久化保存到数据目录(默认:`~/.domain-monitor/`)内的 `monitor.db` 中。 ### 启用 VirusTotal 1. 在 创建一个免费帐户。 2. 从您的个人资料页复制 API key。 3. 在 Web UI 中打开 **⚙️ Settings → VirusTotal**,粘贴该 key,勾选 *Enable* 然后点击 **Save VT**。 4. 开始一次检查。该 key 仅本地存储在 SQLite 数据库中,除了发送给 `virustotal.com` 本身之外,绝不会记录或发送到任何地方。 ## CSV 格式 只要每一行至少包含一个有效的域名,任何格式的内容都可以被接受。以下示例均可正常工作: ``` example.com phishing-site.org ``` ``` domain,first_seen,score example.com,2026-05-15,0.92 mi-bank-impersonation.net,2026-05-16,0.88 ``` ``` Dominio;Target example.com;myorg phishing-site.org;myorg ``` 协议类型(`http://`, `https://`)、路径、端口和首尾空格会被自动剥离。无效行和重复项将被静默跳过。 ## 架构 ``` ┌──────────────┐ uploads ┌────────────────┐ │ Browser (JS) │ ──────────▶ │ Flask routes │ │ (templates) │ ◀────────── │ /api/* │ └──────────────┘ JSON └───────┬────────┘ │ ┌──────▼─────────┐ │ Runner │ background threads │ ┌──────────┐ │ │ │ HTTP+DNS │ │ ThreadPoolExecutor │ │ Phase 1 │ │ (high concurrency) │ └──────────┘ │ │ ┌──────────┐ │ │ │ VT │ │ sequential │ │ Phase 2 │ │ + RateLimiter │ └──────────┘ │ └──────┬─────────┘ │ ┌──────▼─────────┐ │ SQLite (file) │ │ monitor.db │ └────────────────┘ ``` 单个 `domain-monitor` 进程即可运行所有内容:Flask 提供 UI 和 JSON API 服务,一个 `Runner` 管理工作线程,SQLite 负责持久化状态。 ## 配置参考 | 设置 | 默认值 | 描述 | | ---------------- | ------- | -------------------------------------------------------------- | | Concurrency | 20 | 阶段 1 中的并行 HTTP 工作线程数 | | Timeout | 10 s | 单次请求超时时间 | | Auto-recheck | 4 h | 两次完整后台扫描之间的间隔 | | VT enabled | off | 启用 VirusTotal 阶段 | | VT API key | — | 本地存储在 `settings` 表中;可通过 **Clear key** 移除 | | VT req/min | 4 | 速率限制上限(对于付费 VT 计划可提高) | | VT cache | 24 h | 如果一个域名在此时间窗口内被查询过,则跳过 VT 查询 | 环境变量: | 变量 | 用途 | | -------------------------- | -------------------------------------------------------------------- | | `DOMAIN_MONITOR_DATA_DIR` | 覆盖默认数据目录(`~/.domain-monitor`)。 | ## 安全说明 - 默认绑定到 `127.0.0.1`。*仅在*受信任的网络中,或在带有身份验证的反向代理后方,才使用 `--host 0.0.0.0`。 - VT API key 以明文形式存储在本地 SQLite 数据库中(该文件已被配置为 `.gitignore` 忽略)。请使用常规的文件系统权限保护数据目录。 - HTTP 探测器最多只读取每个响应的前 16 KiB 数据——它永远不会执行远程 JavaScript,也不是一个浏览器沙盒。 - 外发请求使用 `User-Agent: Mozilla/5.0 (compatible; DomainMonitor/0.1)`。如果需要标明来源,请在 `app.py` 中进行修改。 ## 开发 ``` git clone https://github.com/Cracka01/domain-monitor.git cd domain-monitor python -m venv .venv . .venv/Scripts/activate # on Windows; use "source .venv/bin/activate" elsewhere pip install -e ".[dev]" domain-monitor --debug ``` Linting: ``` ruff check src ``` 构建发布版本: ``` python -m build # wheels 和 sdist 出现在 dist/ 中 ``` ## 路线图 - 当出现 `NEW` 状态转换时,提供可选的桌面通知。 - 添加预 DNS 过滤器,无需消耗 HTTP/VT 调用即可丢弃 NXDOMAIN 域名。 - WHOIS / 证书透明度信息富化。 - 带有身份验证的多用户模式。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 VirusTotal 是 Google LLC 的商标;本项目**未**与 VirusTotal 建立关联,也**未**获得其认可。
标签:Python, 品牌保护, 域名监控, 多模态安全, 威胁情报, 开发者工具, 数据可视化, 无后门, 逆向工具, 钓鱼防护