update at 2025-10-26 10:24:17
This commit is contained in:
22
README.md
22
README.md
@@ -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`:关键实现细节记录;
|
||||
|
||||
Reference in New Issue
Block a user