基于 HTTP 直连的 NewAPI 自动签到脚本,支持多账号、GitHub Actions 定时执行。
- ✅ 支持单账号/多账号签到
- ✅ 支持多个不同网站(只要是基于 NewAPI 搭建的站点)
- ✅ HTTP 直连,无需浏览器
- ✅ GitHub Actions 自动化执行
- ✅ 详细的签到日志输出
- ✅ 错误处理和超时控制
- ✅ 支持手动触发和定时任务
- ✅ 钉钉通知(签到完成后自动推送结果)
- ✅ 工作流保活(防止 GitHub Actions 自动禁用)
为了让配置更简单,我们提供了两个便捷工具:
在线使用(推荐):
如果你的仓库启用了 GitHub Pages,可以直接访问:
https://你的用户名.github.io/Newapi-checkin/config_generator.html
启用 GitHub Pages 的方法:
- 进入仓库
Settings→Pages - 在
Source下选择main分支 - 点击
Save - 等待几分钟后,访问上面的链接
本地使用:
- 下载
config_generator.html文件到本地 - 双击文件,用浏览器打开
- 填写站点 URL、Session Cookie 和备注名称
- 点击"生成配置"按钮
- 一键复制生成的配置
特点:
- 📱 支持移动端和桌面端
- ✨ 可视化界面,无需编写代码
- 🎯 自动格式化,避免语法错误
- 📋 一键复制到剪贴板
- 🌐 可在线访问,无需安装任何软件
- 💾 支持本地存储,下次打开自动加载配置
python config_helper.py功能:
- ✅ 交互式问答,逐步引导配置
- ✅ 自动测试账号有效性
- ✅ 支持生成 JSON 和简单格式
- ✅ 自动保存到文件
使用示例:
--- 配置第 1 个账号 ---
站点 URL(如 https://xxx.xxx): https://xxx.xxx
Session Cookie: MTc2NzQxMzYzM3xEWDhF...
备注名称(可选,便于识别) [站点1]: 主站
是否测试此账号配置 (Y/n): y
正在测试...
✅ 测试成功!用户名: xxx_xxx
✅ 第 1 个账号添加成功
是否继续添加账号 (y/N): n
1. 使用配置工具生成配置
↓
[网页工具] → 填写表单 → 生成配置 → 复制
或
[命令行工具] → 交互式问答 → 自动测试 → 保存文件
↓
2. 添加到 GitHub Secrets
↓
3. 启用 GitHub Actions
↓
4. 每天自动签到 ✅
点击右上角 Fork 按钮,将本仓库 Fork 到你的账号下。
重要: 如果你想使用在线网页配置工具,需要先启用 GitHub Pages:
- 进入你 Fork 的仓库
- 点击
Settings→Pages - 在
Source下选择Deploy from a branch - 选择
main分支,文件夹选择/ (root) - 点击
Save - 等待 1-2 分钟,页面会显示访问链接
访问你的配置工具:
https://你的用户名.github.io/Newapi-checkin/
或直接访问配置生成器:
https://你的用户名.github.io/Newapi-checkin/config_generator.html
💡 提示: 将上面的"你的用户名"替换为你的 GitHub 用户名
进入你 Fork 的仓库,依次点击:Settings → Secrets and variables → Actions → New repository secret
添加名为 NEWAPI_ACCOUNTS 的 Secret。
💡 推荐使用配置工具生成配置(见上方"配置工具"章节),也可以按以下格式手动配置:
单账号格式:
https://your-domain.com#your_session_cookie
多账号/多网站格式(用逗号分隔):
https://site1.com#session1,https://site2.com#session2,https://site3.com#session3
实际示例(多个不同的 NewAPI 站点):
https://api.example1.com#MTc2NzQx...,https://api.example2.com#QVFMXzJh...,https://api.example3.com#RFhFN0FB...
JSON 格式(推荐,支持备注和更好的可读性):
[
{
"url": "https://api.example.com",
"session": "MTc2NzQxMzYzM3xEWDhFQVFMX2dBQUJFQUVRQUFE...",
"user_id": "123",
"name": "主力站"
},
{
"url": "https://api2.example.com",
"session": "QVFMXzJhYWJFRUFRQUFEX3dfLUFBQVlHYzNS...",
"user_id": "456",
"name": "备用站"
},
{
"url": "https://api3.example.com",
"session": "RFhFN0FBQkVBRVFBQUQzd19fQUFBWUdjM1J5...",
"user_id": "789",
"name": "测试站"
}
]进入仓库的 Actions 页面,点击 I understand my workflows, go ahead and enable them 启用工作流。
在 Actions 页面,选择 NewAPI 自动签到 工作流,点击 Run workflow 按钮手动触发一次测试。
工作流默认每天 北京时间 8:10 自动执行签到,无需手动操作。
git clone https://github.com/Jasonliu-0/Newapi-checkin.git
cd Newapi-checkinpip install -r requirements.txtLinux/macOS:
export NEWAPI_ACCOUNTS="https://your-domain.com#your_session_cookie"Windows PowerShell:
$env:NEWAPI_ACCOUNTS="https://your-domain.com#your_session_cookie"Windows CMD:
set NEWAPI_ACCOUNTS=https://your-domain.com#your_session_cookiepython checkin.py在配置多个站点前,可以先用测试脚本验证单个站点:
python test_checkin.py <站点URL> <session值>示例:
python test_checkin.py https://xxx.xxx MTc2NzQxMzYzM3xEWDhFQVFMX2...测试脚本会验证:
- Session 是否有效(获取用户信息)
- 签到功能是否正常
- 签到历史查询是否正常
- 打开 NewAPI 网站并登录
- 按
F12打开开发者工具 - 切换到
Network(网络)标签 - 刷新页面(
F5) - 在请求列表中找到任意 API 请求
- 点击该请求,查看
Headers(请求头) - 找到
Cookie字段,复制其中session=后面的值
示例:
Cookie: session=MTc2NzQxMzYzM3xEWDhFQVFMX2...; cf_clearance=...
只需要复制 session= 和 ; 之间的部分:
MTc2NzQxMzYzM3xEWDhFQVFMX2...
在浏览器控制台(Console)中运行:
document.cookie.split('; ').find(row => row.startsWith('session=')).split('=')[1]直接复制输出的值即可。
默认每天 北京时间 8:10 执行,如需修改,编辑 .github/workflows/checkin.yml:
schedule:
- cron: '10 0 * * *' # UTC 0:10 = 北京时间 8:10常用时间对照:
0 0 * * *- 每天 UTC 0:00(北京时间 8:00)30 1 * * *- 每天 UTC 1:30(北京时间 9:30)0 16 * * *- 每天 UTC 16:00(北京时间 0:00)
签到完成后自动发送通知到钉钉群,包含签到结果、获得额度、Session 失效提醒等信息。
- 打开钉钉群 → 设置 → 智能群助手
- 点击 添加机器人 → 选择 自定义
- 设置机器人名称(如:签到通知)
- 安全设置选择 加签(推荐)或 自定义关键词
- 复制 Webhook 地址 和 签名密钥
在仓库 Settings → Secrets and variables → Actions 中添加:
| Secret 名称 | 说明 | 是否必须 |
|---|---|---|
DINGTALK_WEBHOOK |
钉钉机器人 Webhook URL | 是 |
DINGTALK_SECRET |
加签密钥(以 SEC 开头) | 否(如开启加签则必须) |
签到完成后,钉钉群会收到类似以下的消息:
` 📋 NewAPI 签到报告 执行时间: 2026-01-08 08:10:00
✅ 成功 (2个) | 账号 | 奖励 | 详情 | | 主力站 | +500K | 已签 15 天 | | 备用站 | +100K | 已签 8 天 |
汇总: 成功 2,失败 0 `
网页配置生成器支持将配置保存到浏览器本地存储:
功能说明:
- ✅ 保存到本地:填写完配置后,点击"💾 保存到本地"按钮
- ✅ 自动加载:下次打开页面会提示恢复之前的配置
- ✅ 从本地加载:点击"📂 从本地加载"按钮恢复配置
- ✅ 清除数据:点击"🗑️ 清除本地数据"删除保存的配置
安全提示:
⚠️ 数据以明文形式存储在浏览器中⚠️ 仅在私人电脑上使用本地存储功能⚠️ 公共电脑请勿使用,用完记得清除- ✅ 换电脑或换浏览器需要重新配置
使用流程:
1. 填写配置 → 2. 点击"保存到本地" → 3. 关闭页面
↓
下次打开页面
↓
4. 看到提示"发现本地保存的配置" → 5. 点击"从本地加载" → 6. 配置自动填充 ✅
| 格式 | 说明 | 示例 |
|---|---|---|
URL#SESSION |
单账号 | https://api.example.com#MTc2NzQx... |
URL1#SESSION1,URL2#SESSION2 |
多网站/多账号(逗号分隔) | https://a.com#sess1,https://b.com#sess2 |
| JSON 数组 | 支持备注名称和用户ID(推荐) | 见上文 JSON 格式示例 |
脚本支持同时管理多个不同的 NewAPI 站点,每个站点独立签到。
场景 1:管理 3 个不同的 NewAPI 站点
假设你有以下站点的账号:
https://api.site1.com- 主力站https://api.site2.com- 备用站https://api.site3.com- 测试站
配置方式(JSON 格式,推荐):
[
{
"url": "https://api.site1.com",
"session": "你的site1的session值",
"user_id": "123",
"name": "主力站"
},
{
"url": "https://api.site2.com",
"session": "你的site2的session值",
"user_id": "456",
"name": "备用站"
},
{
"url": "https://api.site3.com",
"session": "你的site3的session值",
"user_id": "789",
"name": "测试站"
}
]场景 2:同一个站点的多个账号
如果你在同一个站点有多个账号,也可以这样配置:
[
{
"url": "https://api.example.com",
"session": "账号1的session",
"name": "账号A"
},
{
"url": "https://api.example.com",
"session": "账号2的session",
"name": "账号B"
}
]场景 3:混合配置(多站点 + 多账号)
[
{
"url": "https://site1.com",
"session": "site1_account1_session",
"name": "站点1-账号A"
},
{
"url": "https://site1.com",
"session": "site1_account2_session",
"name": "站点1-账号B"
},
{
"url": "https://site2.com",
"session": "site2_session",
"name": "站点2"
}
]提示: 每个站点的 Session Cookie 需要单独获取,请在对应站点登录后提取。
多网站签到日志:
==================================================
NewAPI 自动签到
执行时间: 2026-01-03 08:10:00
==================================================
共 3 个账号待签到
[1/3] 主力站
站点: https://api.site1.com
用户ID: 123
用户: user_123
结果: ✅ 签到成功
日期: 2026-01-03
奖励: +5.23M 额度 (5,230,000 tokens)
统计: 本月已签 3 天,累计 15.67M 额度
[2/3] 备用站
站点: https://api.site2.com
用户ID: 456
用户: user_456
结果: ✅ 签到成功
日期: 2026-01-03
奖励: +2.78M 额度 (2,780,000 tokens)
统计: 本月已签 3 天,累计 8.45M 额度
[3/3] 测试站
站点: https://api.site3.com
用户ID: 789
用户: user_789
结果: ✅ 签到成功
日期: 2026-01-03
奖励: +3.49M 额度 (3,487,044 tokens)
统计: 本月已签 1 天,累计 3.49M 额度
==================================================
签到完成: 成功 3, 失败 0
==================================================
日志说明:
- ✅ 结果:显示 API 返回的签到消息
- 📅 日期:本次签到的日期
- 🎁 奖励:本次获得的额度(格式化显示 + 原始值)
- 📊 统计:本月累计签到天数和总额度
原因: Session Cookie 过期或无效。
解决:
- 重新登录网站
- 按照上述方法重新获取 Session Cookie
- 更新 GitHub Secrets 中的
NEWAPI_ACCOUNTS配置
可能原因:
- 工作流未启用 - 进入 Actions 页面启用
- 仓库长期无活动被暂停 - 手动触发一次即可恢复
- Fork 的仓库默认禁用 Actions - 需要手动启用
进入仓库的 Actions 页面,点击对应的工作流运行记录,即可查看详细日志。
理论上支持所有基于 New API 项目搭建的站点,只要 API 接口兼容即可。
根据站点配置不同,通常为 7-30 天。建议每月更新一次,或在签到失败时及时更新。
正常现象! NewAPI 的签到奖励是随机的:
- 最小额度:通常 2.5M tokens
- 最大额度:通常 10M tokens
- 每次签到会在这个范围内随机分配
脚本会显示本次获得的具体额度和本月累计总额度。
自动处理! 脚本会:
- 调用
/api/user/self获取用户信息 - 自动提取用户ID
- 将
new-api-user: 用户ID添加到后续请求的请求头中 - 无需手动配置,完全自动化
错误信息:
❌ 失败 - Session 可能已过期
原因:
- Session Cookie 已过期(通常 7-30 天)
- Session Cookie 复制不完整
- Session Cookie 格式错误
解决方法:
python test_checkin.py https://api.example.com "你的session" --verbose方法 A:浏览器开发者工具(推荐)
- 打开 NewAPI 网站并登录
- 按
F12打开开发者工具 - 切换到
Application(应用程序)或Storage(存储)标签 - 左侧找到
Cookies→ 选择你的网站 - 找到
session这一行 - 复制
Value(值)列的完整内容
重要: 确保复制完整,不要遗漏开头或结尾!
方法 B:Network 标签法
- 打开网站并登录
- 按
F12→Network(网络)标签 - 刷新页面(
F5) - 找到任意 API 请求
- 查看
Headers→Request Headers→Cookie - 找到
session=后面的值,复制到下一个分号之前
方法 C:控制台脚本法
- 打开网站并登录
- 按
F12→Console(控制台) - 输入以下代码并回车:
document.cookie.split('; ').find(row => row.startsWith('session=')).split('=')[1]
- 复制输出的结果
python test_checkin.py https://api.example.com "新的session" --verbose如果成功,你会看到:
[1/3] 测试获取用户信息...
[调试] HTTP 状态码: 200
[调试] success 字段: True
✅ 成功
用户名: xxx
用户ID: 123
症状:
- Session 长度异常短(少于 100 字符)
- 测试立即失败
检查方法:
python test_checkin.py https://api.example.com "你的session" --verbose查看输出的 Session 长度,通常应该是 200-500 字符。
正常示例:
Session 长度: 384 字符
异常示例:
Session 长度: 50 字符 ← 太短,可能复制不完整
解决: 重新复制完整的 Session Cookie,确保:
- 从开头开始
- 到结尾结束
- 中间没有换行或空格
错误信息:
[错误] 网络请求失败: ...
可能原因:
- 网站无法访问
- 防火墙/代理阻止
- DNS 解析失败
解决方法:
# Windows
ping api.example.com
# 或使用浏览器直接访问如果使用代理,需要设置环境变量:
# Linux/macOS
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
# Windows CMD
set HTTP_PROXY=http://proxy.example.com:8080
set HTTPS_PROXY=http://proxy.example.com:8080
# Windows PowerShell
$env:HTTP_PROXY="http://proxy.example.com:8080"
$env:HTTPS_PROXY="http://proxy.example.com:8080"错误信息:
[错误] 响应解析失败: ...
可能原因:
- 网站返回了 HTML 错误页面(如 404、503)
- 网站维护中
- API 接口变更
调试:
python test_checkin.py https://api.example.com "你的session" --verbose查看 [调试] 原始响应: 的内容,可能看到:
- HTML 错误页面
- 维护通知
- 其他非 JSON 内容
解决:
- 等待网站恢复
- 检查网站是否正常
- 联系网站管理员
症状:
- 本地测试成功
- GitHub Actions 运行失败
可能原因:
- Secrets 配置错误
- Session 已过期
- GitHub 服务器网络问题
排查步骤:
- 进入仓库
Settings→Secrets and variables→Actions - 确认
NEWAPI_ACCOUNTS存在 - 点击
Update检查配置格式
- 进入
Actions页面 - 点击失败的运行记录
- 展开
执行签到步骤 - 查看详细错误信息
Actions→NewAPI 自动签到Run workflow→Run workflow- 查看运行结果
错误信息:
❌ 账号配置解析失败
常见错误:
// ❌ 错误:缺少逗号
[
{"url": "https://site1.com", "session": "sess1"}
{"url": "https://site2.com", "session": "sess2"}
]
// ✅ 正确
[
{"url": "https://site1.com", "session": "sess1"},
{"url": "https://site2.com", "session": "sess2"}
]// ❌ 错误:使用了中文引号
{"url": "https://site1.com", "session": "sess1"}
// ✅ 正确:使用英文引号
{"url": "https://site1.com", "session": "sess1"}# ❌ 错误:使用分号
https://site1.com;sess1,https://site2.com;sess2
# ✅ 正确:使用井号
https://site1.com#sess1,https://site2.com#sess2解决: 使用配置工具生成配置,避免手动编写:
- 网页工具:
config_generator.html - 命令行工具:
python config_helper.py
启用详细调试信息:
python test_checkin.py https://api.example.com "你的session" --verbose你会看到:
- HTTP 状态码
- API 响应内容
- 请求头信息
- 错误详情
正确的 Session Cookie 特征:
- ✅ 长度:200-500 字符
- ✅ 格式:Base64 编码(字母、数字、
+、/、=) - ✅ 开头:通常是
MTc... - ✅ 结尾:通常是
...=或...==
-
第一步:测试连接
ping api.example.com
-
第二步:获取新 Session
- 登录网站
- 使用开发者工具获取
-
第三步:测试签到
python test_checkin.py https://api.example.com "新session" --verbose -
第四步:配置到生产
- 本地测试成功后
- 更新 GitHub Secrets
- 手动触发一次验证
- 保护隐私: Session Cookie 相当于登录凭证,请妥善保管,不要泄露给他人
- 定期更新: Cookie 会过期,需要定期更新 Secrets 配置
- 遵守规则: 请遵守各站点的使用规则,合理使用自动签到功能
- Fork 仓库私有化: 建议将 Fork 的仓库设为私有(Private),避免配置泄露
- 测试后启用: 首次配置完成后,先手动触发测试,确认无误后再依赖定时任务
- 本地存储安全: 浏览器本地存储是明文的,仅在私人电脑使用,公共电脑请勿使用
安全性: ⭐⭐⭐⭐⭐
优点:
- ✅ 加密存储,GitHub 服务器加密保护
- ✅ 仅授权用户可见
- ✅ Actions 运行时自动注入,不会暴露
- ✅ 支持版本控制和审计
- ✅ 适合长期使用
缺点:
- ❌ 需要有 GitHub 账号
- ❌ 需要 Fork 仓库
适用场景:
- ✅ 日常自动签到(推荐)
- ✅ 长期使用
- ✅ 管理多个站点
使用方法:
- 使用配置工具生成配置(网页或命令行)
- 进入仓库
Settings→Secrets and variables→Actions - 新建 Secret:
NEWAPI_ACCOUNTS - 粘贴配置并保存
安全性: ⭐⭐⭐
优点:
- ✅ 使用方便,一键保存和加载
- ✅ 无需 GitHub 账号
- ✅ 数据存储在本地浏览器
- ✅ 下次访问自动提示恢复
缺点:
- ❌ 明文存储,无加密保护
- ❌ 其他人使用你的电脑可能看到
- ❌ 换电脑或换浏览器需要重新配置
- ❌ 清除浏览器数据会丢失配置
适用场景:
- ✅ 临时测试配置
- ✅ 私人电脑
- ✅ 快速生成配置
不适用场景:
- ❌ 公共电脑
- ❌ 共享电脑
- ❌ 公司电脑
使用方法:
- 打开
config_generator.html - 填写账号信息
- 点击"💾 保存到本地"按钮
- 下次访问点击"📂 从本地加载"
安全性: ⭐⭐⭐⭐
优点:
- ✅ 文件级权限控制
- ✅ 可以加密文件
- ✅ 便于备份
- ✅ 适合本地开发测试
缺点:
- ❌ 需要手动管理文件
- ❌ 可能误提交到 Git
适用场景:
- ✅ 本地开发和测试
- ✅ 命令行工具使用
- ✅ 批量管理配置
使用方法:
# 使用命令行配置助手
python config_helper.py
# 会生成:
# - newapi_accounts.json
# - newapi_accounts.txt
# 这些文件已在 .gitignore 中,不会被提交-
使用 GitHub Secrets 存储生产配置
- 所有自动签到都通过 GitHub Actions 执行
- 配置安全加密存储
-
本地存储仅用于临时测试
- 使用网页工具快速生成配置
- 测试无误后复制到 GitHub Secrets
- 测试完成后清除本地存储
-
定期更新 Session Cookie
- 每月主动更新一次
- Session 过期后及时更新
-
仓库设为私有
- Fork 后将仓库改为 Private
- 保护你的代码和配置
-
不要分享配置
- Session Cookie 相当于登录凭证
- 不要发送给任何人
- 不要截图包含 Session 的页面
-
不要提交敏感信息到代码仓库
- ❌ 不要在代码中硬编码 Session
- ❌ 不要将配置文件提交到 Git
- ❌ 不要在 Issue/PR 中暴露配置
-
公共电脑不要使用本地存储
- ❌ 网吧、图书馆等公共场所
- ❌ 公司电脑(可能被监控)
- ❌ 共享电脑(其他人可能看到)
-
不要使用不安全的分享方式
- ❌ 通过聊天软件明文发送
- ❌ 存储在云笔记(如未加密)
- ❌ 截图包含完整 Session
Session Cookie 相当于临时密码,拥有它的人可以:
- ✅ 以你的身份访问 API
- ✅ 查看你的账号信息
- ✅ 执行签到等操作
⚠️ 但不能修改密码或敏感设置(通常需要额外验证)
-
定期更新
- Session 会自动过期(7-30 天)
- 建议每月主动更新一次
- 重新登录会生成新的 Session
-
使用 HTTPS
- 所有 NewAPI 站点都应使用 HTTPS
- 避免中间人攻击
-
不分享
- 不要发送给任何人
- 不要截图包含 Session
- 不要在公开场合展示
- ✅ 加密存储在 GitHub 服务器
- ✅ 只有仓库所有者和协作者可管理
- ✅ Actions 运行日志中自动脱敏(显示为
***) - ✅ 无法通过 GitHub API 读取原始值
- ✅ 支持审计日志
-
仓库设为私有
Settings → General → Danger Zone → Change visibility → Make private -
限制协作者
- 不要随意添加协作者
- 协作者可以访问 Secrets
-
定期审计
- 定期检查 Actions 运行日志
- 确保 Session 未泄露
-
立即重新登录
- 访问网站并重新登录
- 这会使旧 Session 失效
-
更新配置
- 获取新的 Session Cookie
- 更新 GitHub Secrets
- 清除本地存储(如果使用)
-
检查账号安全
- 查看登录日志
- 检查是否有异常操作
- 必要时修改密码
-
清理痕迹
- 删除包含 Session 的截图
- 删除聊天记录中的 Session
- 清除浏览器历史记录
| 存储方式 | 安全性 | 便捷性 | 推荐场景 |
|---|---|---|---|
| GitHub Secrets | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 生产环境、长期使用 |
| 浏览器本地存储 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 私人电脑、临时测试 |
| 本地文件 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 开发测试 |
| 环境变量 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 本地运行 |
记住:安全性永远优先于便捷性! 🔐
- 语言: Python 3.11+
- HTTP 库: requests
- CI/CD: GitHub Actions
- 配置工具: HTML + JavaScript (网页版), Python (命令行版)
| 文件 | 说明 |
|---|---|
checkin.py |
主签到脚本 |
test_checkin.py |
单站点测试脚本 |
config_helper.py |
命令行配置助手(交互式) |
config_generator.html |
网页配置生成器(可视化) |
.github/workflows/checkin.yml |
GitHub Actions 工作流 |
requirements.txt |
Python 依赖 |
README.md |
项目文档 |
MIT License
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请提交 Issue。