11 KiB
11 KiB
domainCheck Web/Linux 改造总体方案
一、目标结论
本项目建议采用“双轨过渡”方案:
现阶段:保持当前Windows 桌面版不变,继续测试、验收、修正业务规则目标形态:新增一套轻量 Web 管理后台 + Linux 后端 API + Linux 检测 Worker过渡策略:桌面版与 Web 版共用同一套数据库、Redis、检测规则与任务模型,逐步把控制面迁移到 Web
本方案的核心原则:
- 不推倒重做现有检测核心
- 不在当前大型
admin项目里硬改主线 - 新建一套轻量 Web 管理后台,只覆盖
domainCheck真实需要的页面 - 将桌面端中的“配置、任务控制、日志查询、导入导出”逐步抽为后端 API
- 将检测执行从 GUI 进程迁移为 Linux 常驻 Worker
二、为什么采用这条路线
1. 当前桌面版的价值仍然存在
当前桌面版已经完成了以下高价值资产:
- 域名导入、待检测任务创建、检测结果写库
- 免费检测链路与付费检测链路
- Wayback 优化策略
- 代理池、多线程、命中即停、缓存
- 域名筛选、导出、批量更新
- 现有数据库结构与状态体系
这些能力不应废弃,后续 Web 化应尽量复用。
2. Linux 长期最优形态不是桌面打包工具
Linux 更适合:
- 跑 PostgreSQL / Redis
- 跑 API 服务
- 跑常驻 Worker
- 跑定时任务与日志分析
Linux 不适合长期承载 PySide6 桌面 GUI 作为运营入口。
3. 轻量 Web 后台比继续清理现有 admin 更可控
当前 admin 项目本质上是一个成熟后台壳,但它:
- 带有原业务的大量历史模块
- 接口风格偏向既有 ThinkPHP 体系
- 动态菜单、权限、接口命名、Token 机制均带旧耦合
因此更适合“参考其基础能力”,而不是作为 domainCheck 的长期主线代码仓。
三、目标架构
建议拆成 4 层:
1. Web 管理后台
技术建议:
Vue 3ViteElement PlusPiniaVue Router
职责:
- 登录
- 系统设置
- 域名导入
- 检测控制
- 域名筛选
- 导出
- 日志诊断
说明:
- Web 端只做“控制面”和“展示面”
- 不直接承担检测执行
2. 后端 API 服务
技术建议:
- 延续当前 Python 技术栈,优先考虑
FastAPI
职责:
- 用户登录鉴权
- 配置读写
- 导入任务接口
- 检测控制接口
- 域名筛选查询接口
- 导出任务接口
- 日志诊断接口
- Worker 状态汇总接口
3. Linux 检测 Worker
技术建议:
- Python 常驻服务
- 无 GUI
- systemd 托管
职责:
- 从数据库或任务表领取待检测域名
- 按配置顺序执行免费检测与付费检测
- 写回检测结果与黑名单信息
- 汇报运行状态、进度、异常、代理池状态
4. 数据与基础设施层
PostgreSQLRedis- 日志文件
- 可选对象存储或文件目录用于导出文件
四、推荐的总体模块划分
1. domain-web
前端项目,负责:
- 登录页
- 仪表盘
- 系统设置
- 域名管理
- 检测控制台
- 日志诊断页
2. domain-api
后端 API 服务,负责:
authsettingsdomainsdetectexportslogsdiagnostics
3. domain-worker
检测 Worker,负责:
- 检测任务轮询
- 并发检测
- 代理使用
- 日志写入
- 运行状态上报
4. domain-core
可复用核心库,负责:
- 数据库访问
- 状态码定义
- 检测器封装
- 导入、筛选、导出服务
- 配置对象
- 公共异常与日志工具
说明:
- 当前
domainCheck的大部分核心逻辑,后续应逐步沉淀到这一层 - 这是兼容桌面版与 Web/Linux 双模式的关键
五、页面范围
第一期轻量 Web 后台建议只做以下页面:
1. 登录
- 用户登录
- Token 持久化
- 退出登录
2. 系统设置
- 数据库连接信息只读或隐藏
- 检测选项配置
- 检测顺序调整
- 代理池配置
- 允许直连开关
- 线程数配置
- 聚名 / 聚查 Cookie 管理
- 敏感词配置管理
3. 域名导入
- 上传 TXT
- 导入结果反馈
- 导入失败明细
- 自动建待检测任务
4. 检测控制
- 启动检测
- 停止检测
- Worker 在线状态
- 当前线程数
- 当前代理状态
- 当前任务进度
5. 域名筛选
- 注册状态
- 检测状态
- 使用状态
- 是否备案
- 备案年份
- 快照年份
- backlink > 10
- 关键词、域名、首页网址
- 分页列表
6. 导出
- 导出 TXT
- 导出 CSV/Excel
- 导出当前页 / 指定页数 / 全部
- 导出任务记录
7. 日志诊断
- Worker 运行日志
- API 错误日志
- 最近异常摘要
- 一键诊断分析
六、后端拆分建议
后端改动不是重写业务,而是“服务化”。
1. 可直接复用的部分
- 检测器逻辑
- 状态码与状态映射
- 域名导入核心逻辑
- 筛选 SQL 逻辑
- 导出逻辑
- Wayback 优化逻辑
- 代理池逻辑
- 数据库表结构
2. 需要抽离成 service 的部分
- 系统设置读写
- 检测选项配置读写
- 线程数配置读写
- 代理配置读写
- Cookie 配置读写
- 域名导入服务
- 域名筛选服务
- 导出服务
- 日志读取与诊断服务
3. 需要从 GUI 中搬出的部分
- 检测启动/停止逻辑
- 运行状态展示逻辑
- 配置变更监听
- GUI 信号槽驱动的线程控制
4. 需要新增的部分
- API 鉴权
- API 返回结构统一
- Worker 心跳机制
- 导出任务记录
- 日志分析接口
- 远程诊断接口
七、并发架构建议
当前并发能力可以复用,但调度外壳要改。
1. 保留的能力
- 域名级多线程检测
- 检测顺序控制
- Wayback 小并发与命中即停
- 代理池共享
- 失败重试
- 结果落库
2. 要调整的实现方式
从:
QThread + GUI 信号 + 本地窗口状态
迁移为:
Worker 线程池 + 服务状态上报 + API 查询
3. 推荐并发模型
- 单 Worker 实例维护一个检测线程池
- Worker 从
detect_tasks拉取待处理任务 - 每个域名仍按当前检测顺序串行执行单域名步骤
- 多域名并行执行
- Wayback 继续保留单域名内部的小并发与缓存机制
4. 推荐的任务状态流转
待检测检测中检测完成检测失败已拉黑
同时保留任务表:
status = pendingstatus = runningstatus = completedstatus = failed
八、免费与付费检测执行策略
这部分建议沿用当前已确认规则:
- 先跑免费项
- 免费项全部跑完且仍非黑名单,才跑付费项
- 付费项默认为:
- 聚查
- 桔子
检测顺序默认建议:
- 检查注册
- 百度 site
- 360 site
- 站长之家
- 爱站
- 时光机
- 聚查
- 桔子
说明:
- Web 后台允许运营勾选与调整顺序
- 但后端执行器应保留“付费项后置”的保护规则
九、代理架构建议
1. 保留现有能力
- 多代理池 URL
- 允许直连开关
- 抽样代理测试
- 可用代理数展示
2. Linux 后端建议新增
- 代理池刷新冷却时间
- 空池失败退避
- 低水位自动补池
- 按检测步骤控制是否优先直连
- 代理池健康状态缓存
3. 建议策略
- 生产环境:优先代理,谨慎直连
- 测试环境:允许直连兜底,减少空转
- 国内服务器:优先使用国内代理池
十、日志与诊断架构建议
1. 日志来源
- API 服务日志
- Worker 日志
- 导入日志
- 导出日志
- 代理池测试日志
2. 日志能力
- Web 页面查看最近日志
- 关键词过滤
- 失败任务聚合
- 一键下载诊断包
3. 诊断接口
建议后续提供:
POST /diagnostics/analyzeGET /diagnostics/latestGET /logs/workerGET /logs/api
4. 上传分析内容建议
- 最近 300 到 500 行日志
- 当前系统配置快照
- Worker 状态快照
- 数据库统计摘要
十一、认证与权限建议
第一期建议做轻量权限:
adminoperator
说明:
admin可修改系统配置、代理、Cookie、敏感词operator只能导入、查看、筛选、导出、启动检测
建议使用:
- JWT 或简单 Token
- Redis 存储会话
不建议第一期就上过重 RBAC。
十二、数据库策略建议
当前数据库可继续使用,不建议第一期大改表结构。
建议新增或补强的表可以是:
sys_userssys_login_logsexport_tasksworker_heartbeatsdiagnostic_reports
现有核心表继续复用:
domainsdetect_tasksdomain_detectionsdomain_blacklistsensitive_words
十三、兼容双模式方案
目标是兼容:
模式 A:Windows 桌面版模式 B:Web 后台 + Linux Worker
兼容方式:
- 共用同一套数据库
- 共用同一套 Redis
- 共用同一套状态码与检测规则
- 共用同一套导入、筛选、导出核心服务
建议:
- 桌面版在过渡期继续可用
- Web 版逐步接管日常运营
- 最终桌面版只保留给管理员或完全退役
十四、实施阶段建议
第一阶段:方案冻结
周期建议:2-3 天
产出:
- 页面清单
- API 清单
- 数据模型确认
- 迁移边界确认
第二阶段:后端服务化
周期建议:7-12 天
产出:
- 登录鉴权
- 配置接口
- 域名查询接口
- 导入接口
- 导出接口
- 检测控制接口
- 日志接口
第三阶段:Worker Linux 化
周期建议:5-8 天
产出:
- 无 GUI Worker
- systemd 启动方案
- 心跳上报
- 任务轮询
- 并发检测
第四阶段:Web 后台一期
周期建议:7-10 天
产出:
- 登录
- 系统设置
- 域名导入
- 检测控制
- 域名筛选
- 导出
- 日志诊断
第五阶段:联调与回归
周期建议:5-7 天
产出:
- API 联调
- Worker 联调
- 真实域名回归
- 性能参数调整
十五、周期评估
如果基于当前项目逐步演进:
较顺利:3-4 周稳妥完整:4-6 周
前提:
- 当前桌面版继续测试,不同时大规模重构
- Web 后台走轻量方案,不做额外复杂业务
- 检测核心尽量复用,不重写规则
十六、风险点
1. GUI 与业务逻辑仍有部分耦合
需要持续把 GUI 里的逻辑搬到 service 层。
2. 代理池资源仍是实际瓶颈
Linux 化不会自动解决代理池不足问题,只能让调度更稳。
3. 第三方站点反爬与返回结构变动
百度、360、站长、爱站、聚查、桔子都可能发生变化,需要留维护预算。
4. Wayback 首次大域名扫描仍可能耗时较高
虽然当前已优化很多,但超大域名首次拉 CDX 列表仍是客观成本。
十七、最终建议
建议现在就按以下路径推进:
- 当前桌面版继续测试,不做大方向替换
- 新建轻量 Web 后台项目,不在现有
admin大仓上继续主线开发 - 新建 API 服务层,承接配置、任务、导入、筛选、导出、日志能力
- 将检测端逐步改造成 Linux 常驻 Worker
- 保持桌面版与 Web/Linux 双模式并行一段时间
这是当前成本、风险、可维护性三者之间最平衡的方案。