93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# douban-crawler
|
||
|
||
> Playwright + TypeScript 脚本,用于完成豆瓣短信验证码登录,并将登录态持久化到本地 Cookie 文件。滑块验证码需人工处理,本项目不再尝试自动识别。
|
||
|
||
## 功能概览
|
||
|
||
- 启动 Chromium 浏览器并访问豆瓣登录页;
|
||
- 自动填写手机号,触发短信验证码;
|
||
- 控制台提示用户完成页面内的额外验证(如滑块)并输入短信验证码;
|
||
- 登录成功后将 Cookie 状态保存到 `~/douban-cookie.json`,后续运行可直接复用。
|
||
|
||
## 环境准备
|
||
|
||
```bash
|
||
npm install
|
||
npx playwright install chromium
|
||
```
|
||
|
||
需要 Node.js ≥ 18。Playwright 会自动下载 Chromium,首次运行请确保网络可访问 Playwright CDN。
|
||
|
||
## 使用方式
|
||
|
||
1. 设置手机号环境变量并运行登录脚本:
|
||
|
||
```bash
|
||
DOUBAN_PHONE=13800000000 npm run login
|
||
```
|
||
|
||
2. 浏览器会自动打开豆瓣登录页,脚本完成以下操作:
|
||
- 填入手机号并点击「获取验证码」;
|
||
- 控制台提示等待页面验证(若出现滑块,请手动完成);
|
||
- 控制台等待用户输入短信验证码;
|
||
- 验证码提交成功后,脚本将登录态写入 `~/douban-cookie.json` 并退出。
|
||
|
||
3. 下次运行会优先尝试加载该 Cookie 文件,若仍在有效期内可直接登录。
|
||
|
||
## 命令列表
|
||
|
||
| 命令 | 说明 |
|
||
| --------------- | ---------------------------- |
|
||
| `npm run login` | 启动豆瓣登录流程并保存 Cookie |
|
||
|
||
## 可配置项
|
||
|
||
当前脚本仅使用一个环境变量:
|
||
|
||
| 变量名 | 说明 | 是否必填 | 默认值 |
|
||
| -------------- | ---------------- | -------- | ------ |
|
||
| `DOUBAN_PHONE` | 登录手机号(大陆) | 必填 | - |
|
||
|
||
若需要更改 Cookie 保存位置,可在 `src/login.ts` 中调整 `COOKIES_PATH` 定义。
|
||
|
||
## 工作流程说明
|
||
|
||
1. 读取 `DOUBAN_PHONE`,未提供则直接退出;
|
||
2. 若存在 `~/douban-cookie.json`,加载后访问登录页并校验登录态;
|
||
3. 如未登录,执行短信验证码流程,期间需手动处理页面可能出现的滑块或图形验证码;
|
||
4. 用户在终端输入收到的短信验证码;
|
||
5. 验证通过后,将当前浏览器上下文的 `storageState` 写入 `~/douban-cookie.json`。
|
||
|
||
## 常见问题
|
||
|
||
- **登录后仍提示手机号未填写?** 确认 Playwright 浏览器窗口焦点在页面内,避免浏览器阻止自动填充。
|
||
- **提示滑块验证但脚本无动作?** 脚本已停止自动滑块功能,请在浏览器中手动拖动滑块完成验证。
|
||
- **Cookie 未生成?** 只有当脚本确认登录成功时才会写入 Cookie。若终端未看到 “登录成功,Cookies 已保存…” 的日志,请检查短信验证码是否正确。
|
||
|
||
## 声明
|
||
|
||
该项目仅供学习与功能验证,请勿用于违反豆瓣平台服务条款的场景。开发者需自行承担使用风险。
|
||
|
||
```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 编码规范与示例。
|
||
|
||
## 许可
|
||
|
||
本项目仅用于功能验证和学习,使用时请遵守目标网站的服务条款。
|