Skip to content

v0.9.0 — Chrome/Edge 浏览器授权自动登录

Choose a tag to compare

@github-actions github-actions released this 31 Jul 22:18
· 11 commits to main since this release

leetcode-local-cli 0.9.0 完整实现日常 Chrome 与 Edge 的显式授权自动登录闭环,并集中发布本地测试、编码边界和提交退出码的可靠性改进。

自动化登录

  • lc login 默认依次尝试日常 Chrome、日常 Edge 和隐藏输入的手动 Cookie;--browser chrome|edge 可以固定单一浏览器。
  • CLI 自动打开 chrome://inspect/#remote-debuggingedge://inspect/#remote-debugging 与 LeetCode,等待用户明确允许当前浏览器实例调试。
  • 浏览器未运行、DevToolsActivePort 指向已关闭实例、浏览器正在启动或后台实例返回 403 时,CLI 自动打开一次可见窗口,并在 180 秒总时限内恢复连接,不会因第一次启动竞态提前切换浏览器。
  • Chrome 与 Edge 共用受限的 approval-only WebSocket 实现;连接前验证浏览器身份与本机回环端点,只请求 https://leetcode.cn/ 的 Cookie,并只保留 LEETCODE_SESSIONcsrftoken
  • Cookie 在线验证成功后才原子保存 Session;CLI 不读取或解密浏览器 Cookie 数据库,不创建专用 profile,也不关闭日常浏览器。
  • 保留 --devtools-port 作为明确浏览器的高级入口;删除无人使用的实验参数 --chrome-debug-port
  • 删除旧专用 Chrome 生命周期、固定 9222 自动启动模型、browser-cookie3 及其传递依赖。

本地测试

  • lc test 自动发现 Solution 的首个公开实例方法,交互接受 name = value 的安全 Python 字面量参数并展示实际返回值与调用后参数。
  • 每组使用新的 Solution 实例和独立的默认 1 秒超时;异常或超时受控显示,超时后重启 worker。
  • lc test --stdin 提供 JSON Lines 输入输出,便于 AI 与 CI 使用,不创建 cases 文件。
  • 没有输入、参数错误、执行异常或超时返回退出码 1;正常执行返回 0,但不把“能够运行”描述为算法正确。

可靠性与安全

  • lc solve 生成的待实现方法使用显式 NotImplementedError,避免空模板以 None 假通过并消除缺少返回值的类型错误。
  • solution.py 只接受 UTF-8/UTF-8 BOM;testdoctorsubmit 对非法编码返回受控错误,不展示 UnicodeDecodeError traceback。
  • lc submit 只有明确 Accepted 返回退出码 0;Wrong Answer、Time Limit Exceeded、未知状态和轮询超时返回 1。
  • 浏览器、远端和本地的不可信文本继续按纯文本渲染,Cookie 不进入终端、测试报告或仓库。

兼容性说明

  • 当前仍只正式支持 LeetCode 中文站和 Python3 提交。
  • Session 继续保存在默认工作区的 .leetcode_local_cli/session.json,它包含明文 Cookie,不能提交、同步或上传。
  • --chrome-debug-port 使用者应改为 --browser chrome --devtools-port <端口>

验证

  • Windows 完成 Ruff、Pyright、288 passed/13 skipped 的完整测试、wheel/sdist 构建和 CLI 入口检查。
  • Chrome 150.0.7871.187 与 Edge 150.0.4078.105 均完成用户明确授权的真实登录验收,Cookie 值未进入输出或报告。