diff --git a/开发文档.md b/开发文档.md index 7eb6606..fba26a8 100644 --- a/开发文档.md +++ b/开发文档.md @@ -2,131 +2,170 @@ ## 1. 项目概述 -本项目使用Python语言和DrissionPage库开发一个自动化脚本,用于按顺序登录多个网站,保持登录状态一段时间后保存更新的cookies,并关闭网站。 +本项目使用Python语言和DrissionPage库开发一个自动化脚本,用于按顺序登录多个网站,保持登录状态一段时间后保存更新的cookies,并关闭网站。该应用支持配置多个网站、自定义保持登录时间、自动管理cookies以及完整的日志记录系统。 ## 2. 功能需求 - 从配置文件读取网站地址和对应的cookies信息 - 按顺序登录每个网站 -- 登录成功后保持登录状态2分钟 -- 保存更新后的cookies信息 -- 关闭网站 +- 登录成功后保持登录状态指定时间(可配置) +- 保存更新后的cookies信息到配置文件 +- 关闭网站浏览器实例 +- 完整的日志记录功能 +- 支持自定义浏览器路径配置 ## 3. 技术栈 - Python 3.8+ -- DrissionPage库 -- JSON/YAML用于配置文件格式 +- DrissionPage库(用于浏览器自动化) +- JSON用于配置文件格式 +- Python标准库logging(用于日志记录) ## 4. 项目结构 ``` autoLogon/ -├── config.py # 配置文件处理模块 -├── login_manager.py # 登录管理模块 -├── cookie_handler.py # Cookies处理模块 -├── main.py # 主程序入口 -├── config.json # 配置文件(存储网站和cookies信息) -├── requirements.txt # 依赖包列表 -└── README.md # 项目说明文档 +├── main.py # 应用主入口 +├── login_manager.py # 登录管理器 +├── config.py # 配置管理器 +├── logger_config.py # 日志配置 +├── config.json # 配置文件 +├── requirements.txt # 依赖列表 +├── README.md # 项目说明文档 +└── log/ # 日志文件夹(自动创建) ``` ## 5. 模块设计 -### 5.1 配置文件处理模块 (config.py) +### 5.1 配置管理器 (config.py) -**功能**:负责读取和写入配置文件中的网站地址和cookies信息 +**功能**:负责加载、保存和管理应用配置,包括网站列表、浏览器路径等信息。 -**主要函数**: -- `load_config(file_path)`: 加载配置文件 -- `save_config(config_data, file_path)`: 保存配置文件 +**主要类和方法**: +- `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 Cookies处理模块 (cookie_handler.py) +### 5.2 登录管理器 (login_manager.py) -**功能**:负责cookies的管理,包括解析、转换和保存 +**功能**:负责浏览器的初始化、网站登录、cookies管理和会话维护。 -**主要函数**: -- `parse_cookies(cookie_str)`: 解析cookies字符串为字典格式 -- `cookies_to_str(cookies_dict)`: 将cookies字典转换为字符串 -- `save_cookies(site_url, cookies, config_manager)`: 保存网站的cookies到配置文件 +**主要类和方法**: +- `LoginManager`: 登录管理类 + - `__init__()`: 初始化登录管理器 + - `login(site_url, cookies=None)`: 登录网站,支持设置cookies + - `maintain_login(duration=120)`: 保持登录状态指定时间 + - `get_cookies()`: 获取当前页面的cookies + - `close()`: 关闭浏览器页面 -### 5.3 登录管理模块 (login_manager.py) +### 5.3 日志配置器 (logger_config.py) -**功能**:负责网站的登录和维护登录状态 +**功能**:设置全局日志记录器,支持文件和控制台双重输出。 -**主要函数**: -- `login_to_site(browser, site_url, cookies)`: 使用提供的cookies登录网站 -- `verify_login(browser)`: 验证是否登录成功 -- `maintain_session(browser, duration=120)`: 保持登录状态指定时间 +**主要类和方法**: +- `LoggerConfig`: 日志配置类 + - `setup_logger(log_level=logging.INFO)`: 设置日志记录器 +- `global_logger`: 全局日志记录器实例 ### 5.4 主程序模块 (main.py) -**功能**:程序入口,协调各模块工作 +**功能**:应用主入口,协调各模块工作流程。 + +**主要类和方法**: +- `AutoLoginApp`: 自动登录应用主类 + - `__init__()`: 初始化自动登录应用 + - `run()`: 运行自动登录应用,执行完整的登录流程 **主要流程**: -1. 初始化配置管理器 +1. 初始化配置管理器和登录管理器 2. 加载配置文件 -3. 初始化浏览器 -4. 遍历每个网站配置 -5. 调用登录管理模块登录网站 -6. 保持登录状态 -7. 更新并保存cookies -8. 关闭浏览器 +3. 遍历处理每个网站配置 + - 获取网站URL和cookies信息 + - 登录网站 + - 保持登录状态指定时间 + - 获取并更新cookies +4. 保存更新后的配置到文件 +5. 关闭浏览器资源 ## 6. 配置文件格式 (JSON) ```json { - "sites": [ + "browser_path": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", + "sites": [ + { + "name": "网站名称", + "url": "网站URL", + "duration": 30, + "cookies": [ { - "name": "网站A", - "url": "https://example.com", - "cookies": { - "cookie1": "value1", - "cookie2": "value2" - } - }, - { - "name": "网站B", - "url": "https://example2.com", - "cookies": { - "cookie3": "value3", - "cookie4": "value4" - } + "name": "cookie名称", + "value": "cookie值", + "domain": "域名", + "path": "/", + "expires": 0, + "secure": false, + "httpOnly": false } - ] + ] + } + ] } ``` +**配置项说明**: +- `browser_path`: 浏览器可执行文件路径(可选) +- `sites`: 网站配置列表 + - `name`: 网站名称 + - `url`: 网站URL + - `duration`: 保持登录状态的时间(秒),默认30秒 + - `cookies`: cookies列表,每个cookie包含完整信息(name, value, domain等) +``` + ## 7. 依赖安装 ```bash -pip install drissionpage +pip install -r requirements.txt +``` + +requirements.txt内容: +``` +drissionpage ``` ## 8. 实现步骤 1. 创建项目目录结构 -2. 编写配置文件处理模块 -3. 编写Cookies处理模块 -4. 编写登录管理模块 -5. 编写主程序模块 -6. 创建配置文件示例 +2. 编写日志配置模块 (logger_config.py) +3. 编写配置管理器模块 (config.py) +4. 编写登录管理器模块 (login_manager.py) +5. 编写主程序模块 (main.py) +6. 创建配置文件示例 (config.json) 7. 测试各个模块 8. 整合测试 ## 9. 注意事项 -- 确保使用正确的cookies格式 -- 处理可能的登录失败情况 -- 考虑网站的反爬机制 -- 妥善保存配置文件,避免敏感信息泄露 +- 确保使用正确的cookies格式,支持列表格式 +- 处理可能的登录失败情况,程序有完整的异常处理 +- 考虑网站的反爬机制,避免频繁操作 +- 妥善保存配置文件,cookies可能包含敏感信息 - 处理网络异常和超时情况 +- 确保正确配置浏览器路径,默认为Edge浏览器 +- 程序运行时需要有足够权限启动浏览器 ## 10. 扩展功能建议 -- 添加日志记录功能 - 实现登录失败重试机制 - 添加多线程或异步支持以提高效率 - 实现定时任务功能 -- 添加GUI界面便于操作 \ No newline at end of file +- 添加GUI界面便于操作 +- 添加cookies加密存储功能 +- 实现更智能的登录验证机制 +- 添加多浏览器支持 +- 实现命令行参数解析功能 \ No newline at end of file