Files
douban-login/README.md
2025-10-24 22:20:23 +08:00

84 lines
3.8 KiB
Markdown
Raw 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.

# 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 编码规范与示例。
## 许可
本项目仅用于功能验证和学习,使用时请遵守目标网站的服务条款。