173 lines
4.5 KiB
Markdown
173 lines
4.5 KiB
Markdown
# 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. 扩展性
|
||
|
||
- 支持添加更多用户
|
||
- 支持添加更多网站
|
||
- 支持自定义失败阈值
|
||
- 支持自定义通知消息内容
|
||
- 支持切换浏览器类型和运行模式 |