v0.9.0 — Chrome/Edge 浏览器授权自动登录
leetcode-local-cli 0.9.0 完整实现日常 Chrome 与 Edge 的显式授权自动登录闭环,并集中发布本地测试、编码边界和提交退出码的可靠性改进。
自动化登录
lc login默认依次尝试日常 Chrome、日常 Edge 和隐藏输入的手动 Cookie;--browser chrome|edge可以固定单一浏览器。- CLI 自动打开
chrome://inspect/#remote-debugging或edge://inspect/#remote-debugging与 LeetCode,等待用户明确允许当前浏览器实例调试。 - 浏览器未运行、
DevToolsActivePort指向已关闭实例、浏览器正在启动或后台实例返回 403 时,CLI 自动打开一次可见窗口,并在 180 秒总时限内恢复连接,不会因第一次启动竞态提前切换浏览器。 - Chrome 与 Edge 共用受限的 approval-only WebSocket 实现;连接前验证浏览器身份与本机回环端点,只请求
https://leetcode.cn/的 Cookie,并只保留LEETCODE_SESSION与csrftoken。 - 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;test、doctor、submit对非法编码返回受控错误,不展示UnicodeDecodeErrortraceback。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与 Edge150.0.4078.105均完成用户明确授权的真实登录验收,Cookie 值未进入输出或报告。