系统架构

整体架构

┌─────────────────────────────────────────────────────────────────┐
│                          客户端层                                │
│  ┌──────────────────┐          ┌──────────────────┐            │
│  │  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

端口: 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 响应时间
  • 请求成功率
  • 系统资源使用
  • 队列长度
  • 浏览器池状态

下一步

results matching ""

    No results matching ""