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

6.4 KiB
Raw Blame History

需求

使用playwrighttypescript实现豆瓣自动登录功能。 登录完成后保存cookies下次登录直接使用cookies自动登录。

信息

登录页面:https://accounts.douban.com/passport/login?source=main 登录账号13357108011要求可配置 cookies保存在~/cookies.json

登录页html

  • 短信登录/注册
  • 密码登录
  • 二维码登录
扫码登录 短信登录/注册
手机号:
+86
验证码:
获取验证码
登录豆瓣
登录出现问题,反馈并刷新
第三方登录:
你的账号存在安全隐患,为保证账号安全,请在常用设备上使用 豆瓣 App App 扫码登录
加载中...
打开 豆瓣 App
扫一扫登录
登录失败 点击刷新
扫描成功!
请在手机上确认登录
返回二维码登录
短信验证登录
### step1: "手机号"框输入手机号(账号),账号可配置 ### step2: 点击"获取验证码"后,弹出滑块验证浮窗。需要等待人工获取登录完成。 ### step3: 获得验证码后,在“验证码”框输入"验证码" ### step4: 点击"登录豆瓣"

实现

项目初始化

npm install
npx playwright install chromium

运行登录脚本

DOUBAN_PHONE=13357108011 npm run login

如需自动尝试滑块验证,可额外开启:

DOUBAN_PHONE=13357108011 \
DOUBAN_AUTO_SLIDER=1 \
npm run login

可选环境变量:

  • DOUBAN_SLIDER_DISTANCE:手动指定拖动距离(像素),若自动测算失败时使用;
  • DOUBAN_SLIDER_OFFSETS:自定义距离微调列表(逗号分隔,默认根据是否自定义距离选择一组偏移进行多次尝试);
  • DOUBAN_SLIDER_HANDLE_SELECTOR / DOUBAN_SLIDER_TRACK_SELECTOR:覆盖默认滑块、轨道选择器;
  • DOUBAN_SLIDER_BG_SELECTOR / DOUBAN_SLIDER_PIECE_SELECTOR:覆盖滑块背景图、拼图块选择器;
  • DOUBAN_SLIDER_TIMEOUT:等待滑块出现的超时时间(毫秒,默认 20000

行为说明

  • 首次运行会在 ~/cookies.json 写入登录成功后的 Cookies后续执行会优先复用该文件自动登录。
  • 如果 cookies 过期或被服务端清理,脚本会自动回退到短信验证码登录流程,并更新 cookies。
  • Playwright 以非无头模式运行,便于观察流程;开启自动滑块时脚本会尝试模拟拖动,失败则仍可手动完成。控制台会提示输入短信验证码。