常见问题

安装和配置

Q: Docker 启动失败怎么办?

A: 检查以下几点:

  1. Docker 服务是否运行

    docker info
    
  2. 端口是否被占用 ```bash

    Linux/macOS

    lsof -i :3000 lsof -i :8080

Windows

netstat -ano | findstr :3000


3. **查看容器日志**
```bash
docker-compose logs [service-name]

Q: 数据库连接失败

A:

  1. 检查 MySQL 是否正常运行

    docker-compose ps mysql
    docker-compose logs mysql
    
  2. 验证数据库连接信息 检查 .env 文件中的配置:

    DB_HOST=mysql
    DB_PORT=3306
    DB_USER=root
    DB_PASSWORD=your_password
    DB_NAME=mitm_service
    
  3. 手动测试连接

    docker-compose exec mysql mysql -u root -p
    

Q: Redis 连接失败

A:

  1. 检查 Redis 是否运行

    docker-compose ps redis
    docker-compose logs redis
    
  2. 测试 Redis 连接

    docker-compose exec redis redis-cli ping
    # 应返回 PONG
    

代理相关

Q: MITM 代理无法拦截 HTTPS 请求

A:

  1. 安装 CA 证书

    • 启动代理后访问 http://mitm.it
    • 下载并安装对应平台的证书
    • 将证书设置为受信任
  2. 检查浏览器代理设置

    • HTTP Proxy: localhost:8080
    • HTTPS Proxy: localhost:8080
  3. 查看代理日志

    docker-compose logs mitm-proxy
    

Q: 如何配置上游代理?

A: 在 mitm-ext/config/config.yaml 中配置:

upstream:
  enabled: true
  host: "upstream-proxy.example.com"
  port: 8888

Q: 代理性能慢

A:

  1. 增加 worker 数量 在配置文件中调整 worker 数量

  2. 检查网络延迟

    ping target-server.com
    
  3. 优化规则 减少不必要的拦截规则

Q: 登录任务一直失败

A:

  1. 查看任务日志

    docker-compose logs cookie-manager
    
  2. 检查站点配置 确保登录选择器配置正确

  3. 手动测试登录流程

    cd cookie-manager
    npm run test:login
    
  4. 常见原因

    • 验证码问题
    • 登录选择器变更
    • 网络超时
    • 账号密码错误

Q: 浏览器池耗尽

A:

  1. 增加浏览器池大小.env 中设置:

    BROWSER_POOL_SIZE=10
    
  2. 检查浏览器是否正常关闭

    docker-compose exec cookie-manager ps aux | grep chrome
    
  3. 重启服务清理僵尸进程

    docker-compose restart cookie-manager
    

A:

  1. 增加更新频率 配置定时任务更频繁地更新 Cookie

  2. 检查 Redis 配置 确保 Redis 没有设置过短的 TTL

API 相关

Q: API 返回 401 Unauthorized

A:

  1. 检查 Token 是否有效

    curl -H "Authorization: Bearer YOUR_TOKEN" \
    http://localhost/api/user/profile
    
  2. Token 是否过期 重新登录获取新 Token

  3. 检查 JWT_SECRET 配置 确保各服务使用相同的 JWT_SECRET

Q: API 响应慢

A:

  1. 检查数据库查询 查看慢查询日志

  2. 启用缓存 确保 Redis 缓存已启用

  3. 优化查询 添加必要的索引

Q: CORS 错误

A:

web-service/.env 中配置:

CORS_ORIGIN=http://localhost:8080,https://yourdomain.com

部署相关

Q: 如何升级到新版本?

A:

# 1. 备份数据
docker-compose exec mysql mysqldump -u root -p mitm_service > backup.sql

# 2. 拉取最新代码
git pull origin main

# 3. 重新构建
docker-compose build

# 4. 重启服务
docker-compose down
docker-compose up -d

# 5. 运行迁移
docker-compose exec web-service npm run migrate

Q: 如何回滚到旧版本?

A:

# 1. 检出旧版本
git checkout v1.0.0

# 2. 重新部署
docker-compose down
docker-compose up -d

# 3. 恢复数据库(如需要)
docker-compose exec -T mysql mysql -u root -p mitm_service < backup.sql

Q: 生产环境部署注意事项

A:

  1. 修改默认密码

    • 数据库密码
    • Redis 密码
    • JWT Secret
  2. 启用 HTTPS

    • 配置 SSL 证书
    • 强制 HTTPS 跳转
  3. 配置防火墙

    • 只开放必要端口
    • 配置访问白名单
  4. 设置资源限制

    services:
    web-service:
     deploy:
       resources:
         limits:
           cpus: '2'
           memory: 2G
    
  5. 配置监控

    • 日志收集
    • 性能监控
    • 告警通知

性能优化

Q: 如何提高并发处理能力?

A:

  1. 增加实例数量

    services:
    web-service:
     scale: 3
    
  2. 启用集群模式 配置 PM2 集群模式

  3. 优化数据库

    • 添加索引
    • 配置读写分离
    • 启用查询缓存
  4. 使用 Redis 缓存 缓存热点数据

Q: 内存占用高怎么办?

A:

  1. 检查内存泄漏

    docker stats
    
  2. 限制容器内存

    services:
    web-service:
     mem_limit: 1g
    
  3. 优化浏览器池 减小浏览器池大小或启用 headless 模式

  4. 清理日志

    docker system prune -a
    

开发相关

Q: 如何调试代码?

A:

  1. Web Service / Cookie Manager ```bash

    启动调试模式

    cd web-service npm run dev:debug

VS Code launch.json

{ "type": "node", "request": "attach", "name": "Attach to Node", "port": 9229 }


2. **MITM Proxy**
```bash
cd mitm-ext
python start_debug.py

Q: 如何添加新的登录站点?

A:

  1. 创建站点配置 在数据库中添加站点记录

  2. 配置登录选择器

    {
    "usernameSelector": "#username",
    "passwordSelector": "#password",
    "submitSelector": "#login-btn",
    "successSelector": ".user-profile"
    }
    
  3. 添加登录脚本cookie-manager/jobs/ 下添加站点特定逻辑

Q: 如何编写自定义 MITM 插件?

A:

创建插件文件 mitm-ext/addons/my_addon.py:

from mitmproxy import http

class MyAddon:
    def request(self, flow: http.HTTPFlow) -> None:
        # 处理请求
        pass

    def response(self, flow: http.HTTPFlow) -> None:
        # 处理响应
        pass

addons = [MyAddon()]

加载插件:

mitmdump -s addons/my_addon.py

安全相关

Q: 如何保护敏感数据?

A:

  1. 加密存储

    • 使用 bcrypt 加密密码
    • Cookie 加密存储
  2. 环境变量 不要将敏感信息提交到代码库

  3. HTTPS 传输 生产环境必须使用 HTTPS

Q: 如何防止未授权访问?

A:

  1. 启用 JWT 认证 所有 API 都需要 Token

  2. 配置 IP 白名单

    allow 192.168.1.0/24;
    deny all;
    
  3. 使用 API Key 为第三方集成生成 API Key

其他问题

Q: 如何查看完整日志?

A:

# 查看所有服务日志
docker-compose logs

# 查看特定服务日志
docker-compose logs web-service

# 实时查看日志
docker-compose logs -f

# 查看最近 N 行
docker-compose logs --tail=100

Q: 如何清理无用数据?

A:

# 清理 Docker 资源
docker system prune -a

# 清理数据库
mysql> DELETE FROM request_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);

# 清理 Redis
redis-cli FLUSHDB

Q: 如何监控服务状态?

A:

  1. 使用 Docker 监控

    docker stats
    
  2. 健康检查

    curl http://localhost/api/health
    
  3. 集成监控工具

    • Prometheus
    • Grafana
    • ELK Stack

获取更多帮助

results matching ""

    No results matching ""