
# AbuseBox
**用于 IP、域名和服务器的开源威胁监控工具包。**
检查黑名单、查询 AbuseIPDB、检查 DNS/SSL/DMARC 记录、扫描子网以及验证服务器正常运行时间 —— 尽在一个控制面板。
[](LICENSE)
[](https://github.com/bekkaze/abusebox/releases)
[](https://github.com/bekkaze/abusebox/stargazers)
## 截图
**主页** — 在首页即时进行黑名单检查

**控制台** — 带有统计数据和历史图表的监控摘要

**资产** — 以卡片形式查看所有受监控的主机名及检查徽章

**资产详情** — 为每个启用的检查提供标签页结果(黑名单、AbuseIPDB、DNS、SSL、WHOIS、DMARC、服务器状态)

## 为什么选择 AbuseBox?
大多数黑名单工具一次只能检查一项内容。AbuseBox 为您提供了一个**统一的视图**来:
- 几秒钟内扫描 **60+ DNSBL 提供商**
- 在黑名单结果旁获取 **AbuseIPDB 信誉分数**
- 对最多 20 个 IP/域名同时运行**批量检查**
- 扫描整个**子网 (CIDR /24)** 以查找被列入黑名单的 IP
- 一键拉取 **WHOIS**、**DNS 记录**和 **SSL 证书**详情
- 验证 **SPF / DKIM / DMARC** 邮件身份验证
- 通过 DNS、端口和 HTTP 检查来确认服务器是否**在线或宕机**
- **注册资产**,并通过可配置的开关运行所有检查
- **安排定期检查**,并通过电子邮件和 webhook 发送警报
- 将结果导出为 **CSV** 并使用**图表**跟踪历史记录
- 在**浅色和深色模式**之间切换
没有供应商锁定。没有付费层级。自行托管并掌控您的数据。
## 功能
| 功能 | 描述 | 需要身份验证 |
|---|---|---|
| **黑名单快速检查** | 针对 60+ DNSBL 提供商扫描主机名/IP | 否 |
| **批量检查** | 在单次请求中检查最多 20 个 IP/域名 | 否 |
| **子网 / CIDR 检查** | 针对主要 DNSBL 提供商扫描整个 IP 范围(最大 /24) | 否 |
| **AbuseIPDB** | IP 信誉分数、滥用报告、ISP 和地理位置 | 否 |
| **WHOIS 查询** | 域名注册商、日期、域名服务器、注册人信息 | 否 |
| **DNS 记录查看器** | A、AAAA、MX、TXT、CNAME、NS、SOA、PTR 记录 | 否 |
| **SSL 证书检查器** | 有效性、过期时间、颁发者、密码套件、SAN 列表 | 否 |
| **SPF / DKIM / DMARC** | 带有 A-F 评级的邮件身份验证验证 | 否 |
| **服务器是否在线?** | DNS 解析、端口扫描 (80/443)、HTTP 状态和响应时间 | 否 |
| **CSV 导出** | 将黑名单和子网结果下载为 CSV | 否 |
| **批量资产导入** | 在一个 API 请求中创建最多 50 个资产 | 是 |
| **CIDR 导入** | 从 UI 将 IP 范围(最大 /24)导入为受监控资产 | 是 |
| **资产** | 注册域名/IP 并通过每个资产的开关运行所有检查 | 是 |
| **资产详情视图** | 为每种检查类型提供带有摘要卡片的标签页结果 | 是 |
| **定时监控** | 自动定期重新检查,带有电子邮件/webhook 警报 | 是 |
| **历史图表** | 每个受监控资产的可视化黑名单历史记录 | 是 |
| **重新检查资产** | 一键对任何资产重新运行所有已启用的检查 | 是 |
| **移除名单工作流** | 向支持的提供商申请移除黑名单 | 是 |
| **搜索和过滤** | 按主机名/类型搜索资产,按正常/已列入黑名单状态过滤 | 是 |
| **自动刷新** | 在控制台和资产页面上可配置的自动刷新(30秒/1分钟/5分钟) | 是 |
| **复制到剪贴板** | 一键复制 IP、DNS 记录、WHOIS 数据、SSL 详情 | - |
| **相对时间戳** | 显示为“2 小时前”,悬停时显示完整日期时间提示 | - |
| **深色模式** | 在浅色和深色主题之间切换,并持久化保存到 localStorage | - |
| **响应式布局** | 可折叠的侧边栏,在移动端显示汉堡菜单 | - |
| **网站图标警报** | 当任何资产被列入黑名单时,网站图标上会显示红色徽章 | - |
| **API 文档** | 所有 endpoint 的 Swagger UI 和 ReDoc | 否 |
## 快速开始
### Docker(推荐)
```
git clone https://github.com/bekkaze/abusebox
cd abusebox
cp backend/.env.example .env # configure your settings
docker compose up --build
```
打开 `http://localhost:3000` 即可开始使用。
### 手动设置
点击展开
**前置条件:** Python 3.11+、Node.js 18+、Yarn
**后端:**
```
cd backend
cp .env.example .env
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8100 --reload
```
**前端**(新终端):
```
cd frontend
cp .env.example .env
yarn install
yarn dev
```
打开 `http://localhost:3000`。
## 配置
在项目根目录创建一个 `.env` 文件(Docker 会自动读取):
```
APP_SECRET_KEY=replace-this-secret
APP_DEBUG=true
APP_CORS_ALLOWED_ORIGINS=http://localhost:3000
DATABASE_URL=sqlite:///./app.db
# 默认管理员凭据
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=password123
DEFAULT_ADMIN_EMAIL=admin@abusebox.local
DEFAULT_ADMIN_PHONE=11111111
# 可选:AbuseIPDB(在 https://www.abuseipdb.com/account/api 获取免费密钥)
ABUSEIPDB_API_KEY=
# 定时监控
SCHEDULER_ENABLED=false
SCHEDULER_INTERVAL_MINUTES=360
# 邮件提醒(可选)
SMTP_HOST=
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_USE_TLS=true
# Webhook 提醒(可选)
WEBHOOK_URL=
```
| 变量 | 描述 | 是否必需 |
|---|---|---|
| `APP_SECRET_KEY` | JWT 签名密钥(在生产环境中请更改) | 是 |
| `APP_DEBUG` | 启用调试模式 | 否 |
| `DATABASE_URL` | 数据库连接字符串(默认为 SQLite) | 否 |
| `ABUSEIPDB_API_KEY` | 启用 AbuseIPDB 信誉检查 | 否 |
| `SCHEDULER_ENABLED` | 启用定期后台检查 | 否 |
| `SCHEDULER_INTERVAL_MINUTES` | 检查间隔(以分钟为单位,默认:360) | 否 |
| `SMTP_HOST` | 用于发送电子邮件警报的 SMTP 服务器 | 否 |
| `WEBHOOK_URL` | 用于发送黑名单警报 POST 请求的 Webhook URL | 否 |
前端配置 (`frontend/.env`):
| 变量 | 描述 |
|---|---|
| `VITE_BASE_URL` | 用于 Vite 代理的后端 URL(默认:`http://localhost:8100`) |
## API Endpoints
所有工具 endpoint 均为公开访问(无需身份验证):
```
GET /blacklist/quick-check/?hostname=example.com
GET /tools/abuseipdb/?hostname=8.8.8.8
GET /tools/whois/?hostname=example.com
GET /tools/dns/?hostname=example.com
GET /tools/ssl/?hostname=example.com
GET /tools/email-security/?hostname=example.com
GET /tools/server-status/?hostname=example.com
GET /tools/subnet/?cidr=192.168.1.0/24
GET /tools/bulk-check/?hostnames=example.com,8.8.8.8
GET /tools/export/blacklist/?hostname=example.com
GET /tools/export/subnet/?cidr=192.168.1.0/24
POST /hostname/bulk/ # (auth required)
POST /hostname/cidr-import/ # (auth required)
POST /hostname/{id}/recheck/ # (auth required)
```
启动后可查看完整的交互式文档:
- **Swagger UI:** `http://localhost:8100/swagger/`
- **ReDoc:** `http://localhost:8100/redoc/`
## 技术栈
| 层级 | 技术 |
|---|---|
| 后端 | FastAPI、SQLAlchemy、JWT (python-jose)、dnspython |
| 前端 | React 18、Vite 6、Tailwind CSS、Mantine、Recharts |
| 数据库 | SQLite(可通过 `DATABASE_URL` 替换) |
| 部署 | Docker + Docker Compose |
## 项目结构
```
abusebox/
├── backend/
│ └── app/
│ ├── api/routers/ # auth, blacklist, hostname, tools
│ ├── core/ # config, JWT security
│ ├── db/ # SQLAlchemy session, seed data
│ ├── models/ # ORM models
│ ├── schemas/ # Pydantic schemas
│ └── services/ # dnsbl, abuseipdb, whois, dns, ssl,
│ # email security, subnet, export,
│ # check runner, notifications, scheduler
├── frontend/
│ └── src/
│ ├── pages/ # Landing, Login, Assets, AssetDetail,
│ │ # Dashboard, Check & Lookup tools
│ ├── components/ # Reusable UI (shared: Skeleton, CopyButton,
│ │ # TimeAgo, AutoRefresh, ErrorBoundary)
│ ├── services/ # API client functions, auth, theme
│ └── routes/ # React Router config
├── docker-compose.yml
└── .env
```
## 版本发布
| 版本 | 日期 | 亮点 |
|---|---|---|
| **v1.1.2** | 2026年3月26日 | 批量资产导入、CIDR 导入、自动刷新身份验证、持久化数据库、DNSBL 误报修复、社区错误修复 |
| **v1.1.1** | 2026年3月25日 | UX 优化、响应式移动端布局、资产重新检查、代码分割、安全修复 |
| **v1.1.0** | 2026年3月23日 | 资产管理、DNS/SSL/DMARC 工具、批量及子网检查、定时监控、深色模式、60+ DNSBL 提供商 |
| **v1.0.1** | 2026年3月19日 | AbuseIPDB、WHOIS 查询、服务器状态检查器、安全强化 |
| **v1.0.0** | 2026年3月2日 | 首次发布 — DNSBL 监控、控制面板、移除名单工作流 |
有关完整详情,请参阅 [CHANGELOG.md](CHANGELOG.md)。
## 许可证
MIT — 详情请参阅 [LICENSE](LICENSE)。
**如果 AbuseBox 对您有帮助,请考虑给它点个 Star!**
[](https://github.com/bekkaze/abusebox/stargazers)