⭐ 觉得有用?给个 Star 支持一下!
用于 FreezeHost 免费服务器的自动续期与重启管理,基于 GitHub Actions,使用 Playwright 模拟浏览器操作,最多支持 5 个 Discord 账号。
| Workflow 名称 | 功能 | 触发方式 |
|---|---|---|
FreezeHost 续期多账号版 |
自动续期服务器,到期前 2 天运行,自动更新 Cron | 定时 + 手动 |
FreezeHost 自动重启 |
重启/开机服务器,支持指定 Discord 账号 | 手动 + API |
- 自动 Discord OAuth 登录并续期名下所有服务器
- 最多支持 5 个 Discord Token,各自拥有独立 Cron 计划
- 站点宕机自动重试(最多 3 次)
- 续期后计算下次运行时间(到期前 2 天),自动更新 Workflow 中的 Cron 表达式
- WARP 代理保障网络连通
- Telegram 通知推送续期结果(含合并截图)
- 自动检测服务器电源状态(运行/关机/过渡状态)
- 运行中 → 执行重启;关机 → 执行开机;过渡 → 等待稳定后操作
- 重启/开机结果 Telegram 通知(含截图)
在仓库 Settings → Secrets and variables → Actions 中添加:
| Secret 名称 | 必填 | 说明 |
|---|---|---|
FREEZEHOST_DISCORD_TOKEN_1 |
✅ | 第 1 个 Discord 账号 Token |
FREEZEHOST_DISCORD_TOKEN_2 |
❌ | 第 2 个 Discord 账号 Token(可选) |
FREEZEHOST_DISCORD_TOKEN_3 |
❌ | 第 3 个 Discord 账号 Token(可选) |
FREEZEHOST_DISCORD_TOKEN_4 |
❌ | 第 4 个 Discord 账号 Token(可选) |
FREEZEHOST_DISCORD_TOKEN_5 |
❌ | 第 5 个 Discord 账号 Token(可选) |
REPO_TOKEN |
✅ (仅续期) | 具有 repo 和 workflow 权限的 PAT,用于自动更新 Cron |
TG_BOT_TOKEN |
❌ | Telegram Bot Token,用于推送通知 |
TG_CHAT_ID |
❌ | Telegram 接收消息的 Chat ID |
- 在浏览器中登录 Discord
- 按
F12打开开发者工具 →Network(网络) - 筛选
Fetch/XHR,刷新页面 - 点击任意
discord.com/api请求 - 在
Headers(请求头)中找到Authorization并复制完整值 - 填入对应
FREEZEHOST_DISCORD_TOKEN_*
- 打开 GitHub Tokens → Generate new token (classic)
- 勾选
repo(全部)与workflow - 生成后复制并填入 Secret
- @BotFather 创建 Bot 获得
TG_BOT_TOKEN - 向 Bot 发送任意消息,访问
https://api.telegram.org/bot<TOKEN>/getUpdates获取chat.id作为TG_CHAT_ID
- Fork 本仓库
- 在仓库 Actions 页面启用 workflows(若未自动启用)
- 按上方表格添加 Secrets,至少配置
FREEZEHOST_DISCORD_TOKEN_1
- 默认已配置 5 条独立 Cron 规则,分别对应 5 个 Token(UTC 01~05 每个整点错开)
- 首次运行后,Workflow 会根据剩余天数自动更新对应 Cron,之后将在到期前 2 天准时运行
- 续期:Actions →
FreezeHost 续期多账号版→Run workflow,选择 Token 编号 - 重启:Actions →
FreezeHost 自动重启→Run workflow,选择 Token 编号
可通过 curl 或任何 HTTP 客户端调用 GitHub REST API 手动触发重启 Workflow。
curl -X POST "https://api.github.com/repos/<用户名>/<仓库名>/actions/workflows/FreezeHost_Restart.yml/dispatches" \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <你的 PAT 或 GITHUB_TOKEN>" \
-d '{"ref":"main","inputs":{"token_number":"2"}}'注意:
- 替换
<用户名>、<仓库名>以及 Tokentoken_number可选1~5,对应已配置的 Secret- 使用具有
workflow权限的 Token(如REPO_TOKEN或 Fine-grained PAT)- 文件名请与
.github/workflows/下实际文件名一致
- 根据 Cron 或手动选择确定要使用的 Token 编号
- 拉取仓库、安装 Playwright,启动 WARP 代理
- Python 脚本模拟浏览器登录 FreezeHost(Discord OAuth)
- 扫描 Dashboard 下所有服务器,逐一检查剩余时间并执行续期
- 提取最小剩余天数,计算下次运行时间(到期前 2 天)
- 使用
REPO_TOKEN自动更新对应 Cron 行并提交 - 通过 Telegram 发送结果截图
- 手动或 API 触发时指定 Token 编号
- 拉取仓库、安装 Playwright,启动 WARP 代理
- 脚本登录 FreezeHost,发现所有服务器
- 检测每台服务器电源状态:
- 运行中 → 执行重启
- 关机 → 执行开机
- 过渡中 → 等待稳定后按上述规则处理
- 将操作结果通过 Telegram 推送(含截图)
- 至少配置
FREEZEHOST_DISCORD_TOKEN_1才能使用 - 续期需要
REPO_TOKEN拥有workflow权限,否则无法自动调整 Cron - 重启 Workflow 没有定时计划,仅限手动或 API 触发
- 某 Token 下若无服务器,会收到“无服务器”通知并跳过
- 站点宕机时续期脚本会自动重试 3 次,若持续失败将推送通知
- 敏感信息(Token、邮箱、服务器 ID)在日志与截图中已脱敏
