# Cookie 自动监控项目需求文档

## 1. 项目背景

本项目旨在实现一个自动化 Cookie 管理和监控系统，通过定时任务检查多个网站的登录状态，自动刷新和更新 Cookie，确保用户能够持续访问目标网站。当登录失败时，系统会自动从 Cookie Cloud 服务器获取最新的 Cookie 进行重试，并在连续失败达到阈值时通过爱语飞飞消息服务发送通知。

## 2. 项目目标

- 自动监控多个网站的登录状态
- 自动刷新和更新 Cookie
- 支持 Cookie Cloud 备份和恢复
- 支持多用户、多网站配置
- 支持多种浏览器（Chrome、Edge）
- 支持有头/无头模式切换
- 失败通知机制，避免消息过于频繁

## 3. 技术栈

- **编程语言**: Python 3.14.2
- **浏览器控制**: DrissionPage
- **HTTP 请求**: requests
- **加密解密**: pycryptodome
- **消息通知**: 爱语飞飞 API
- **定时任务**: Windows 任务计划程序
- **配置格式**: JSON

## 4. 运行环境

- **操作系统**: Windows 10/11
- **Python 版本**: 3.14.2
- **浏览器**: Chrome 或 Edge（系统自带）

## 5. 系统架构

### 5.1 模块划分

1. **Cookie Cloud 模块** (`cookie_cloud.py`)
   - 从 Cookie Cloud 服务器获取 Cookie 数据
   - 解密 Cookie 数据
   - 按域名组织 Cookie

2. **消息通知模块** (`notifier.py`)
   - 集成爱语飞飞 API
   - 失败次数追踪
   - 通知发送控制

3. **浏览器登录模块** (`browser_login.py`)
   - 使用 DrissionPage 控制浏览器
   - 检测登录状态
   - 管理 Cookie

4. **Cookie 管理器** (`browser_login.py`)
   - 统一管理所有 Cookie
   - 支持按用户和网站存储
   - 持久化存储

5. **主程序** (`monitor.py`)
   - 读取配置文件
   - 协调各模块工作
   - 处理异常和日志

### 5.2 数据流

```
配置文件 → 主程序 → 浏览器登录模块 → 网站检测
                              ↓
                       Cookie 管理器 ← Cookie Cloud 模块
                              ↓
                       消息通知模块 ← 失败追踪器
```

## 6. 核心流程

### 6.1 监控流程

1. 读取配置文件
2. 遍历每个用户
3. 遍历该用户的每个网站
4. 尝试使用本地 Cookie 登录
5. 登录失败 → 从 Cookie Cloud 获取 Cookie → 重试登录
6. 登录成功 → 刷新页面 → 保存新 Cookie → 重置失败计数
7. 登录失败 → 失败计数 +1
8. 失败计数达到阈值 → 发送提醒 → 重置计数
9. 保存状态到状态文件

### 6.2 失败重试策略

- 每个网站独立计数失败次数
- 连续失败 3 次后发送通知
- 发送通知后重置计数
- 下次执行重新开始计数

## 7. 配置管理

### 7.1 配置文件结构

```json
{
  "users": [
    {
      "name": "用户名",
      "cookie_cloud": {
        "uuid": "Cookie Cloud UUID",
        "password": "Cookie Cloud 密码",
        "api_url": "Cookie Cloud API 地址"
      },
      "notification": {
        "iyuu_token": "爱语飞飞令牌",
        "max_fail_count": 3
      },
      "browser": {
        "type": "edge/chrome",
        "headless": true/false
      },
      "websites": [
        {
          "name": "网站名称",
          "url": "网站地址",
          "login_check_selector": "登录检测选择器",
          "success_text": "登录成功文本"
        }
      ]
    }
  ]
}
```

### 7.2 数据文件

- `config.json`: 配置文件
- `cookies.json`: Cookie 存储文件
- `state.json`: 失败计数状态文件

## 8. 定时任务

使用 Windows 任务计划程序设置定时任务：
- 执行频率：每 30 分钟
- 执行命令：`python G:\test\cookie\monitor.py`
- 运行账户：SYSTEM

## 9. 依赖安装

```bash
pip install DrissionPage requests pycryptodome
```

## 10. 项目文件结构

```
G:\test\cookie\
├── config.json          # 配置文件
├── monitor.py           # 主程序
├── cookie_cloud.py      # Cookie Cloud 模块
├── notifier.py          # 消息通知模块
├── browser_login.py     # 浏览器登录模块
├── state.json           # 失败计数状态文件
└── cookies.json         # Cookie 存储文件
```

## 11. 安全考虑

- Cookie Cloud 使用端到端加密
- 配置文件包含敏感信息，需妥善保管
- 定时任务使用 SYSTEM 账户运行，需谨慎授权
- 爱语飞飞令牌不应泄露

## 12. 扩展性

- 支持添加更多用户
- 支持添加更多网站
- 支持自定义失败阈值
- 支持自定义通知消息内容
- 支持切换浏览器类型和运行模式