home1018a

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