Files
AutoLogon/开发文档.md
2025-10-18 22:31:17 +08:00

174 lines
5.4 KiB
Markdown
Raw Permalink 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.
# 自动登录网站并管理Cookies项目开发文档
## 1. 项目概述
本项目使用Python语言和DrissionPage库开发一个自动化脚本,用于按顺序登录多个网站,保持登录状态一段时间后保存更新的cookies,并关闭网站。该应用支持配置多个网站、自定义保持登录时间、自动管理cookies以及完整的日志记录系统。
## 2. 功能需求
- 从配置文件读取网站地址和对应的cookies信息
- 按顺序登录每个网站
- 登录成功后依次打开多个网页(支持全局duration配置)
- 保存更新后的cookies信息到配置文件
- 关闭网站浏览器实例
- 完整的日志记录功能
- 支持自定义浏览器路径配置
## 3. 技术栈
- Python 3.8+
- DrissionPage库(用于浏览器自动化)
- JSON用于配置文件格式
- Python标准库logging(用于日志记录)
## 4. 项目结构
```
autoLogon/
├── main.py # 应用主入口
├── login_manager.py # 登录管理器
├── config.py # 配置管理器
├── logger_config.py # 日志配置
├── config.json # 配置文件
├── requirements.txt # 依赖列表
├── README.md # 项目说明文档
└── log/ # 日志文件夹(自动创建)
```
## 5. 模块设计
### 5.1 配置管理器 (config.py)
**功能**:负责加载、保存和管理应用配置,包括网站列表、浏览器路径等信息。
**主要类和方法**
- `ConfigManager`: 配置管理类
- `__init__(config_file='config.json')`: 初始化配置管理器
- `load_config()`: 加载配置文件,处理文件不存在或格式错误的情况
- `save_config(config)`: 保存配置到文件
- `get_sites()`: 获取所有网站配置
- `add_site(site_config)`: 添加网站配置
- `update_site(site_name, updated_config)`: 更新网站配置
- `delete_site(site_name)`: 删除网站配置
### 5.2 登录管理器 (login_manager.py)
**功能**:负责浏览器的初始化、网站访问、cookies管理和会话维护。
**主要类和方法**
- `LoginManager`: 登录管理类
- `__init__()`: 初始化登录管理器
- `run()`: 从配置文件读取网站信息,为每个网站新建标签页并加载cookies
- `save_cookies()`: 获取所有页面的cookies并保存到配置文件
- `get_duration()`: 获取配置的持续时间
- `close(quit_browser=None)`: 关闭浏览器页面和实例
- `_add_page_metadata(page, name, url, cookies=None)`: 添加页面元数据
- `_set_cookies_to_page(page, cookies, site_name)`: 设置cookies到页面
- `_get_page_cookies(page, site_name, page_url=None)`: 获取页面cookies
### 5.3 日志配置器 (logger_config.py)
**功能**:设置全局日志记录器,支持文件和控制台双重输出。
**主要类和方法**
- `LoggerConfig`: 日志配置类
- `setup_logger(log_level=logging.INFO)`: 设置日志记录器
- `global_logger`: 全局日志记录器实例
### 5.4 主程序模块 (main.py)
**功能**:应用主入口,协调各模块工作流程。
**主要类和方法**
- `AutoLoginApp`: 自动登录应用主类
- `__init__()`: 初始化自动登录应用
- `run()`: 运行自动登录应用,执行完整的登录流程
**主要流程**
1. 初始化配置管理器和登录管理器
2. 加载配置文件
3. 调用login_manager.run()方法处理所有网站
- 为每个网站创建标签页并访问URL
- 设置cookies(如果有)
- 等待页面加载完成
4. 获取配置的持续时间并等待指定时间
5. 获取并保存所有页面更新后的cookies
6. 根据配置决定是否自动关闭浏览器
## 6. 配置文件格式 (JSON)
```json
{
"duration": 30,
"AutoQuit": true,
"sites": [
{
"name": "网站名称",
"url": "网站URL",
"cookies": [
{
"name": "cookie名称",
"value": "cookie值",
"domain": "域名",
"path": "/",
"expires": 0,
"secure": false,
"httpOnly": false
}
]
}
]
}
```
**配置项说明**
- `duration`: 保持登录状态的时间(秒)
- `AutoQuit`: 是否在完成后自动退出浏览器(true/false)
- `sites`: 网站配置列表
- `name`: 网站名称(用于标识网站)
- `url`: 网站URL地址
- `cookies`: cookies列表,用于自动登录
```
## 7. 依赖安装
```bash
pip install -r requirements.txt
```
requirements.txt内容:
```
drissionpage
```
## 8. 实现步骤
1. 创建项目目录结构
2. 编写日志配置模块 (logger_config.py)
3. 编写配置管理器模块 (config.py)
4. 编写登录管理器模块 (login_manager.py)
5. 编写主程序模块 (main.py)
6. 创建配置文件示例 (config.json)
7. 测试各个模块
8. 整合测试
## 9. 注意事项
- 确保使用正确的cookies格式,支持列表格式
- 处理可能的登录失败情况,程序有完整的异常处理
- 考虑网站的反爬机制,避免频繁操作
- 妥善保存配置文件,cookies可能包含敏感信息
- 处理网络异常和超时情况
- 确保正确配置浏览器路径,默认为Edge浏览器
- 程序运行时需要有足够权限启动浏览器
## 10. 扩展功能建议
- 实现登录失败重试机制
- 添加多线程或异步支持以提高效率
- 实现定时任务功能
- 添加GUI界面便于操作
- 添加cookies加密存储功能
- 实现更智能的登录验证机制
- 添加多浏览器支持
- 实现命令行参数解析功能