移除监控报告功能,清理日志输出
This commit is contained in:
+148
-40
@@ -10,7 +10,7 @@ from logger import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
NOTIFY_TIMES = [6, 22]
|
||||
NOTIFY_TIMES = [6, 21]
|
||||
STATE_FILE = "notify_state.json"
|
||||
|
||||
|
||||
@@ -39,7 +39,8 @@ def save_notify_state(state: dict):
|
||||
|
||||
def should_send_notification(user_name: str) -> bool:
|
||||
"""判断是否应该发送通知"""
|
||||
return False
|
||||
# 去掉时间限制,每次都发送通知
|
||||
return True
|
||||
|
||||
|
||||
def mark_notification_sent(user_name: str):
|
||||
@@ -78,7 +79,7 @@ class CookieMonitor:
|
||||
user_config: 用户配置字典
|
||||
"""
|
||||
user_name = user_config.get('name', '未知用户')
|
||||
logger.info(f"{'='*20} 开始处理用户: {user_name} {'='*20}")
|
||||
logger.info(f"开始处理用户: {user_name}")
|
||||
|
||||
websites = user_config.get('websites', [])
|
||||
|
||||
@@ -101,10 +102,8 @@ class CookieMonitor:
|
||||
}
|
||||
|
||||
try:
|
||||
logger.info(f"步骤1: 从本地 cookie_data.json 读取用户 cookies")
|
||||
local_cookies = self.cookie_data_manager.get_user_cookies(user_name)
|
||||
|
||||
logger.info(f"步骤1.5: 从 Cookie Cloud 获取所有 cookies")
|
||||
|
||||
cookie_cloud_config = user_config.get('cookie_cloud', {})
|
||||
cookie_cloud = CookieCloud(
|
||||
api_url=cookie_cloud_config.get('api_url', ''),
|
||||
@@ -112,33 +111,150 @@ class CookieMonitor:
|
||||
password=cookie_cloud_config.get('password', '')
|
||||
)
|
||||
all_cookies = cookie_cloud.get_cookies()
|
||||
total_domains = len(all_cookies)
|
||||
total_cookies = sum(len(c) for c in all_cookies.values())
|
||||
logger.info(f"获取到 {total_domains} 个域名,共 {total_cookies} 个 cookie")
|
||||
|
||||
logger.info(f"步骤2: 初始化浏览器")
|
||||
browser.init_browser()
|
||||
|
||||
logger.info(f"步骤3: 依次验证各网站登录状态")
|
||||
for website in websites:
|
||||
result = self.process_website(
|
||||
user_name=user_name,
|
||||
website_config=website,
|
||||
browser=browser,
|
||||
all_cookies=all_cookies,
|
||||
local_cookies=local_cookies
|
||||
)
|
||||
user_results['websites'].append(result)
|
||||
login_failed = False
|
||||
failed_website = None
|
||||
|
||||
if result['success']:
|
||||
# 初始流程:逐个网站验证,使用本地cookie
|
||||
for website in websites:
|
||||
website_name = website.get('name', '未知网站')
|
||||
url = website.get('url', '')
|
||||
parsed = urlparse(url)
|
||||
domain = parsed.netloc
|
||||
|
||||
domain_cookies = []
|
||||
for cookie_domain, cookie_data in local_cookies.items():
|
||||
clean_domain = cookie_domain.lstrip('.')
|
||||
if domain in clean_domain or clean_domain in domain:
|
||||
if isinstance(cookie_data, dict):
|
||||
cookies = cookie_data.get('cookies', [])
|
||||
elif isinstance(cookie_data, list):
|
||||
cookies = cookie_data
|
||||
else:
|
||||
cookies = []
|
||||
domain_cookies.extend(cookies)
|
||||
|
||||
if domain_cookies:
|
||||
success_count = browser.import_cookies(domain_cookies, domain)
|
||||
|
||||
login_check_selector = website.get('login_check_selector', '')
|
||||
success_text = website.get('success_text', '')
|
||||
|
||||
login_success = browser.verify_login(
|
||||
url=url,
|
||||
check_selector=login_check_selector,
|
||||
success_text=success_text
|
||||
)
|
||||
|
||||
if login_success:
|
||||
current_cookies = browser.get_cookies()
|
||||
if current_cookies:
|
||||
self.cookie_data_manager.save_user_cookies(
|
||||
user_name=user_name,
|
||||
cookies=current_cookies,
|
||||
url=url,
|
||||
website_name=website_name
|
||||
)
|
||||
|
||||
user_results['websites'].append({
|
||||
'name': website_name,
|
||||
'url': url,
|
||||
'success': True,
|
||||
'error': ''
|
||||
})
|
||||
user_results['success_count'] += 1
|
||||
else:
|
||||
user_results['fail_count'] += 1
|
||||
|
||||
login_failed = True
|
||||
failed_website = website
|
||||
break
|
||||
|
||||
# 错误处理机制:如果任何一个网站登录失败
|
||||
if login_failed:
|
||||
browser.close()
|
||||
|
||||
browser = BrowserManager(
|
||||
browser_type=browser_config.get('type', 'edge'),
|
||||
headless=browser_config.get('headless', False)
|
||||
)
|
||||
browser.init_browser()
|
||||
|
||||
relevant_cookies = []
|
||||
|
||||
target_domains = []
|
||||
for website in websites:
|
||||
url = website.get('url', '')
|
||||
if url:
|
||||
parsed = urlparse(url)
|
||||
target_domains.append(parsed.netloc)
|
||||
|
||||
for domain_cookies in all_cookies.values():
|
||||
if isinstance(domain_cookies, dict):
|
||||
cookies = domain_cookies.get('cookies', [])
|
||||
elif isinstance(domain_cookies, list):
|
||||
cookies = domain_cookies
|
||||
else:
|
||||
cookies = []
|
||||
|
||||
for cookie in cookies:
|
||||
cookie_domain = cookie.get('domain', '')
|
||||
if cookie_domain:
|
||||
clean_cookie_domain = cookie_domain.lstrip('.')
|
||||
for target_domain in target_domains:
|
||||
clean_target_domain = target_domain.lstrip('.')
|
||||
if clean_cookie_domain in clean_target_domain or clean_target_domain in clean_cookie_domain:
|
||||
relevant_cookies.append(cookie)
|
||||
break
|
||||
|
||||
if relevant_cookies:
|
||||
browser.import_cookies(relevant_cookies, domain='')
|
||||
|
||||
user_results['websites'] = []
|
||||
user_results['success_count'] = 0
|
||||
user_results['fail_count'] = 0
|
||||
|
||||
for website in websites:
|
||||
website_name = website.get('name', '未知网站')
|
||||
url = website.get('url', '')
|
||||
login_check_selector = website.get('login_check_selector', '')
|
||||
success_text = website.get('success_text', '')
|
||||
|
||||
login_success = browser.verify_login(
|
||||
url=url,
|
||||
check_selector=login_check_selector,
|
||||
success_text=success_text
|
||||
)
|
||||
|
||||
if login_success:
|
||||
current_cookies = browser.get_cookies()
|
||||
if current_cookies:
|
||||
self.cookie_data_manager.save_user_cookies(
|
||||
user_name=user_name,
|
||||
cookies=current_cookies,
|
||||
url=url,
|
||||
website_name=website_name
|
||||
)
|
||||
|
||||
user_results['websites'].append({
|
||||
'name': website_name,
|
||||
'url': url,
|
||||
'success': True,
|
||||
'error': ''
|
||||
})
|
||||
user_results['success_count'] += 1
|
||||
else:
|
||||
user_results['websites'].append({
|
||||
'name': website_name,
|
||||
'url': url,
|
||||
'success': False,
|
||||
'error': '登录状态验证失败'
|
||||
})
|
||||
user_results['fail_count'] += 1
|
||||
|
||||
self.all_results.append(user_results)
|
||||
self._print_summary(user_name, user_results['websites'])
|
||||
|
||||
logger.info(f"\n检查用户 {user_name} 是否需要发送通知")
|
||||
if should_send_notification(user_name):
|
||||
self._send_user_notification(user_results)
|
||||
|
||||
@@ -304,44 +420,38 @@ class CookieMonitor:
|
||||
notifier = create_notification_manager(notification_config)
|
||||
|
||||
if not notifier:
|
||||
logger.warning(f"用户 {user_name} 未配置通知")
|
||||
return
|
||||
|
||||
success_count = user_result['success_count']
|
||||
fail_count = user_result['fail_count']
|
||||
|
||||
title = f"【Cookie监控】{user_name} - 成功{success_count} 失败{fail_count}"
|
||||
title = f"Cookie登录"
|
||||
|
||||
content_lines = [
|
||||
f"**{user_name} Cookie监控报告**",
|
||||
f"**{user_name} Cookie登录报告**",
|
||||
f"",
|
||||
f"监控时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
|
||||
f"登录时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
|
||||
f"成功: {success_count} 个网站",
|
||||
f"失败: {fail_count} 个网站",
|
||||
f"",
|
||||
]
|
||||
|
||||
for website in user_result['websites']:
|
||||
status = "✓ 成功" if website['success'] else f"✗ 失败: {website['error']}"
|
||||
content_lines.append(f" {website['name']}: {status}")
|
||||
status = "成功" if website['success'] else f"失败: {website['error']}"
|
||||
content_lines.append(f"- {website['name']}: {status}")
|
||||
|
||||
content = "\n".join(content_lines)
|
||||
|
||||
logger.info(f"\n发送用户通知: {user_name}")
|
||||
logger.info(f"Title: {title}")
|
||||
|
||||
if notifier.send(title, content):
|
||||
logger.info(f"✓ 用户 {user_name} 通知发送成功")
|
||||
mark_notification_sent(user_name)
|
||||
else:
|
||||
logger.error(f"✗ 用户 {user_name} 通知发送失败")
|
||||
logger.error(f"用户 {user_name} 通知发送失败")
|
||||
|
||||
|
||||
|
||||
def run(self):
|
||||
"""运行监控"""
|
||||
logger.info("="*50)
|
||||
logger.info("Cookie 监控开始")
|
||||
logger.info(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
logger.info("="*50)
|
||||
|
||||
users = self.config_manager.get_users()
|
||||
|
||||
@@ -355,9 +465,7 @@ class CookieMonitor:
|
||||
except Exception as e:
|
||||
logger.error(f"处理用户失败: {e}")
|
||||
|
||||
logger.info("\n" + "="*50)
|
||||
logger.info("Cookie 监控结束")
|
||||
logger.info("="*50)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
Reference in New Issue
Block a user