Commit 91a1a1aa by baiquan

feat(service): 优化登录功能并支持清除 cookies

- 在 page_login 函数中添加 clear_cookies 参数,用于控制是否清除浏览器 cookies
- 在 shop.py 中获取任务配置中的 clear_cookies 参数,并传递给 page_login 函数
- 优化 page_login 函数的逻辑,增加刷新页面和检查是否登录成功的过程
parent 41f806b0
......@@ -137,9 +137,10 @@ def perform_login(tab, account, password):
return False
async def page_login(browser_id, max_retries=3):
async def page_login(browser_id, clear_cookies=False):
"""优化的登录主流程"""
# 浏览器初始化
max_retries = 3
for attempt in range(max_retries):
try:
open_result = await openBrowser(browser_id, timeout=30)
......@@ -150,7 +151,8 @@ async def page_login(browser_id, max_retries=3):
co = ChromiumOptions().set_local_port(port)
browser = Chromium(co)
tab = browser.latest_tab
# tab.set.cookies.clear()
if clear_cookies:
tab.set.cookies.clear()
tab.set.load_mode.eager()
tab.listen.start(["account_login/v2/", "captcha/verify", "/aff/check_login", "/loginv1/callback"])
# 访问登录页
......@@ -188,6 +190,9 @@ async def page_login(browser_id, max_retries=3):
break
except Exception as e:
logger.warning(f"登录尝试失败: {e}")
tab.refresh()
if tab.title == "首页":
break
else:
raise AppError("多次登录失败")
......
......@@ -38,6 +38,7 @@ async def syncShop(task: dict = None):
DOMAINS = '.jinritemai.com,.fxg.jinritemai.com,.doudian-sso.jinritemai.com'
logger.info(f"task --> {task}")
browser_default_id = task.get('browser_id', None)
clear_cookies = task.get('clear_cookies', False)
# 如果存在 browser_default_id 则需要进行页面登录
PHPSESSID = ''
for i in range(1, 100):
......@@ -48,7 +49,7 @@ async def syncShop(task: dict = None):
}
if browser_default_id:
try:
PHPSESSID = await page_login(browser_default_id)
PHPSESSID = await page_login(browser_default_id, clear_cookies)
await closeBrowser(browser_default_id)
except Exception as e:
logger.error(f'{browser_default_id}-->页面登录失败:{e}')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment