Flow2API Token Updater 是一个轻量级的多账号令牌刷新工具。 支持两种刷新模式:协议刷新(纯 HTTP,无需浏览器)和浏览器刷新(Playwright 持久化上下文)。 优先使用协议刷新,失败时自动回退浏览器模式。
当前版本重点解决三件事:
- 多账号管理
- 单账号级别的 Flow2API 目标覆盖
- 协议刷新 + 浏览器自动登录
- 带图表和近期活动的实时仪表盘(Dashboard)
- 协议刷新:无需浏览器,纯 HTTP 请求刷新 session token(由 Hooper 提供技术方案)
- 智能回退:协议刷新失败时自动回退到浏览器模式,浏览器刷新失败则清除过期 cookies
- 浏览器自动登录:支持自动填写账号密码登录(多语言:中/英/日/韩/西/法/德/葡/俄)
- 运行时轻量:只有在需要登录时才会启动 VNC / Xvfb / noVNC
- Cookie 导入:支持导入 Google cookies 进行协议登录,或导入 labs.google cookies 恢复会话
- 自动转化:浏览器登录成功后自动提取 Google cookies,后续同步自动转为协议刷新
- 智能同步:按最终生效的 Flow2API 地址和令牌分组
- 单账号覆盖:每个 Profile 都可以覆盖目标地址和连接令牌
- 代理支持:每个 Profile 都可以使用独立代理
- 实时仪表盘:优先使用 SSE,失败时自动回退到轮询
- 图表范围切换:6 小时 / 24 小时 / 72 小时 / 7 天
- 内置分析:同步活动、失败原因、目标实例分布
- 每个账号维护一组 Google cookies(
google_cookies字段)。 - 同步时,如果
google_cookies存在,优先使用协议刷新:- 用 curl_cffi 模拟 Chrome TLS 指纹,通过 Google OAuth 流程获取 labs.google session token
- 无需启动浏览器,速度快、资源占用低
- 协议刷新失败时,自动清除过期 cookies 并回退到浏览器刷新:
- 启动 Playwright headless 浏览器,从持久化 Profile 中恢复会话
- 成功后自动提取新的 Google cookies,下次同步恢复协议刷新
- 同步结果分组逻辑:
- 按”最终生效目标地址 + 最终生效令牌”分组
- 先调用 Flow2API 的
check-tokens接口,只刷新需要刷新的 Profile - 如果目标端检查失败,该分组回退到强制同步
| 方式 | 说明 | 自动提取 cookies |
|---|---|---|
| VNC 手动登录 | 通过 noVNC 完成 Google 登录 | 是 |
| 浏览器自动登录 | 配置账号密码后自动登录 | 是 |
| 协议 Cookie 导入 | 导入 Google cookies 直接协议登录 | 直接使用 |
| Labs Cookie 导入 | 导入 labs.google 域名 cookies 恢复会话 | 首次同步时提取 |
git clone https://github.com/genz27/flow2api_tupdater.git
cd flow2api_tupdater
cp .env.example .env至少需要在 .env 中设置以下变量:
ADMIN_PASSWORDFLOW2API_URLCONNECTION_TOKEN
docker compose up -d --build- 管理界面(Admin UI):
http://localhost:8002 - noVNC:
http://localhost:6080/vnc.html
只有在启用并实际使用 VNC 登录时,端口
6080才有意义。
- 打开管理界面。
- 配置全局默认的 Flow2API 地址和连接令牌。
- 创建一个 Profile。
- 点击
Login启动浏览器。 - 在 noVNC 中完成 Google 登录。
- 点击
Close Browser保存当前登录状态。 - 手动执行一次同步,确认账号可用。
- 后续刷新交给定时任务处理。
- 使用浏览器插件(如 Cookie Editor)导出以下两个域名的 cookies:
.google.com域名下的所有 cookiesaccounts.google.com域名下的所有 cookies
- 创建一个 Profile。
- 点击
协议登录,粘贴合并后的 cookies JSON。 - 系统自动通过 OAuth 流程获取 session token,后续同步自动走协议刷新。
提示:两个域名的 cookies 需要合并为一个 JSON 数组导入。
如果某个账号需要同步到另一套 Flow2API 实例:
- 打开该 Profile 的编辑对话框。
- 设置
Flow2API URL override。 - 如果目标实例使用不同令牌,再设置
Connection Token override。 - 保存后,这个 Profile 会优先使用覆盖值。
管理仪表盘包含以下内容:
- 概览指标
- 可切换时间范围的同步活动图表
- 状态分布和账号排行
- 失败原因聚合
- 目标实例分布
- 近期活动流
- 实时连接状态
前端默认优先使用 SSE 获取实时更新; 如果实时流不可用,会自动回退到轻量轮询。
默认的 docker-compose.yml 会挂载以下目录:
./data->/app/dataprofiles.db:账号数据和同步历史config.json:持久化的全局默认配置
./profiles->/app/profiles- Playwright 持久化浏览器 Profile 数据
./logs->/app/logs- 运行日志
应用当前实际使用的环境变量如下:
| 变量名 | 说明 | 默认值 |
|---|---|---|
ADMIN_PASSWORD |
管理界面密码 | 空 |
API_KEY |
对外 API 的访问密钥 | 空 |
FLOW2API_URL |
全局默认 Flow2API 地址 | http://host.docker.internal:8000 |
CONNECTION_TOKEN |
全局默认 Flow2API 连接令牌 | 空 |
REFRESH_INTERVAL |
定时刷新间隔,单位分钟 | 60 |
SESSION_TTL_MINUTES |
管理端会话 TTL,0 表示永不过期 |
1440 |
CONFIG_FILE |
持久化全局配置文件路径 | /app/data/config.json |
API_PORT |
HTTP 监听端口 | 8002 |
ENABLE_VNC |
是否启用 VNC 登录入口,1/0 |
1 |
VNC_PASSWORD |
noVNC / x11vnc 密码 | flow2api |
最终生效目标按以下顺序决定:
- Profile 级别的
flow2api_url - 全局
FLOW2API_URL
连接令牌按以下顺序决定:
- Profile 级别的
connection_token_override - 全局
CONNECTION_TOKEN
以下接口由 Web 仪表盘使用:
POST /api/loginPOST /api/logoutGET /api/auth/checkGET /api/statusGET /api/dashboard?hours=6|24|72|168GET /api/dashboard/stream?session_token=...GET /api/configPOST /api/configGET /api/profilesPOST /api/profilesGET /api/profiles/{id}PUT /api/profiles/{id}DELETE /api/profiles/{id}POST /api/profiles/{id}/launchPOST /api/profiles/{id}/closePOST /api/profiles/{id}/check-loginPOST /api/profiles/{id}/import-cookiesGET /api/profiles/{id}/export-cookies?kind=session|google(默认导出google)POST /api/profiles/{id}/extractPOST /api/profiles/{id}/syncPOST /api/sync-all
以下接口需要在请求头中携带 X-API-Key:
GET /v1/profilesGET /v1/profiles/{id}/tokenPOST /v1/profiles/{id}/syncGET /health
v3.4 新增了协议刷新能力:
- 协议登录(Cookie 导入 → OAuth 流程 → session token)
- 浏览器登录后自动提取 Google cookies,后续转协议刷新
- 协议刷新失败自动回退浏览器
- 浏览器自动登录多语言支持(日/韩/西/法/德/葡/俄)
login_method字段标识登录方式- UI 全面重构
升级步骤:
- 备份
data/和profiles/。 - 拉取最新代码。
- 重新构建并重启容器(
docker compose up -d --build)。 - 应用会自动创建新字段(
google_cookies、login_method)。 - 已登录的账号下次同步时会自动提取 Google cookies,无需重新登录。
v3.3 新增了以下能力:
- Profile 级目标地址覆盖
- Profile 级连接令牌覆盖
- 同步历史存储
- 实时仪表盘和 SSE 流
- 失败原因聚合
- 目标实例分布
- 仪表盘时间范围筛选
建议按以下步骤升级:
- 备份
data/和profiles/。 - 拉取最新代码。
- 重新构建并重启容器。
- 应用会在需要时自动创建新字段和历史表。
- 重新检查管理界面中的全局默认配置。
- 如果你使用多套 Flow2API 目标,再检查一次各 Profile 的覆盖配置。
说明最终生效的目标配置不完整。请检查:
- 全局默认目标配置
- Profile 级地址覆盖
- Profile 级令牌覆盖
如果某个 Profile 指向另一套 Flow2API 实例,通常也需要为它配置匹配的令牌覆盖。
说明当前保存的浏览器会话已经不可用。可以尝试:
- 通过 VNC 重新登录
- 导入新的 Cookie
- 在再次同步前先执行一次
Check Login
请检查:
ENABLE_VNC=1- 端口
6080已正确映射 - 你确实点击了对应 Profile 的
Login按钮
如果你修改了应用监听端口,也要同时更新 docker-compose.yml 中的端口映射。
MIT