环境配置
系统要求
最低配置
- 操作系统: Linux / macOS / Windows 10+
- CPU: 2 核心
- 内存: 4 GB RAM
- 磁盘: 20 GB 可用空间
推荐配置
- 操作系统: Ubuntu 20.04+ / macOS 12+ / Windows 11
- CPU: 4 核心或以上
- 内存: 8 GB RAM 或以上
- 磁盘: 50 GB SSD
软件依赖
必需软件
Docker & Docker Compose
Linux (Ubuntu/Debian):
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
macOS:
# 使用 Homebrew 安装
brew install docker docker-compose
# 或下载 Docker Desktop for Mac
# https://www.docker.com/products/docker-desktop
Windows:
- 下载并安装 Docker Desktop for Windows
- 确保启用 WSL2
Git
Linux:
sudo apt-get update
sudo apt-get install git
macOS:
brew install git
Windows:
- 下载并安装 Git for Windows
开发环境(可选)
如果您想在开发模式下运行,还需要:
Node.js
推荐版本: 18.x LTS
Linux/macOS:
# 使用 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18
Windows:
- 下载并安装 Node.js
Python
推荐版本: 3.8+
Linux:
sudo apt-get install python3 python3-pip python3-venv
macOS:
brew install [email protected]
Windows:
- 下载并安装 Python
MySQL (开发环境)
推荐版本: 8.0+
Linux:
sudo apt-get install mysql-server
macOS:
brew install mysql
brew services start mysql
Redis (开发环境)
推荐版本: 6.0+
Linux:
sudo apt-get install redis-server
sudo systemctl start redis
macOS:
brew install redis
brew services start redis
环境变量配置
Web Service (.env)
创建 web-service/.env:
# 服务配置
NODE_ENV=development
PORT=3000
HOST=0.0.0.0
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=mitm_service
DB_DIALECT=mysql
DB_POOL_MAX=10
DB_POOL_MIN=0
DB_POOL_ACQUIRE=30000
DB_POOL_IDLE=10000
# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
# JWT 配置
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
JWT_EXPIRES_IN=7d
# 日志配置
LOG_LEVEL=info
LOG_DIR=./logs
# CORS 配置
CORS_ORIGIN=*
# Cookie Manager 服务地址
COOKIE_MANAGER_URL=http://localhost:3001
Cookie Manager (.env)
创建 cookie-manager/.env:
# 服务配置
NODE_ENV=development
PORT=3001
HOST=0.0.0.0
# 数据库配置 (同 Web Service)
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=mitm_service
# Redis 配置 (同 Web Service)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
# 浏览器配置
BROWSER_HEADLESS=true
BROWSER_POOL_SIZE=5
BROWSER_TIMEOUT=30000
BROWSER_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
# 任务队列配置
QUEUE_CONCURRENCY=3
QUEUE_MAX_ATTEMPTS=3
QUEUE_BACKOFF_DELAY=5000
# 日志配置
LOG_LEVEL=info
LOG_DIR=./logs
MITM Proxy 配置
创建 mitm-ext/config/config.yaml:
# 代理配置
proxy:
listen_host: "0.0.0.0"
listen_port: 8080
mode: "regular" # regular, upstream, reverse
# 上游代理 (可选)
upstream:
enabled: false
host: ""
port: 0
# 证书配置
certificates:
dir: "~/.mitmproxy"
# 插件配置
addons:
- name: "cookie_injector"
enabled: true
config:
api_url: "http://localhost:3000/api"
- name: "request_logger"
enabled: true
config:
log_file: "./logs/requests.log"
# 过滤规则
filters:
# 只拦截特定域名
include_domains:
- "example.com"
- "api.example.com"
# 排除特定域名
exclude_domains:
- "google.com"
- "facebook.com"
# 只拦截特定路径
include_paths:
- "/api/*"
# 日志配置
logging:
level: "INFO" # DEBUG, INFO, WARN, ERROR
format: "json"
file: "./logs/mitm.log"
数据库初始化
创建数据库
mysql -u root -p
-- 创建数据库
CREATE DATABASE mitm_service CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'mitm_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON mitm_service.* TO 'mitm_user'@'localhost';
FLUSH PRIVILEGES;
运行迁移
cd web-service
npm run migrate
验证环境
检查 Docker
docker --version
docker-compose --version
检查 Node.js
node --version
npm --version
检查 Python
python3 --version
pip3 --version
检查数据库连接
MySQL:
mysql -u root -p -e "SELECT VERSION();"
Redis:
redis-cli ping
# 应返回 PONG
防火墙配置
如果您使用防火墙,需要开放以下端口:
# Linux (ufw)
sudo ufw allow 80/tcp # Nginx
sudo ufw allow 443/tcp # Nginx HTTPS
sudo ufw allow 3000/tcp # Web Service
sudo ufw allow 3001/tcp # Cookie Manager
sudo ufw allow 8080/tcp # MITM Proxy
# Linux (firewalld)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --permanent --add-port=3001/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
代理配置
系统代理
macOS:
# 设置 HTTP/HTTPS 代理
networksetup -setwebproxy "Wi-Fi" localhost 8080
networksetup -setsecurewebproxy "Wi-Fi" localhost 8080
# 取消代理
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
Linux:
# 临时设置
export http_proxy=http://localhost:8080
export https_proxy=http://localhost:8080
# 永久设置 (添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export http_proxy=http://localhost:8080' >> ~/.bashrc
echo 'export https_proxy=http://localhost:8080' >> ~/.bashrc
Windows:
- 设置 → 网络和 Internet → 代理
- 手动设置代理:localhost:8080
常见问题
端口被占用
查找占用端口的进程:
# Linux/macOS
lsof -i :3000
lsof -i :8080
# Windows
netstat -ano | findstr :3000
杀掉占用进程:
# Linux/macOS
kill -9 <PID>
# Windows
taskkill /PID <PID> /F
Docker 权限问题
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 重新登录或执行
newgrp docker
Node.js 版本不匹配
# 使用 nvm 切换版本
nvm install 18
nvm use 18