# 版本信息 ## 当前版本: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 自动化的飞跃 🎉