Files
cookie/功能需求文档.md
T
2026-03-02 17:02:09 +08:00

314 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Cookie 自动监控功能需求文档
## 1. 功能概述
本系统提供 Cookie 自动监控、管理和通知功能,确保用户能够持续访问多个网站。
## 2. 详细功能需求
### 2.1 Cookie Cloud 集成
#### 2.1.1 从 Cookie Cloud 获取 Cookie
- **功能描述**: 从 Cookie Cloud 服务器获取并解密 Cookie 数据
- **输入**: Cookie Cloud API 地址、UUID、密码
- **输出**: 按域名分组的 Cookie 数据
- **处理逻辑**:
1. 发送 GET 请求到 `/get/{uuid}` 接口
2. 获取加密的 Cookie 数据
3. 使用 AES 算法解密数据
4. 解析 JSON 格式的 Cookie 数据
5. 按域名组织 Cookie
#### 2.1.2 按域名获取 Cookie
- **功能描述**: 获取指定域名的 Cookie
- **输入**: 域名
- **输出**: 该域名的 Cookie 列表
- **处理逻辑**: 遍历所有 Cookie,匹配域名
### 2.2 浏览器控制
#### 2.2.1 创建浏览器实例
- **功能描述**: 创建浏览器实例并启动浏览器
- **输入**: 浏览器类型(chrome/edge)、是否无头模式
- **输出**: 浏览器对象
- **支持浏览器**: Chrome、Edge
- **运行模式**: 有头模式、无头模式
#### 2.2.2 检测登录状态
- **功能描述**: 检测网站是否已登录
- **输入**: 网站 URL、登录检测选择器、成功文本
- **输出**: 是否已登录(True/False
- **处理逻辑**:
1. 访问网站
2. 查找登录检测元素
3. 检查元素文本是否包含成功文本
#### 2.2.3 使用 Cookie 登录
- **功能描述**: 使用 Cookie 登录网站
- **输入**: 网站 URL、Cookie 列表、登录检测选择器、成功文本
- **输出**: 是否登录成功(True/False
- **处理逻辑**:
1. 访问网站
2. 设置 Cookie
3. 刷新页面
4. 检测登录状态
#### 2.2.4 刷新并保存 Cookie
- **功能描述**: 刷新页面并获取最新的 Cookie
- **输入**: 网站 URL
- **输出**: 最新的 Cookie 列表
- **处理逻辑**:
1. 刷新页面
2. 获取当前所有 Cookie
3. 返回 Cookie 列表
### 2.3 Cookie 管理
#### 2.3.1 保存 Cookie
- **功能描述**: 保存指定用户和网站的 Cookie
- **输入**: 用户名、网站名、Cookie 列表
- **输出**: 无
- **存储位置**: `cookies.json` 文件
- **存储格式**:
```json
{
"用户名": {
"网站名": [
{
"name": "cookie名称",
"value": "cookie值",
"domain": "域名",
"path": "路径",
"expiry": "过期时间"
}
]
}
}
```
#### 2.3.2 读取 Cookie
- **功能描述**: 读取指定用户和网站的 Cookie
- **输入**: 用户名、网站名
- **输出**: Cookie 列表
- **数据来源**: `cookies.json` 文件
#### 2.3.3 按域名获取 Cookie
- **功能描述**: 从所有 Cookie 中查找指定域名的 Cookie
- **输入**: 域名
- **输出**: Cookie 列表
- **匹配规则**: 域名完全匹配或包含关系
### 2.4 失败追踪
#### 2.4.1 获取失败次数
- **功能描述**: 获取指定用户和网站的失败次数
- **输入**: 用户名、网站名
- **输出**: 失败次数
- **数据来源**: `state.json` 文件
#### 2.4.2 增加失败次数
- **功能描述**: 增加指定用户和网站的失败次数
- **输入**: 用户名、网站名
- **输出**: 增加后的失败次数
- **存储位置**: `state.json` 文件
#### 2.4.3 重置失败次数
- **功能描述**: 重置指定用户和网站的失败次数
- **输入**: 用户名、网站名
- **输出**: 无
#### 2.4.4 检查并发送通知
- **功能描述**: 检查失败次数,达到阈值时发送通知
- **输入**: 用户名、网站名、最大失败次数、通知器、错误信息
- **输出**: 是否应该停止重试
- **处理逻辑**:
1. 增加失败次数
2. 判断是否达到阈值
3. 达到阈值则发送通知
4. 发送通知后重置失败计数
5. 返回是否停止重试
### 2.5 消息通知
#### 2.5.1 发送爱语飞飞通知
- **功能描述**: 通过爱语飞飞 API 发送通知
- **输入**: 令牌、标题、内容
- **输出**: 是否发送成功(True/False
- **API 地址**: `https://iyuu.cn/{令牌}.send`
- **请求方式**: GET
- **请求参数**:
- `text`: 通知标题
- `desp`: 通知内容
### 2.6 主程序流程
#### 2.6.1 读取配置
- **功能描述**: 读取配置文件
- **输入**: 配置文件路径
- **输出**: 配置字典
- **配置文件**: `config.json`
#### 2.6.2 处理用户
- **功能描述**: 处理单个用户的所有网站
- **输入**: 用户配置
- **输出**: 无
- **处理逻辑**:
1. 初始化 Cookie Cloud 客户端
2. 初始化爱语飞飞通知器
3. 初始化浏览器
4. 遍历该用户的所有网站
5. 调用处理网站功能
6. 关闭浏览器
#### 2.6.3 处理网站
- **功能描述**: 处理单个网站的监控
- **输入**: 用户名、网站配置、Cookie Cloud 客户端、通知器、最大失败次数、浏览器
- **输出**: 无
- **处理流程**:
1. **步骤 1**: 尝试使用本地 Cookie 登录
- 读取本地 Cookie
- 登录网站
- 检测登录状态
- 登录成功 → 跳转到步骤 3
- 登录失败 → 跳转到步骤 2
2. **步骤 2**: 从 Cookie Cloud 获取 Cookie 并重试
- 从 Cookie Cloud 获取 Cookie
- 登录网站
- 检测登录状态
- 登录成功 → 跳转到步骤 3
- 登录失败 → 跳转到步骤 4
3. **步骤 3**: 刷新页面并保存新 Cookie
- 刷新页面
- 获取最新 Cookie
- 保存到 Cookie 文件
- 重置失败计数
- 结束
4. **步骤 4**: 登录失败处理
- 增加失败计数
- 判断是否达到阈值
- 达到阈值 → 发送通知 → 重置计数
- 未达到阈值 → 记录日志
#### 2.6.4 运行监控
- **功能描述**: 运行整个监控流程
- **输入**: 无
- **输出**: 无
- **处理逻辑**:
1. 读取配置文件
2. 遍历所有用户
3. 处理每个用户
4. 记录成功和失败数量
5. 输出日志
## 3. 配置管理功能
### 3.1 配置文件管理
- 支持多用户配置
- 支持多网站配置
- 支持 Cookie Cloud 配置
- 支持通知配置
- 支持浏览器配置
### 3.2 状态文件管理
- 记录失败次数
- 持久化存储
- 自动加载和保存
### 3.3 Cookie 文件管理
- 统一管理所有 Cookie
- 按用户和网站组织
- 持久化存储
## 4. 日志功能
### 4.1 日志记录
- 记录操作开始和结束
- 记录用户和网站处理状态
- 记录登录成功和失败
- 记录 Cookie 更新
- 记录通知发送
- 记录异常信息
### 4.2 日志格式
```
[时间戳] 日志内容
```
## 5. 异常处理
### 5.1 网络异常
- Cookie Cloud 请求失败
- 网站访问失败
- 通知发送失败
### 5.2 浏览器异常
- 浏览器启动失败
- 元素查找失败
- Cookie 设置失败
### 5.3 文件异常
- 配置文件读取失败
- Cookie 文件读写失败
- 状态文件读写失败
### 5.4 加密异常
- Cookie 解密失败
- 密钥生成失败
## 6. 性能要求
- Cookie Cloud 请求超时:30 秒
- 网站访问超时:10 秒
- 元素查找超时:10 秒
- 通知发送超时:10 秒
## 7. 安全要求
- Cookie Cloud 使用端到端加密
- 配置文件包含敏感信息,需妥善保管
- 爱语飞飞令牌不应泄露
- Cookie 数据不应明文传输
## 8. 扩展功能
### 8.1 多用户支持
- 每个用户独立的 Cookie Cloud 配置
- 每个用户独立的爱语飞飞令牌
- 每个用户独立的浏览器配置
### 8.2 多网站支持
- 每个用户可以配置多个网站
- 每个网站独立的登录检测
- 每个网站独立的失败计数
### 8.3 浏览器配置
- 支持 Chrome 和 Edge
- 支持有头和无头模式
- 每个用户可以独立配置浏览器
### 8.4 通知配置
- 支持自定义最大失败次数
- 支持自定义通知内容
- 每个用户独立的通知配置
## 9. 非功能需求
### 9.1 可靠性
- 程序异常不影响下次执行
- 状态文件确保数据不丢失
- 浏览器异常自动关闭
### 9.2 可维护性
- 模块化设计
- 清晰的日志输出
- 详细的错误信息
### 9.3 可扩展性
- 易于添加新用户
- 易于添加新网站
- 易于添加新通知方式
### 9.4 易用性
- 配置文件简单明了
- 日志输出清晰易懂
- 通知信息详细准确