Files
douban-login/VERSION.md
2025-10-26 10:24:17 +08:00

187 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 版本信息
## 当前版本v1.2.0
发布日期2025-10-26
## 主要特性
### 📨 macOS 短信自动读取v1.2.0
- ✅ 基于 `better-sqlite3` 读取 `~/Library/Messages/chat.db` 的最新验证码短信
- ✅ 智能忽略旧消息,仅对新到达的“豆瓣网”验证码进行解析
- ✅ 使用正则解析 `验证码xxxx` 格式,支持 4-6 位验证码
- ✅ 自动回填验证码输入框,失败时即时回退到手动输入
- ⚠️ 仅支持 macOS并需要为终端授予“完全磁盘访问权限”
### 🎯 AI 驱动的滑块验证码自动破解v1.1.0
- ✅ 多策略并行检测暗区域、边缘、颜色量化、LAB 色彩空间)
- ✅ 双滑块精准识别(左侧滑块 + 右侧缺口)
- ✅ 简化的距离计算算法:`距离 = (缺口X - 滑块X) / scaleX`
- ✅ 拟人化滑动轨迹Playwright steps 参数)
- ✅ 自动重试机制(最多 10 次)
- ✅ 可视化调试(红框标注输出到 `output/` 目录)
### 📊 性能指标
- **检测准确率**~70-80%
- **验证成功率**~50%(含重试)
- **平均尝试次数**1-3 次
- **单次检测耗时**~2-3 秒
### 🚀 快速开始
```bash
# 启用自动滑块验证
DOUBAN_AUTO_SLIDER=1 DOUBAN_PHONE=13800138000 npm run login
# 独立测试滑块功能
npm run slider
# 批量复核历史截图
npm run slider -- --pic-dir=noflag
```
## 核心创新
### "两只小鸟距离"原理
v1.1.0 最重要的突破是简化了距离计算算法:
```typescript
// v1.0.0: 需要人工完成滑块
// v1.1.0: 自动计算并拖动
// 双滑块模式(推荐)
const distance = (box2.x - box1.x) / scaleX;
// 单滑块模式(兜底)
const distance = box.x / scaleX;
```
**原理**:就像计算两只小鸟嘴尖的水平距离,直接用右侧缺口的 X 坐标减去左侧滑块的 X 坐标,再除以图像缩放比例,就得到了滑块需要移动的距离。
### 图像缩放优化
- 原始验证码340x191 像素
- 检测图像800x449 像素scaleX ≈ 2.35
- 提高小尺寸滑块的检测精度
### 多策略并行检测
并行运行四种算法,然后 IoU 去重:
1. **暗区域检测**:查找亮度 < 100 的暗色区域
2. **Canny 边缘检测**查找边缘密集区域
3. **颜色量化**K-means 聚类找独特色块
4. **LAB 色彩空间**感知均匀的色彩空间检测
## 文件结构
```mermaid
graph TD
root[src/]
root --> slider_dir[slider/<br/>滑块验证模块]
slider_dir --> slider_detector[detector.ts<br/>主检测器]
slider_dir --> slider_self[detector-self-learning.ts<br/>模板匹配]
slider_dir --> slider_controller[slider-controller.ts<br/>Playwright 集成]
slider_dir --> slider_candidate[candidate-search.ts<br/>多策略检测]
slider_dir --> slider_geometry[geometry.ts<br/>IoU 计算]
slider_dir --> slider_image[image.ts<br/>Sobel 边缘]
root --> sms_dir[sms/<br/>macOS 短信读取模块]
sms_dir --> sms_code[douban-code.ts<br/>解析 chat.db]
root --> noflag[noflag/<br/>原始验证码截图]
root --> output_dir[output/<br/>标注结果]
```
## 依赖项
- **playwright**: ^1.41.1浏览器自动化
- **sharp**: ^0.33.3图像处理
- **better-sqlite3**: ^12.4.1本地 SQLite 查询读取短信
- **typescript**: ^5.4.2
## 环境变量
```bash
DOUBAN_AUTO_SLIDER=1 # 启用自动滑块验证
DOUBAN_PHONE=手机号 # 登录手机号(必填)
```
自动短信读取不需要新增环境变量保持终端前台即可
## 已知限制
1. **图像识别准确率** 70-80%复杂背景或低对比度图片识别率较低
2. **验证成功率** 50%受反爬虫机制影响
3. **仅供学习**请遵守网站服务条款不要用于商业或恶意用途
4. **平台限制**短信自动读取仅适用于 macOS且需为终端授予完全磁盘访问权限
## 相关文档
- [README.md](./README.md) - 项目总览
- [QUICKSTART.md](./QUICKSTART.md) - 快速开始指南
- [CHANGELOG.md](./CHANGELOG.md) - 详细更新日志
- [ARCHITECTURE.md](./ARCHITECTURE.md) - 架构说明
- [IMPLEMENTATION.md](./IMPLEMENTATION.md) - 实现细节
- [src/slider/README.md](./src/slider/README.md) - 滑块模块文档
## 升级指南
### 从 v1.1.0 升级到 v1.2.0
**新增依赖**
```bash
npm install
```
**系统配置**
- macOS 隐私与安全性 完全磁盘访问权限”,添加并勾选运行脚本的终端
- 修改后需重新启动终端或 VS Code
**代码变更**
- `src/login.ts` 自动调用 `waitForDoubanCode` 读取短信
- 新增 `src/sms/` 模块负责解析 `chat.db`
- 读取失败会保留手动输入流程无需额外开关
**回退策略**
- 若不希望开启自动读取可在提示出现时直接手动输入验证码无需修改代码
### 从 v1.0.0 升级到 v1.1.0
**新增依赖**
```bash
npm install
```
**新增环境变量**可选
```bash
export DOUBAN_AUTO_SLIDER=1
```
**新增目录**
- `noflag/`原始验证码截图会自动保存到这里
- `output/`标注结果会自动保存到这里
**无需更改的部分**
- `DOUBAN_PHONE` 环境变量用法不变
- `~/douban-cookie.json` Cookie 文件路径不变
- `npm run login` 命令用法不变
**新增功能**
- 设置 `DOUBAN_AUTO_SLIDER=1` 启用自动滑块验证
- 使用 `npm run slider` 独立测试滑块功能
- 使用 `npm run slider -- --pic-dir=noflag` 批量复核截图
## 下一步计划
- [ ] 支持更多验证码类型点选文字识别
- [ ] 引入机器学习模型提高准确率
- [ ] 优化轨迹模拟降低被识别风险
- [ ] 支持更多网站的滑块验证码
---
**v1.2.0** - AI 滑块 + macOS 短信自动读取让登录更丝滑 🎉