14 KiB
14 KiB
域名库系统设计方案
1. 项目结构设计
domainScanDemo/
├── app/ # 应用主目录
│ ├── __init__.py
│ ├── main.py # 主入口
│ ├── ui/ # 可视化界面
│ │ ├── __init__.py
│ │ ├── main_window.py # 主窗口
│ │ ├── domain_import.py # 域名导入界面
│ │ ├── domain_filter.py # 域名筛选界面
│ │ └── sensitive_words.py # 敏感词配置界面
│ ├── core/ # 核心功能
│ │ ├── __init__.py
│ │ ├── domain_collector.py # 域名收集器
│ │ ├── domain_processor.py # 域名处理器
│ │ ├── detect_engine.py # 检测引擎
│ │ ├── task_scheduler.py # 任务调度器
│ │ └── export_manager.py # 导出管理器
│ ├── detectors/ # 检测插件
│ │ ├── __init__.py
│ │ ├── base.py # 基础检测类
│ │ ├── rdap_detector.py # RDAP检测
│ │ ├── wayback_detector.py # 时光机检测
│ │ ├── baidu_detector.py # 百度检测
│ │ ├── qihu360_detector.py # 360检测
│ │ ├── google_detector.py # Google检测
│ │ ├── chinaz_detector.py # 站长之家检测
│ │ ├── aizhan_detector.py # 爱站网检测
│ │ ├── juziseo_detector.py # 桔子SEO检测
│ │ └── jucha_detector.py # 聚查检测
│ ├── utils/ # 工具类
│ │ ├── __init__.py
│ │ ├── domain_utils.py # 域名工具
│ │ ├── http_utils.py # HTTP工具
│ │ ├── database.py # 数据库操作
│ │ └── config.py # 配置管理
│ └── config/ # 配置文件
│ ├── __init__.py
│ ├── settings.py # 系统设置
│ └── sensitive_words.txt # 敏感词列表
├── scripts/ # 脚本工具
│ ├── __init__.py
│ ├── domain_import.py # 域名导入脚本
│ ├── detect_runner.py # 检测运行脚本
│ └── stats_report.py # 统计报告脚本
├── tests/ # 测试代码
│ ├── __init__.py
│ ├── test_domain_utils.py # 域名工具测试
│ ├── test_detectors.py # 检测器测试
│ └── test_database.py # 数据库测试
├── requirements.txt # 依赖包
├── README.md # 项目说明
└── .env # 环境变量
2. 核心功能模块设计
2.1 域名收集模块
功能:从多个来源收集域名数据
实现:
- 聚名网爬虫:抓取一口价和过期删除域名
- 搜索引擎采集:通过关键词搜索收集域名
- 企业目录抓取:从企业黄页等网站抓取域名
- Zone File 解析:解析域名区域文件
- TXT 导入:支持从文本文件导入域名
- 第三方 API:集成域名数据 API
技术要点:
- 使用
Scrapy框架进行网站爬取 - 支持代理池,避免 IP 被封禁
- 多线程并行采集,提高效率
- 域名标准化处理(小写、去空格、去协议、只留主域)
2.2 域名处理模块
功能:处理收集到的域名,进行标准化和去重
实现:
- 域名标准化:转换为小写,去除空格和协议
- 后缀过滤:只保留
.com和.net - 去重处理:使用布隆过滤器和数据库唯一索引
- 来源标记:记录域名来源和批次信息
- 任务创建:为新域名创建检测任务
技术要点:
- 使用 Redis 布隆过滤器快速去重
- 批量处理,减少数据库操作
- 事务处理,确保数据一致性
2.3 检测引擎模块
功能:执行域名检测任务,包括注册状态、风险评估等
实现:
-
基础检测:
- 注册状态检测(RDAP优先,其次WHOIS)
- 黑名单缓存检查
- 时光机快照年份采集
- 敏感词匹配(快照内容)
-
深度检测:
- 百度历史/Site
- 360 Site
- Google Site
- 站长之家/爱站
- 桔子SEO(历史记录)
- 聚查(WHOIS/备案/拦截)
- 桔子SEO(外链查询)
技术要点:
- 插件化设计,支持添加新的检测模块
- 优先级队列,按成本和重要性排序
- 失败重试机制,提高检测成功率
- 并发处理,提高检测速度
2.4 任务调度模块
功能:管理检测任务队列,分配任务到检测节点
实现:
- 任务队列管理:使用 RabbitMQ 存储任务
- 任务分配:根据节点负载分配任务
- 状态跟踪:实时监控任务执行状态
- 断点续跑:支持系统重启后继续执行任务
- 失败重试:自动重试失败的任务
技术要点:
- 使用 Celery 作为任务队列
- 分布式部署,支持多服务器
- 实时监控和告警
- 任务优先级管理
2.5 导出管理模块
功能:根据运营筛选条件导出域名
实现:
- 多条件组合筛选
- 预览功能
- TXT 导出
- 批量更新使用状态
- 批量更新人工审核状态
技术要点:
- 高效的数据库查询优化
- 支持大文件导出
- 导出进度实时显示
- 导出历史记录
2.6 可视化界面模块
功能:提供用户友好的操作界面
实现:
- 主窗口:系统概览和功能导航
- 域名导入:支持多种方式导入域名
- 域名筛选:多条件组合筛选
- 敏感词配置:管理敏感词列表
- 系统设置:配置系统参数
技术要点:
- 使用 PySide6 构建界面
- 响应式设计,支持不同屏幕尺寸
- 多线程处理,避免界面卡顿
- 实时数据更新
3. 数据库设计
数据库:PostgreSQL 15+
核心表结构:
| 表名 | 功能 | 关键字段 |
|---|---|---|
domains |
域名主表 | domain, tld, use_status, detect_status, register_status, source_type |
domain_detections |
检测结果 | domain_id, baidu_history, baidu_site, is_simplified, qihu360_site, google_site |
domain_sources |
来源信息 | domain_id, source_type, source_url, batch_id |
detect_tasks |
检测任务 | domain_id, task_type, status, priority, retry_count |
sensitive_words |
敏感词 | word, category, level |
domain_blacklist |
黑名单 | domain, reason, blacklist_time, source |
system_config |
系统配置 | config_key, config_value, description |
detect_nodes |
检测节点 | node_name, ip_address, status, last_heartbeat |
task_stats |
任务统计 | date, total_tasks, success_tasks, failed_tasks |
domain_stats |
域名统计 | date, total_domains, available_domains, registered_domains |
索引策略:
- 域名字段建立唯一索引
- 状态字段建立普通索引
- 时间字段建立 BRIN 索引
- 复合索引优化多条件查询
分区策略:
domains表按 TLD 分片domain_detections表按时间分区domain_sources表按时间分区detect_logs表按时间分区
4. 技术栈选择
| 分类 | 技术 | 版本 | 选型理由 |
|---|---|---|---|
| 编程语言 | Python | 3.10+ | 丰富的库支持,适合数据处理和爬虫开发 |
| Web 框架 | Scrapy | 2.10+ | 强大的爬虫框架,支持分布式爬取 |
| 数据库 | PostgreSQL | 15+ | 支持分区表、JSONB、布隆过滤器,适合亿级数据 |
| 缓存 | Redis | 7+ | 高性能缓存,支持布隆过滤器和消息队列 |
| 消息队列 | RabbitMQ | 3.10+ | 可靠的任务队列,支持优先级 |
| 任务调度 | Celery | 5+ | 分布式任务处理框架 |
| 界面库 | PySide6 | 6.5+ | 跨平台 GUI 框架,功能丰富 |
| HTTP 客户端 | Requests | 2.31+ | 简单易用的 HTTP 库 |
| 异步处理 | asyncio | 内置 | 高效的异步 I/O 处理 |
| 监控 | Prometheus + Grafana | 2.40+ | 强大的监控和可视化 |
5. 系统流程
5.1 域名入库流程
- 数据采集:从多个来源收集域名
- 标准化处理:转换为小写,去除空格和协议
- 后缀过滤:只保留
.com和.net - 去重处理:使用布隆过滤器和数据库唯一索引
- 来源标记:记录域名来源和批次信息
- 任务创建:为新域名创建检测任务
5.2 检测流程
-
基础检测:
- 注册状态检测(RDAP优先)
- 黑名单缓存检查
- 时光机快照年份采集
- 敏感词匹配(快照内容)
- 命中则直接拉黑并停止后续检测
-
深度检测:
- 百度历史/Site
- 360 Site
- Google Site
- 站长之家/爱站
- 桔子SEO(历史记录)
- 聚查(WHOIS/备案/拦截)
- 桔子SEO(外链查询)
5.3 运营筛选流程
- 多条件组合筛选:根据注册状态、使用状态、检测状态等条件
- 预览:查看筛选结果
- 导出:导出为 TXT 文件
- 批量更新:更新使用状态和人工审核状态
6. 关键技术挑战及解决方案
6.1 数据量挑战
挑战:亿级域名数据的存储和查询
解决方案:
- 使用 PostgreSQL 分区表
- 优化索引策略
- 数据分片存储
- 缓存热点数据
6.2 检测效率挑战
挑战:大量域名的检测任务处理
解决方案:
- 分布式检测架构
- 任务优先级队列
- 并发处理
- 失败重试机制
6.3 反爬机制挑战
挑战:网站反爬措施
解决方案:
- 使用代理池
- 请求头随机化
- 访问频率控制
- 模拟浏览器行为
6.4 数据一致性挑战
挑战:分布式环境下的数据一致性
解决方案:
- 事务处理
- 消息队列确保任务可靠传递
- 定期数据同步
- 冲突检测和解决
7. 部署方案
7.1 服务器配置
| 服务器类型 | 配置 | 用途 |
|---|---|---|
| 主服务器 | 16核32G,2TB SSD | 数据库、任务调度、Web 界面 |
| 检测节点 | 8核16G,500GB SSD | 执行检测任务 |
| 存储服务器 | 4核8G,4TB HDD | 数据备份、归档 |
7.2 部署步骤
-
环境搭建:
- 安装 PostgreSQL、Redis、RabbitMQ
- 配置 Python 环境
- 安装依赖包
-
数据库初始化:
- 执行 SQL 脚本创建表结构
- 配置分区和索引
- 导入初始数据
-
服务启动:
- 启动数据库服务
- 启动消息队列服务
- 启动任务调度服务
- 启动检测节点
-
系统配置:
- 配置敏感词列表
- 配置检测参数
- 配置监控告警
7.3 监控与维护
-
监控系统:
- 数据库性能监控
- 任务执行状态监控
- 系统负载监控
- 网络状态监控
-
维护计划:
- 每日:数据备份、任务统计
- 每周:索引重建、系统更新
- 每月:数据归档、性能优化
- 每季度:全量备份、系统评估
8. 预期性能指标
| 指标 | 预期值 |
|---|---|
| 数据导入速度 | > 100万条/分钟 |
| 域名去重速度 | > 1000万条/秒 |
| 检测任务处理 | > 10000个/分钟 |
| 单表查询响应 | < 1秒 |
| 系统可用性 | > 99.9% |
| 检测准确率 | > 99% |
9. 核心竞争力
- 全维度检测:覆盖注册状态、历史快照、平台风险等多维度
- 智能筛选:基于规则的自动化筛选,减少人工干预
- 增量建设:不追求一次性完成,通过持续积累构建完整数据库
- 插件化架构:检测模块可替换、可扩展
- 数据价值:为域名投资和企业品牌保护提供数据支持
- 高性能:分布式架构,支持亿级数据处理
- 可靠性:完善的错误处理和重试机制
- 用户友好:直观的可视化界面,操作简单
10. 项目实施计划
第一阶段:基础架构搭建(1个月)
- 数据库设计和搭建
- 核心模块框架搭建
- 数据采集模块实现
- 基础检测功能实现
第二阶段:功能完善(2个月)
- 深度检测功能实现
- 运营管理界面开发
- 任务调度系统实现
- 多服务器部署方案
第三阶段:优化与测试(1个月)
- 性能优化
- 稳定性测试
- 功能测试
- 部署上线
第四阶段:持续迭代
- 根据运营反馈优化系统
- 增加新的检测模块
- 扩展数据源
- 提升系统性能
11. 风险评估
| 风险 | 影响 | 应对措施 |
|---|---|---|
| 数据量过大 | 存储和查询性能下降 | 分区表、索引优化、数据分片 |
| API 限制 | 检测速度受限 | 多API源、请求频率控制、缓存 |
| 反爬机制 | 爬虫被封禁 | 代理池、请求头随机化、模拟浏览器 |
| 系统稳定性 | 服务中断 | 监控告警、自动恢复、冗余部署 |
| 成本控制 | 服务器和API成本高 | 优化检测流程、合理使用资源、预算规划 |
12. 结论
本设计方案基于需求文档,详细说明了系统的架构设计、功能模块和实施计划。系统采用模块化设计,支持增量建设和分布式部署,能够有效应对亿级数据量的挑战。通过多维度的检测和智能筛选,为用户提供高质量的域名资源。
该方案充分考虑了技术可行性和业务需求,为域名库系统的开发和部署提供了全面的指导。