import os import sys import logging # 配置日志 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) # pip install selenium # 将项目根目录添加到系统路径,确保可以导入 Util 模块 # 注意:PaChongGaoDeKit 位于 Util 目录下 current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.join(current_dir, '..')) from Util.PaChongGaoDeKit import PaChongGaoDeKit def run_login_tool(force=False): """ 运行高德地图 Cookie 获取工具。 :param force: 如果为 True,则跳过 'Cookie 已存在' 的询问,直接开始流程。 :return: Boolean, True 表示获取成功, False 表示失败或取消。 """ logger.info("正在启动高德地图 Cookie 获取工具,使用手机号18686619970+验证码登录即可!") # 默认将 Cookie 保存到项目根目录下的 Json/amap_cookies.json cookie_path = os.path.join(current_dir, '../Json/amap_cookies.json') # 检查 Cookie 文件是否已存在 if os.path.exists(cookie_path) and not force: logger.info(f"提示:检测到已存在 Cookie 文件: {os.path.abspath(cookie_path)}") logger.info("如果您本地的 Cookie 文件没有过期且可以正常使用,则不需要重新生成。") user_choice = input("是否仍要继续运行并重新获取 Cookie?(y/n): ").strip().lower() if user_choice != 'y': logger.info("用户取消操作,程序退出。") return False logger.info("\n" + "-"*60) logger.info("即将开始获取 Cookie,请按照以下步骤操作:") logger.info("1. 程序将自动打开一个 Chrome 浏览器窗口。") logger.info("2. 请在该窗口中完成高德地图账号登录(扫码或账号密码)。") logger.info("3. 登录成功后,保持页面处于控制台或个人中心状态。") logger.info("4. 回到此终端窗口,按下回车键,程序将保存 Cookie 并自动关闭浏览器。") logger.info("-"*60 + "\n") # 初始化工具类,强制开启非无头模式(显示浏览器窗口)以便手动登录 # 确保 Json 目录存在 os.makedirs(os.path.dirname(cookie_path), exist_ok=True) kit = PaChongGaoDeKit(headless=False, cookie_file=cookie_path) try: # 执行登录并保存流程 return kit.login_and_save_cookies() except Exception as e: logger.error(f"执行过程中发生意外错误: {e}") return False finally: # 关闭浏览器资源 kit.close() logger.info("工具运行结束。") if __name__ == "__main__": run_login_tool()