系统架构
整体架构
┌─────────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Browser Ext │ │ Third-party │ │
│ │ (Vue.js) │ │ Applications │ │
│ └──────────────────┘ └──────────────────┘ │
└────────────┬─────────────────────────────┬──────────────────────┘
│ │
│ HTTPS │ HTTPS
▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 接入层 (Nginx) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 反向代理 / 负载均衡 / SSL 终止 │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────┬────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Web Service │ │ Cookie Manager │ │
│ │ (Node.js) │◀──▶│ (Node.js) │ │
│ │ - API Gateway │ │ - Browser Pool │ │
│ │ - Business Logic│ │ - Task Queue │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ MITM Proxy / HTTP Listener │ │
│ │ (Python + mitmproxy) │ │
│ │ - Traffic Interception │ │
│ │ - Request/Response Processing │ │
│ └─────────────────────────────────────────┘ │
└────────────┬────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ MySQL │ │ Redis │ │
│ │ - User Data │ │ - Cache │ │
│ │ - Cookie Data │ │ - Task Queue │ │
│ │ - Config Data │ │ - Session │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
组件详解
1. 客户端层
Browser Extension (浏览器扩展)
- 技术栈: Vue.js 3 + Vite
- 职责:
- 提供用户交互界面
- 调用 Web Service API
- 展示操作结果
- 通信方式: HTTPS RESTful API
Third-party Applications
- 职责: 第三方应用集成
- 通信方式: HTTP API / SDK
2. 接入层
Nginx
- 职责:
- 反向代理
- SSL/TLS 终止
- 负载均衡
- 静态资源服务
- 配置:
- 支持 HTTP/2
- 请求转发规则
- 缓存策略
3. 应用层
Web Service (Node.js)
端口: 3000
职责:
- 提供 RESTful API
- 用户认证和授权
- 业务逻辑处理
- 账号和站点管理
技术栈:
- Express.js - Web 框架
- JWT - 认证
- Sequelize - ORM
- Joi - 数据验证
主要 API:
POST /api/auth/login - 用户登录
GET /api/accounts - 获取账号列表
POST /api/accounts - 创建账号
PUT /api/accounts/:id - 更新账号
POST /api/tasks/login - 触发登录任务
GET /api/cookies - 获取 Cookie
Cookie Manager (Node.js)
端口: 3001
职责:
- 浏览器自动化管理
- Cookie 获取和更新
- 登录任务执行
- 浏览器实例池管理
技术栈:
- Puppeteer - 浏览器自动化
- Bull - 任务队列
- Redis - 队列存储
核心模块:
- BrowserQueue: 浏览器实例池
- TaskQueue: 任务队列管理
- XBrowser: 浏览器封装
- XTask: 任务执行引擎
MITM Proxy (Python)
端口: 8080
职责:
- HTTP/HTTPS 流量拦截
- 请求/响应处理
- Cookie 注入和提取
- 自定义规则处理
技术栈:
- mitmproxy - 代理核心
- Python 3.8+ - 插件开发
插件系统:
# 插件生命周期
- request # 请求拦截
- response # 响应拦截
- requestheaders # 请求头处理
- responseheaders # 响应头处理
HTTP Listener (Python)
职责:
- 监听特定请求
- 数据提取和转发
- 与 Web Service 通信
4. 数据层
MySQL
版本: 8.0+
数据表:
users- 用户表accounts- 账号表sites- 站点配置表cookies- Cookie 存储表login_jobs- 登录任务表request_logs- 请求日志表
连接池配置:
{
host: 'localhost',
port: 3306,
database: 'mitm_service',
connectionLimit: 10
}
Redis
版本: 6.0+
用途:
- Task Queue (Bull)
- Session Storage
- API Rate Limiting
- Cache Layer
数据结构:
queue:login:* - 登录任务队列
session:* - 用户会话
cache:* - 缓存数据
browser:pool:* - 浏览器池状态
数据流
1. 登录流程
Browser Ext → Web Service → Cookie Manager → Puppeteer
↓
Target Site
↓
Execute Login
↓
Extract Cookies
↓
Store in MySQL
↓
Browser Ext ← Web Service ← Cookie Manager ← Response
2. 代理请求流程
Client App → MITM Proxy → Addon Processing
↓
Check Cookie
↓
Inject Cookie (if needed)
↓
Forward Request
↓
Target Server
↓
Process Response
↓
Extract Data (if needed)
↓
Client App ← MITM Proxy ← Save to DB/Redis
3. API 调用流程
Client → Nginx → Web Service
↓
JWT Validation
↓
Business Logic
↓
Database Query
↓
Client ← Nginx ← Response
扩展性设计
水平扩展
- Web Service: 无状态设计,可多实例部署
- Cookie Manager: 通过 Redis 队列实现分布式任务
- MITM Proxy: 可部署多个实例,通过 Nginx 负载均衡
垂直扩展
- 数据库读写分离
- Redis 集群
- 浏览器池大小可配置
安全设计
1. 认证和授权
- JWT Token 认证
- Token 过期和刷新机制
- 角色和权限控制
2. 数据安全
- 密码 bcrypt 加密
- Cookie 加密存储
- HTTPS 传输加密
3. 网络安全
- CORS 配置
- 请求频率限制
- SQL 注入防护
- XSS 防护
性能优化
1. 缓存策略
- Redis 缓存热点数据
- HTTP 响应缓存
- 静态资源 CDN
2. 数据库优化
- 索引优化
- 查询优化
- 连接池管理
3. 资源管理
- 浏览器实例复用
- 内存自动回收
- 连接池管理
监控和日志
日志级别
- ERROR: 错误日志
- WARN: 警告日志
- INFO: 信息日志
- DEBUG: 调试日志
监控指标
- API 响应时间
- 请求成功率
- 系统资源使用
- 队列长度
- 浏览器池状态