# douban-crawler 使用 Playwright + TypeScript 实现的豆瓣登录与辅助脚本,主要功能包括: - 通过短信验证码完成豆瓣登录,并持久化 Cookies; - 自动尝试滑块验证,降低人工干预; - 可单独运行的滑块模拟脚本,便于在其它场景复用。 ## 快速开始 ```bash npm install npx playwright install chromium ``` 首次运行登录脚本需要提供手机号: ```bash DOUBAN_PHONE=13357108011 npm run login ``` 若需启用滑块自动化,可增加 `DOUBAN_AUTO_SLIDER=1`,更多环境变量见下文。 ## 脚本说明 | 命令 | 说明 | | -------------------- | ------------------------------- | | `npm run login` | 豆瓣短信登录,复用 `~/cookies.json` | | `npm run slider` | 独立测试滑块验证功能 | ## 配置项 登录流程支持以下环境变量: | 变量名 | 说明 | 默认值 | | ---------------------------------- | ----------------------------------------------------------------------- | ---------------- | | `DOUBAN_PHONE` | 登录手机号(必填) | - | | `DOUBAN_AUTO_SLIDER` | 是否尝试自动完成滑块验证(`1` 表示开启) | `0` | | `DOUBAN_SLIDER_DISTANCE` | 自定义滑块拖动距离(像素);缺省时脚本根据轨道宽度推测 | 自动推测或 200px | | `DOUBAN_SLIDER_OFFSETS` | 距离微调列表(逗号分隔,逐个尝试以校正识别误差) | 自动选择 | | `DOUBAN_SLIDER_HANDLE_SELECTOR` | 覆盖默认滑块按钮选择器 | 内置候选 | | `DOUBAN_SLIDER_TRACK_SELECTOR` | 覆盖默认滑块轨道选择器 | 内置候选 | | `DOUBAN_SLIDER_BG_SELECTOR` | 覆盖滑块背景图选择器 | 内置候选 | | `DOUBAN_SLIDER_PIECE_SELECTOR` | 覆盖滑块拼图块选择器 | 内置候选 | | `DOUBAN_SLIDER_TIMEOUT` | 等待滑块组件出现的超时(毫秒) | 20000 | Cookies 将默认保存到用户主目录下的 `~/cookies.json`,可根据需要修改 `src/login.ts` 中的路径。 ## 滑块验证自动化 本项目集成了滑块验证码自动破解功能,参考了 [crack-slide-captcha](https://github.com/omigo/crack-slide-captcha) 项目。 ### 核心特性 - 🔍 **智能识别**:通过图像处理自动计算滑动距离 - 🎭 **模拟真人**:先快后慢的速度曲线、轨迹抖动、随机反应时间 - 🔄 **多次重试**:支持偏移修正,提高成功率 - ⚙️ **高度可配**:支持自定义选择器、距离、偏移等参数 ### 快速使用 ```bash # 启用自动滑块验证 DOUBAN_AUTO_SLIDER=1 DOUBAN_PHONE=13800138000 npm run login # 独立测试滑块功能 npm run slider ``` 详细说明请查看 [SLIDER.md](./SLIDER.md) ## 开发脚本 - `src/login.ts`:主登录流程,负责 Cookie 复用、短信登录以及滑块自动化; - `src/slider.ts`:滑块验证自动化工具,支持图像识别和轨迹模拟; - `SLIDER.md`:滑块验证详细文档,包含原理、配置和故障排查; - `login.md`:原始业务需求与操作步骤; - `block.md`:滑块破解思路(Python 版)与 TypeScript 脚本参考; - `typescript-spec.md`:团队 TypeScript 编码规范与示例。 ## 许可 本项目仅用于功能验证和学习,使用时请遵守目标网站的服务条款。