Files
AutoLogon/main.py
T
2025-10-18 16:53:51 +08:00

116 lines
4.1 KiB
Python

import time
import json
from typing import Dict, List, Any
from config import ConfigManager
from login_manager import LoginManager
from logger_config import global_logger as logger
class AutoLoginApp:
"""
自动登录应用主类 aa
"""
def __init__(self):
"""
初始化自动登录应用
"""
self.config_manager = ConfigManager()
self.login_manager = LoginManager()
def run(self):
"""
运行自动登录应用
"""
logger.info("===== 自动登录应用启动 =====")
# 加载配置
config = self.config_manager.load_config()
sites = config.get('sites', [])
if not sites:
logger.warning("配置中没有设置任何网站,使用默认示例网站")
# 添加默认示例网站
sites = [
{'name': '百度', 'url': 'https://www.baidu.com'},
{'name': '新浪', 'url': 'https://www.sina.com.cn'}
]
# 处理每个网站
for site in sites:
site_name = site.get('name', '未知网站')
site_url = site.get('url', '')
if not site_url:
logger.warning(f"网站 '{site_name}' 的URL为空,跳过")
continue
logger.info(f"处理网站: {site_name} ({site_url})")
# 获取cookies(从配置中)
cookies = []
if 'cookies' in site:
config_cookies = site['cookies']
# 确保cookies是列表格式
if isinstance(config_cookies, dict):
# 直接将字典转换为列表格式
cookies = []
for key, value in config_cookies.items():
cookies.append({
'name': key,
'value': value,
'domain': '',
'path': '/',
'expires': 0,
'secure': False,
'httpOnly': False
})
else:
cookies = config_cookies
logger.info(f"使用配置文件中的 {len(cookies)} 条cookies记录")
# 登录网站
login_success = self.login_manager.login(site_url, cookies)
if login_success:
logger.info(f"登录网站 '{site_name}' 成功")
# 保持登录状态一段时间,从配置中获取duration值,默认30秒
duration = site.get('duration', 30)
self.login_manager.maintain_login(duration=duration) # 保持{duration}秒
# 保持登录状态后获取并更新到配置中的cookies
new_cookies = self.login_manager.get_cookies()
if new_cookies:
# 更新当前site对象的cookies
site['cookies'] = new_cookies
logger.info(f"已更新网站 '{site_name}' 的cookies到配置中,共 {len(new_cookies)} 条记录")
else:
logger.error(f"登录网站 '{site_name}' 失败")
# 关闭当前浏览器页面,准备下一个网站
self.login_manager.close()
time.sleep(2) # 间隔2秒再处理下一个网站
# 保存更新后的配置到config.json
try:
self.config_manager.save_config(config)
logger.info("已将更新后的cookies保存到config.json文件中")
except Exception as e:
logger.error(f"保存配置文件时发生错误: {e}")
logger.info("===== 所有网站处理完成 =====")
if __name__ == "__main__":
app = AutoLoginApp()
try:
app.run()
except KeyboardInterrupt:
logger.info("程序被用户中断")
except Exception as e:
logger.error(f"程序运行时发生错误: {e}")
finally:
# 确保关闭浏览器
app.login_manager.close()