# 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 易用性 - 配置文件简单明了 - 日志输出清晰易懂 - 通知信息详细准确