ModelScope 保活机制
同理可用于huggingface
概述
通过 playwright-cli 定时自动访问 ModelScope 网页,保持登录状态和会话活跃,避免因长时间未操作导致的登录失效或会话过期。
实现原理
1. 持久化浏览器配置
playwright-cli open --persistent --profile=./modelscope-profile --headed https://modelscope.cn/studios/hqzqaq/QwenPaw
参数
说明
--persistent
使用持久化配置文件,浏览器数据(cookies、localStorage、缓存等)会保存在本地
--profile=./modelscope-profile
指定配置文件目录路径
--headed
以有头模式启动(可见浏览器窗口)
2. 会话保持机制
- Cookies 持久化:登录后生成的 session cookie 会保存在
modelscope-profile目录 - LocalStorage 保持:网站的本地存储数据会被保留
- 缓存复用:浏览器缓存可复用,减少加载时间
3. 保活流程
┌─────────────────┐
│ 定时触发 │
│ (Schedule) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 打开浏览器 │
│ playwright-cli │
│ open --persist│
└────────┬────────┘
│
▼
┌─────────────────┐
│ 访问目标页面 │
│ modelscope.cn │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 等待加载完成 │
│ (等待时间可调) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 关闭浏览器 │
│ playwright-cli │
│ close │
└─────────────────┘
配置步骤
步骤 1:初始化持久化配置(仅需执行一次)
# 手动打开浏览器并登录
playwright-cli open --persistent --profile=./modelscope-profile --headed https://modelscope.cn
# 在打开的浏览器中完成登录操作
# 关闭浏览器
playwright-cli close
步骤 2:创建保活脚本
创建 modelscope-keepalive.sh 脚本:
#!/bin/bash
PROFILE_PATH="./modelscope-profile"
TARGET_URL="https://modelscope.cn/studios/hqzqaq/QwenPaw"
WAIT_TIME=30 # 页面加载后等待秒数
# 打开浏览器并访问目标页面
playwright-cli open --persistent --profile=${PROFILE_PATH} --headed ${TARGET_URL}
# 等待页面加载和保持活跃
sleep ${WAIT_TIME}
# 关闭浏览器
playwright-cli close
步骤 3:设置定时任务
使用 cron 或 Schedule 工具设置定时执行。
使用 cron(每 6 小时执行一次):# 编辑 crontab
crontab -e
# 添加以下行(每天 6:00、12:00、18:00、00:00 执行)
0 0,6,12,18 * * * /path/to/modelscope-keepalive.sh
使用 Schedule 工具(推荐)
参见下方「使用 Schedule 工具」章节。
使用 Schedule 工具
在 Trae SOLO 中使用 Schedule 工具创建定时任务:
创建定时任务
# 在 Trae SOLO 中执行
Schedule.create(
name="ModelScope 保活",
cron_expression="0 0,6,12,18 * * *", # 每 6 小时执行一次
message="使用 playwright-cli 定时访问 ModelScope:
1. 执行命令:playwright-cli open --persistent --profile=./modelscope-profile --headed https://modelscope.cn/studios/hqzqaq/QwenPaw
2. 等待 30 秒
3. 执行命令:playwright-cli close",
timezone="Asia/Shanghai"
)
定时任务管理
操作 命令 查看任务列表Schedule.list()
查看任务详情
Schedule.get(scheduled_task_id)
手动触发执行
Schedule.trigger(scheduled_task_id)
暂停任务
Schedule.pause(scheduled_task_id)
恢复任务
Schedule.resume(scheduled_task_id)
删除任务
Schedule.delete(scheduled_task_id)
注意事项
- 登录状态有效期:大多数网站的登录状态会在 7-30 天后过期,需要定期检查并重新登录
- 网络连接:确保执行环境网络畅通
- 并发控制:同一 profile 不要同时在多个进程中使用
- 数据目录:妥善保管
modelscope-profile目录,不要删除或随意移动 - 错误处理:建议添加日志记录,便于排查问题
常见问题
Q: 登录状态过期了怎么办?
A: 删除旧的 profile 目录,重新执行「步骤 1」进行登录:
rm -rf ./modelscope-profile
playwright-cli open --persistent --profile=./modelscope-profile --headed https://modelscope.cn
# 手动登录后关闭
playwright-cli close
Q: 如何确认保活是否生效?
A: 可以通过以下方式验证:
- 查看 cron/Scheule 任务的执行日志
- 在执行时加上日志记录:
#!/bin/bash
echo "$(date): 开始保活访问" >> ./keepalive.log
playwright-cli open --persistent --profile=./modelscope-profile --headed https://modelscope.cn/studios/hqzqaq/QwenPaw
sleep 30
playwright-cli close
echo "$(date): 保活完成" >> ./keepalive.log
Q: 能否在无头模式运行?
A: 可以。去掉 --headed 参数即可:
playwright-cli open --persistent --profile=./modelscope-profile https://modelscope.cn/studios/hqzqaq/QwenPaw
1 个帖子 - 1 位参与者