• v1.2.0 36f253374e

    v1.2.0 Stable

    gavin released this 2025-10-26 10:44:35 +08:00 | 0 commits to main since this release

    新增: macOS 短信自动读取 自动回填验证码 智能降级策略 日志可观测性

    亮点

    1. macOS 短信自动读取:新增 src/sms/douban-code.ts 模块,基于 better-sqlite3 读取 ~/Library/Messages/chat.db,自动捕获最新“豆瓣网”验证码短信。
    2. 自动回填验证码:登录流程会在成功获取验证码后自动填充 #code 输入框,提升一次性登录体验。
    3. 智能降级策略:若未授予完全磁盘访问权限或数据库被占用,脚本会输出原因并回退到命令行输入,保证流程不中断。
    4. 日志可观测性:短信阶段新增 [短信读取] 日志前缀,帮助定位权限、解析或读取失败的问题。

    兼容性要求

    • 仅支持 macOS,需为运行脚本的终端(Terminal/iTerm2/VS Code)授予“完全磁盘访问权限”并重启终端。
    • 新增依赖 better-sqlite3@^12.4.1(同步 API,零依赖运行),以及类型声明 @types/better-sqlite3
    • 保留手动输入验证码流程,Windows/Linux 用户或未授权情况下仍可照常使用。

    目录与配置变更

    • 新增 src/sms/ 目录存放短信读取模块。
    • src/login.ts 在滑块验证后自动调用短信读取逻辑,并等待验证码输入框可见。
    • README, VERSION, ARCHITECTURE, IMPLEMENTATION, QUICKSTART, CHANGELOG 等文档同步至 v1.2.0,增加权限配置说明。

    升级指南

    npm install
    
    1. 授权完全磁盘访问:系统设置 → 隐私与安全性 → 完全磁盘访问权限 → 添加终端并勾选;
    2. 重启终端或 VS Code;
    3. 运行 npm run login 体验自动读取验证码。
    Downloads
  • v1.0.0 3eae607591

    gavin released this 2025-10-24 22:28:19 +08:00 | 4 commits to main since this release

    滑块验证码需人工处理,本项目不再尝试自动识别。

    • 启动 Chromium 浏览器并访问豆瓣登录页;
    • 自动填写手机号,触发短信验证码;
    • 控制台提示用户完成页面内的额外验证(如滑块)并输入短信验证码;
    • 登录成功后将 Cookie 状态保存到 ~/douban-cookie.json,后续运行可直接复用。
    npm install
    npx playwright install chromium
    

    需要 Node.js ≥ 18。Playwright 会自动下载 Chromium,首次运行请确保网络可访问 Playwright CDN。

    1. 设置手机号环境变量并运行登录脚本:

      DOUBAN_PHONE=13800000000 npm run login
      
    2. 浏览器会自动打开豆瓣登录页,脚本完成以下操作:

      • 填入手机号并点击「获取验证码」;
      • 控制台提示等待页面验证(若出现滑块,请手动完成);
      • 控制台等待用户输入短信验证码;
      • 验证码提交成功后,脚本将登录态写入 ~/douban-cookie.json 并退出。
    3. 下次运行会优先尝试加载该 Cookie 文件,若仍在有效期内可直接登录。

    命令 说明
    npm run login 启动豆瓣登录流程并保存 Cookie

    当前脚本仅使用一个环境变量:

    变量名 说明 是否必填 默认值
    DOUBAN_PHONE 登录手机号(大陆) 必填 -

    若需要更改 Cookie 保存位置,可在 src/login.ts 中调整 COOKIES_PATH 定义。

    1. 读取 DOUBAN_PHONE,未提供则直接退出;
    2. 若存在 ~/douban-cookie.json,加载后访问登录页并校验登录态;
    3. 如未登录,执行短信验证码流程,期间需手动处理页面可能出现的滑块或图形验证码;
    4. 用户在终端输入收到的短信验证码;
    5. 验证通过后,将当前浏览器上下文的 storageState 写入 ~/douban-cookie.json
    • 登录后仍提示手机号未填写? 确认 Playwright 浏览器窗口焦点在页面内,避免浏览器阻止自动填充。
    • 提示滑块验证但脚本无动作? 脚本已停止自动滑块功能,请在浏览器中手动拖动滑块完成验证。
    • Cookie 未生成? 只有当脚本确认登录成功时才会写入 Cookie。若终端未看到 “登录成功,Cookies 已保存…” 的日志,请检查短信验证码是否正确。
    DOUBAN_AUTO_SLIDER=1 DOUBAN_PHONE=13800138000 npm run login
    
    npm run slider
    
    • src/login.ts:主登录流程,负责 Cookie 复用、短信登录以及滑块自动化;
    • login.md:原始业务需求与操作步骤;
    • block.md:滑块破解思路(Python 版)与 TypeScript 脚本参考;
    • typescript-spec.md:团队 TypeScript 编码规范与示例。

    本项目仅用于功能验证和学习,使用时请遵守目标网站的服务条款。

    Downloads