[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80880":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":24,"discoverSource":25},80880,"Host2Play","oyz8\u002FHost2Play","oyz8","Host2Play 自动续期脚本",null,"Python",36,71,34,0,2,3,43.87,false,"main",[],"2026-06-12 04:01:30","# Host2Play 自动续期脚本\n\n# ⭐ **觉得有用？给个 Star 支持一下！**\n> 注册地址：[https:\u002F\u002Fhost2play.gratis](https:\u002F\u002Fhost2play.gratis)\n\n自动续期 Host2Play 免费游戏服务器的 GitHub Actions 脚本。基于 Chrome 自动化，自动处理 reCAPTCHA 音频验证，支持 IP 封锁自动切换 WARP，多服务器批量续期，并通过 Telegram 推送带截图的运行结果。\n\n## ✨ 功能特性\n\n- ✅ 多服务器支持 —— 一次配置多个续期链接，顺序执行\n- ✅ 全自动 reCAPTCHA 破解 —— 音频识别 + 自动填写，无需人工干预\n- ✅ 智能 IP 切换 —— 检测到 Google 封锁后自动通过 WARP 更换出口 IP\n- ✅ Telegram 通知 —— 续期成功 \u002F 失败均推送消息，附带页面截图\n- ✅ 定时 + 手动运行 —— 默认每天多次自动执行，也支持手动触发\n- ✅ 自动清理运行记录 —— 只保留最近 2 条 Actions 记录，仓库保持清爽\n- ✅ 虚拟显示无头运行 —— 使用 Xvfb，不依赖图形界面\n\n## 📋 前置要求\n\n### 1. 配置续期链接（必须）\n\n编辑仓库根目录下的 [main.py](.\u002Fmain.py)，找到23行 `RENEW_URLS` 列表，填入你的 Host2Play 服务器续期链接。\n\n**链接格式：**\n```\nhttps:\u002F\u002Fhost2play.gratis\u002Fserver\u002Frenew?i=你的服务器ID\n```\n\n**如何获取链接：**\n打开 [Host2Play Minecraft 面板](https:\u002F\u002Fhost2play.gratis\u002Fpanel\u002Fminecraft)，找到你的服务器，点击 **Copy public renew link** 即可复制续期链接，然后填入 `main.py` 的 `RENEW_URLS` 列表中。\n\n示例：\n```python\nRENEW_URLS = [\n    \"https:\u002F\u002Fhost2play.gratis\u002Fserver\u002Frenew?i=6666666-6666-6666-6666-66666666666\",\n    \"https:\u002F\u002Fhost2play.gratis\u002Fserver\u002Frenew?i=另一个服务器ID\",\n]\n```\n\n### 2. 配置 Telegram 通知（可选）\n\n进入仓库 `Settings` → `Secrets and variables` → `Actions`，添加以下 Secrets：\n\n| Secret 名称 | 必填 | 说明 | 示例 |\n|------------|------|------|------|\n| `TG_BOT_TOKEN` | ❌ | Telegram Bot Token | `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11` |\n| `TG_CHAT_ID` | ❌ | 接收消息的 Chat ID | `123456789` |\n\n> 不配置这两个 Secret 时，脚本仍会正常运行，只是不会发送 Telegram 通知。\n\n**获取方式：**\n- **Bot Token**：向 [@BotFather](https:\u002F\u002Ft.me\u002FBotFather) 发送 `\u002Fnewbot` 创建机器人，获得 token。\n- **Chat ID**：向 [@userinfobot](https:\u002F\u002Ft.me\u002Fuserinfobot) 发送任意消息即可获取。\n\n### 3. 环境依赖（无需手动配置）\n\n脚本运行在 GitHub Actions 的 `ubuntu-latest` 环境中，以下依赖会在运行时自动安装：\n- Google Chrome\n- Xvfb（虚拟显示）\n- ffmpeg、unzip、curl\n- WARP（网络代理，用于切换 IP）\n- Python 库：`DrissionPage`, `xvfbwrapper`, `requests`, `SpeechRecognition`, `pydub`\n\n## 🚀 使用方法\n\n### 方法 1：定时自动运行（默认）\n\nFork 本仓库并完成上述配置后，工作流会按以下时间自动执行（UTC 时间）：\n\n- `0 0,11,22 * * *`  → 每天 00:00、11:00、22:00（UTC）\n- `30 5,16 * * *`  → 每天 05:30、16:30（UTC）\n\n如需修改频率，编辑 `.github\u002Fworkflows\u002FHost2Play_Renew.yml` 中的 `schedule` 部分即可。\n\n常用 cron 示例：\n- `0 *\u002F6 * * *`  每 6 小时一次\n- `0 0,12 * * *` 每天 0 点和 12 点（UTC）\n\n### 方法 2：手动触发（GitHub 网页）\n\n1. 进入仓库的 `Actions` 页面\n2. 选择 **Host2Play 续期** 工作流\n3. 点击 **Run workflow** → 点击绿色的 **Run workflow** 按钮\n\n### 方法 3：API 调用\n\n```bash\ncurl -X POST \\\n  -H \"Authorization: Bearer ghp_你的Token\" \\\n  -H \"Accept: application\u002Fvnd.github.v3+json\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F你的用户名\u002F你的仓库名\u002Factions\u002Fworkflows\u002FHost2Play_Renew.yml\u002Fdispatches \\\n  -d '{\"ref\":\"main\"}'\n```\n\n## 🐛 常见问题\n\n### 1. 如何获取续期链接？\n打开 [Host2Play Minecraft 面板](https:\u002F\u002Fhost2play.gratis\u002Fpanel\u002Fminecraft)，找到你的服务器，点击 **Copy public renew link** 即可获得续期链接。将其复制到 `main.py` 的 `RENEW_URLS` 列表中即可。\n\n### 2. 验证码识别失败怎么办？\n脚本内置了音频识别流程，但如果识别率较低，可能是以下原因：\n- **网络问题**：Google 语音识别 API 访问不稳定，脚本会自动重试（最多 3 次下载、多次识别）。\n- **IP 被标记**：频繁操作会导致 Google 展示更难的验证码，脚本会通过 WARP 自动更换 IP。\n- **环境噪音**：音频下载或转换问题，建议检查 Actions 日志中的识别结果 `[INFO] 识别结果: [xxxx]`。\n\n### 3. IP 被封锁导致无法继续？\n当检测到 `try again later` 或错误提示时，脚本会自动调用 `restart_warp()` 断开并重新连接 WARP，以更换出口 IP，然后重新开始续期尝试。整个流程最多尝试 **50 次**，足够应对大多数封锁情况。\n\n### 4. 为什么需要 WARP？\nHost2Play 的续期页面嵌入了 Google reCAPTCHA。当短时间内多次尝试验证时，Google 可能会封禁当前 IP。WARP 能快速更换 Cloudflare 出口 IP，绕过封锁继续验证。\n\n### 5. 没有收到 Telegram 通知？\n- 确认是否已正确设置 `TG_BOT_TOKEN` 和 `TG_CHAT_ID` 两个 Secret。\n- 在 Telegram 中先给 Bot 发送 `\u002Fstart` 激活对话。\n- 检查 Actions 日志中是否有 `Telegram 图片通知发送成功` 的日志，或者错误信息。\n\n### 6. 截图在哪里查看？\n每次 Actions 运行结束后，在运行详情页底部 **Artifacts** 区域可以下载 `screenshots-运行编号` 的压缩包，里面包含每次续期的成功\u002F失败截图。\n\n### 7. 能否同时续期多个服务器？\n可以。在 `RENEW_URLS` 列表中填入多个链接即可，脚本会依次处理。每个链接独立尝试，互不影响，最终 Telegram 通知也会分别推送。\n\n### 8. 运行时间很长是否正常？\n正常。每次续期需要启动 Chrome、加载页面、处理验证码、可能还需要切换 IP 并重试，单个链接通常需要 2～5 分钟，遇到多次 IP 封锁可能会更久。GitHub Actions 限制最长 6 小时，完全足够。\n\n## 🔒 安全建议\n\n- ✅ **敏感信息存放**：Telegram Token 等信息请严格存储在 GitHub Secrets 中，不要直接写在代码里。\n- ✅ **定期维护**：如果 Host2Play 网站更新了页面结构，可能需要更新元素定位逻辑，届时请关注仓库更新。\n- ✅ **Actions 权限**：默认的 `GITHUB_TOKEN` 权限已满足需要，无需额外设置。\n- ✅ **Fork 安全**：建议保持 Fork 仓库同步，以便获取最新的脚本修复。\n\n## 📄 许可证\n\nMIT License\n\n---\n\n**⚠️ 免责声明**：本脚本仅供学习交流使用，使用者需遵守 Host2Play 的服务条款。因使用本脚本造成的任何问题，作者不承担任何责任。\n","Host2Play 自动续期脚本是一个基于 GitHub Actions 的 Python 脚本，用于自动续期 Host2Play 免费游戏服务器。其核心功能包括多服务器批量续期、全自动 reCAPTCHA 音频验证破解、智能 IP 切换（通过 WARP 更换出口 IP）、Telegram 通知（附带页面截图）以及定时和手动运行模式。该脚本使用 Chrome 自动化技术，并结合 Xvfb 实现无头运行。适合需要定期续期 Host2Play 服务器的用户，尤其适用于管理多个服务器且希望减少人工干预的情况。","2026-06-11 04:02:40","CREATED_QUERY"]