9e0644095f88292f80f6ccd9424c3cde41a97d6d
移除 Playwright 浏览器自动化,改用 passport/SSO HTTP 接口获取二维码与轮询登录;后端模块化拆分,前端替换为 Vue3 SPA。 Co-authored-by: Cursor <cursoragent@cursor.com>
抖音 Cookie 一键提取
扫码登录抖音后,自动导出 JSON 格式 Cookie。
原理
采用 HTTP SSO 接口(无需 Playwright / 浏览器):
- 注册
ttwid设备标识 - 调用
passport/web/get_qrcode或sso.douyin.com/get_qrcode获取二维码 - 轮询
check_qrconnect检测扫码状态 - 确认后跟随
redirect_url完成会话,导出 Cookie
若服务器 IP 被抖音风控(错误码 4031),请配置住宅代理 API。
与其他方案对比
| 方案 | 说明 | 本项目 |
|---|---|---|
| HTTP SSO | 逆向 passport 接口,轻量快速 | 当前采用 |
| Playwright | 模拟浏览器,重、易碎 | 已移除 |
| 开放平台 OAuth | 需注册应用,返回 access_token 非网页 Cookie | 不适用 |
环境要求
- Python 3.9+
- Node.js 18+(仅构建前端时需要)
安装
pip install -r requirements.txt
cd frontend
npm install
npm run build
运行
py -3 app.py
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
5001 |
服务端口 |
LOGIN_TIMEOUT |
600 |
登录超时(秒) |
QR_POLL_INTERVAL |
2 |
建议前端轮询间隔 |
DOUYIN_AID |
6383 |
抖音 Web 应用 ID |
DOUYIN_SERVICE |
https://www.douyin.com |
SSO service 参数 |
API
| 接口 | 说明 |
|---|---|
POST /api/start_qr |
获取二维码(HTTP SSO) |
GET /api/check_login |
轮询扫码/登录状态 |
POST /api/reset |
重置会话 |
GET /api/debug |
SSO 轮询调试信息 |
POST /api/test_proxy |
测试代理 |
项目结构
app.py
backend/
sso/qr_login.py # HTTP 扫码登录核心
cookies.py # Cookie 检测
routes/ # API + SPA
frontend/ # Vue 3 前端
Description
Languages
Python
42.3%
Vue
40.7%
CSS
12.4%
JavaScript
4.1%
HTML
0.5%