update at 2025-10-26 10:24:17

This commit is contained in:
douboer
2025-10-26 10:24:17 +08:00
parent bd8da1d56a
commit 06ac359162
14 changed files with 934 additions and 154 deletions

View File

@@ -1,14 +1,15 @@
# douban-crawler
**版本**: v1.1.0
**版本**: v1.2.0
> Playwright + TypeScript 脚本,用于完成豆瓣短信验证码登录,并将登录态持久化到本地 Cookie 文件。**已集成 AI 驱动的滑块验证码自动识别和求解功能**。
> Playwright + TypeScript 脚本,用于完成豆瓣短信验证码登录,并将登录态持久化到本地 Cookie 文件。**已集成 AI 驱动的滑块验证码求解与 macOS 短信自动读取功能**。
## ✨ 核心功能
- 🔐 **自动登录**: 支持短信验证码登录流程
- 🧩 **智能滑块识别**: 基于图像处理算法自动识别和求解滑块验证码
- 🎯 **高成功率**: 采用多策略检测算法暗区检测、边缘检测、颜色量化、LAB色彩空间分析
- 📨 **自动短信读取**: 在 macOS 上读取信息 App 的最新验证码(需开启完全磁盘访问权限)
- 🔄 **自动重试**: 验证失败时自动刷新并重试,最多 10 次
- 📊 **详细日志**: 完整的调试信息和截图保存,便于问题追溯
- 🖼️ **可视化调试**: 自动标注检测到的滑块位置,保存带红框标记的图片
@@ -23,6 +24,15 @@ npx playwright install chromium
需要 Node.js ≥ 18。Playwright 会自动下载 Chromium首次运行请确保网络可访问 Playwright CDN。
> 💡 自动短信读取依赖 macOS 本地 `~/Library/Messages/chat.db`,首次使用请为正在运行脚本的终端授予 **完全磁盘访问权限**。
### macOS 权限配置
1. 打开“系统设置” → “隐私与安全性” → “完全磁盘访问权限”macOS Ventura 及以上Monterey 及更早版本在“系统偏好设置” → “安全性与隐私”)。
2. 点击 `+` 号添加你运行脚本的终端(如 Terminal、iTerm2、VS Code
3. 勾选启用后重新启动该终端,再次运行 `npm run login`
4. 想确认权限是否生效,可在终端执行 `ls ~/Library/Messages/chat.db` 检查是否能够读取。
## 使用方式
1. 设置手机号环境变量并运行登录脚本:
@@ -40,7 +50,7 @@ npx playwright install chromium
3. 浏览器会自动打开豆瓣登录页,脚本完成以下操作:
- 填入手机号并点击「获取验证码」;
- 如果启用了自动滑块验证,会自动检测并滑动;否则等待用户手动完成;
- 控制台等待用户输入短信验证码
- 在 macOS 上轮询“信息”App 的最新短信验证码,成功读取会自动填写;若读取失败则提示手动输入
- 验证码提交成功后,脚本将登录态写入 `~/douban-cookie.json` 并退出。
4. 下次运行会优先尝试加载该 Cookie 文件,若仍在有效期内可直接登录。
@@ -62,12 +72,14 @@ npx playwright install chromium
若需要更改 Cookie 保存位置,可在 `src/login.ts` 中调整 `COOKIES_PATH` 定义。
> 若不希望使用自动短信读取,可在终端手动输入验证码;无需额外配置即可回退。
## 工作流程说明
1. 读取 `DOUBAN_PHONE`,未提供则直接退出;
2. 若存在 `~/douban-cookie.json`,加载后访问登录页并校验登录态;
3. 如未登录,执行短信验证码流程,期间需手动处理页面可能出现的滑块或图形验证码;
4. 用户在终端输入收到的短信验证码
4. 在 macOS 上自动读取短信验证码,读取失败或授权不足时回退到终端输入
5. 验证通过后,将当前浏览器上下文的 `storageState` 写入 `~/douban-cookie.json`。
## 常见问题
@@ -75,6 +87,7 @@ npx playwright install chromium
- **登录后仍提示手机号未填写?** 确认 Playwright 浏览器窗口焦点在页面内,避免浏览器阻止自动填充。
- **自动滑块验证失败?** 系统会提示手动完成,或者尝试不启用自动滑块功能。
- **Cookie 未生成?** 只有当脚本确认登录成功时才会写入 Cookie。若终端未看到 "登录成功Cookies 已保存…" 的日志,请检查短信验证码是否正确。
- **短信读取失败?** 确认已在系统设置中为终端授予“完全磁盘访问权限”,并重新启动终端;或直接在提示后手动输入验证码。
## 滑块验证模块
@@ -126,6 +139,7 @@ npx playwright install chromium
## 开发文档
- `src/login.ts`:主登录流程,负责 Cookie 复用、短信登录以及滑块自动化;
- `src/sms/`macOS 短信读取模块,解析 `chat.db` 自动提取验证码;
- `src/slider/`:滑块验证模块,包含检测、移动等完整功能;
- `ARCHITECTURE.md`:整体架构与流程说明;
- `IMPLEMENTATION.md`:关键实现细节记录;