53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""打开带持久化配置的 Edge 窗口,等待用户在 Halo 后台完成登录。
|
|
|
|
登录成功后会话保存在 profile 目录,供 scan-dark.py 复用。
|
|
"""
|
|
import argparse
|
|
import pathlib
|
|
import sys
|
|
import time
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
DEFAULT_PROFILE = pathlib.Path(__file__).parent / ".browser-profile"
|
|
LOGIN_URL = "https://blog.liuhangyv.top/console/login"
|
|
TIMEOUT_S = 280
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description="登录 Halo 后台并保存会话")
|
|
parser.add_argument("--profile", default=str(DEFAULT_PROFILE))
|
|
args = parser.parse_args()
|
|
|
|
with sync_playwright() as p:
|
|
ctx = p.chromium.launch_persistent_context(
|
|
args.profile,
|
|
channel="msedge",
|
|
headless=False,
|
|
viewport={"width": 1600, "height": 950},
|
|
)
|
|
page = ctx.pages[0] if ctx.pages else ctx.new_page()
|
|
page.goto(LOGIN_URL)
|
|
print("浏览器窗口已打开,请在其中登录 Halo 后台...", flush=True)
|
|
|
|
deadline = time.time() + TIMEOUT_S
|
|
while time.time() < deadline:
|
|
try:
|
|
url = page.url
|
|
except Exception:
|
|
print("检测到窗口被关闭", flush=True)
|
|
return 2
|
|
if "/console" in url and "/login" not in url:
|
|
time.sleep(3)
|
|
print(f"检测到登录成功: {url}", flush=True)
|
|
ctx.close()
|
|
return 0
|
|
time.sleep(2)
|
|
|
|
print("等待超时,未检测到登录", flush=True)
|
|
ctx.close()
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |