# 域名库系统设计方案 ## 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 域名入库流程 1. **数据采集**:从多个来源收集域名 2. **标准化处理**:转换为小写,去除空格和协议 3. **后缀过滤**:只保留 `.com` 和 `.net` 4. **去重处理**:使用布隆过滤器和数据库唯一索引 5. **来源标记**:记录域名来源和批次信息 6. **任务创建**:为新域名创建检测任务 ### 5.2 检测流程 1. **基础检测**: - 注册状态检测(RDAP优先) - 黑名单缓存检查 - 时光机快照年份采集 - 敏感词匹配(快照内容) - 命中则直接拉黑并停止后续检测 2. **深度检测**: - 百度历史/Site - 360 Site - Google Site - 站长之家/爱站 - 桔子SEO(历史记录) - 聚查(WHOIS/备案/拦截) - 桔子SEO(外链查询) ### 5.3 运营筛选流程 1. **多条件组合筛选**:根据注册状态、使用状态、检测状态等条件 2. **预览**:查看筛选结果 3. **导出**:导出为 TXT 文件 4. **批量更新**:更新使用状态和人工审核状态 ## 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 部署步骤 1. **环境搭建**: - 安装 PostgreSQL、Redis、RabbitMQ - 配置 Python 环境 - 安装依赖包 2. **数据库初始化**: - 执行 SQL 脚本创建表结构 - 配置分区和索引 - 导入初始数据 3. **服务启动**: - 启动数据库服务 - 启动消息队列服务 - 启动任务调度服务 - 启动检测节点 4. **系统配置**: - 配置敏感词列表 - 配置检测参数 - 配置监控告警 ### 7.3 监控与维护 1. **监控系统**: - 数据库性能监控 - 任务执行状态监控 - 系统负载监控 - 网络状态监控 2. **维护计划**: - 每日:数据备份、任务统计 - 每周:索引重建、系统更新 - 每月:数据归档、性能优化 - 每季度:全量备份、系统评估 ## 8. 预期性能指标 | 指标 | 预期值 | |------|--------| | 数据导入速度 | > 100万条/分钟 | | 域名去重速度 | > 1000万条/秒 | | 检测任务处理 | > 10000个/分钟 | | 单表查询响应 | < 1秒 | | 系统可用性 | > 99.9% | | 检测准确率 | > 99% | ## 9. 核心竞争力 1. **全维度检测**:覆盖注册状态、历史快照、平台风险等多维度 2. **智能筛选**:基于规则的自动化筛选,减少人工干预 3. **增量建设**:不追求一次性完成,通过持续积累构建完整数据库 4. **插件化架构**:检测模块可替换、可扩展 5. **数据价值**:为域名投资和企业品牌保护提供数据支持 6. **高性能**:分布式架构,支持亿级数据处理 7. **可靠性**:完善的错误处理和重试机制 8. **用户友好**:直观的可视化界面,操作简单 ## 10. 项目实施计划 ### 第一阶段:基础架构搭建(1个月) - 数据库设计和搭建 - 核心模块框架搭建 - 数据采集模块实现 - 基础检测功能实现 ### 第二阶段:功能完善(2个月) - 深度检测功能实现 - 运营管理界面开发 - 任务调度系统实现 - 多服务器部署方案 ### 第三阶段:优化与测试(1个月) - 性能优化 - 稳定性测试 - 功能测试 - 部署上线 ### 第四阶段:持续迭代 - 根据运营反馈优化系统 - 增加新的检测模块 - 扩展数据源 - 提升系统性能 ## 11. 风险评估 | 风险 | 影响 | 应对措施 | |------|------|----------| | **数据量过大** | 存储和查询性能下降 | 分区表、索引优化、数据分片 | | **API 限制** | 检测速度受限 | 多API源、请求频率控制、缓存 | | **反爬机制** | 爬虫被封禁 | 代理池、请求头随机化、模拟浏览器 | | **系统稳定性** | 服务中断 | 监控告警、自动恢复、冗余部署 | | **成本控制** | 服务器和API成本高 | 优化检测流程、合理使用资源、预算规划 | ## 12. 结论 本设计方案基于需求文档,详细说明了系统的架构设计、功能模块和实施计划。系统采用模块化设计,支持增量建设和分布式部署,能够有效应对亿级数据量的挑战。通过多维度的检测和智能筛选,为用户提供高质量的域名资源。 该方案充分考虑了技术可行性和业务需求,为域名库系统的开发和部署提供了全面的指导。