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

60 lines
3.1 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` 中的路径。
## 开发脚本
- `src/login.ts`:主登录流程,负责 Cookie 复用、短信登录以及滑块自动化;
- `src/slider.ts`:滑块模拟工具,既提供通用函数,也能独立运行;
- `login.md`:原始业务需求与操作步骤;
- `block.md`滑块破解思路Python 版)与 TypeScript 脚本参考;
- `typescript-spec.md`:团队 TypeScript 编码规范与示例。
## 许可
本项目仅用于功能验证和学习,使用时请遵守目标网站的服务条款。