update at 2025-10-25 23:39:25

This commit is contained in:
douboer
2025-10-25 23:39:25 +08:00
parent 3eae607591
commit bd8da1d56a
51 changed files with 4757 additions and 275 deletions

152
VERSION.md Normal file
View File

@@ -0,0 +1,152 @@
# 版本信息
## 当前版本v1.1.0
发布日期2025-10-25
## 主要特性
### 🎯 AI 驱动的滑块验证码自动破解
- ✅ 多策略并行检测暗区域、边缘、颜色量化、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 色彩空间**感知均匀的色彩空间检测
## 文件结构
```
src/slider/ # 滑块验证模块
├── detector.ts # 主检测器
├── detector-self-learning.ts # 模板匹配
├── slider-controller.ts # Playwright 集成
├── candidate-search.ts # 多策略检测
├── geometry.ts # IoU 计算
└── image.ts # Sobel 边缘检测
noflag/ # 原始验证码截图
output/ # 红框标注结果
```
## 依赖项
- **playwright**: ^1.41.1浏览器自动化
- **sharp**: ^0.33.3图像处理
- **typescript**: ^5.4.2
## 环境变量
```bash
DOUBAN_AUTO_SLIDER=1 # 启用自动滑块验证
DOUBAN_PHONE=手机号 # 登录手机号(必填)
```
## 已知限制
1. **图像识别准确率** 70-80%复杂背景或低对比度图片识别率较低
2. **验证成功率** 50%受反爬虫机制影响
3. **仅供学习**请遵守网站服务条款不要用于商业或恶意用途
## 相关文档
- [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.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.1.0** - 从手动验证到 AI 自动化的飞跃 🎉