Add files via upload

This commit is contained in:
yowiv
2025-04-28 19:48:49 +08:00
committed by GitHub
parent d4d02649e1
commit 505805ca67
2 changed files with 86 additions and 1 deletions

View File

@@ -24,6 +24,7 @@
- 自建 CloudFreed 服务(免费)
- YesCaptcha 商业服务(付费/赠送)
- 📱 支持多种通知推送渠道
- 🔄 自动更新Cookie并保存至GitHub变量
## 🚀 使用方法
@@ -40,6 +41,7 @@
| `TG_BOT_TOKEN` | 可选 | Telegram 机器人的 Token用于通知签到结果 |
| `TG_USER_ID` | 可选 | Telegram 用户 ID用于接收通知 |
| `TG_THREAD_ID` | 可选 | Telegram 超级群组话题 ID用于在特定话题中发送通知 |
| `GH_PAT` | 可选 | GitHub Personal Access Token用于自动更新Cookie变量 |
> **注意**:若仅设置 Cookie 但未配置验证码服务,当 Cookie 过期后无法自动登录获取新 Cookie。
@@ -130,6 +132,37 @@ PASS3=密码3
> **注意**:基本的 `USER` 和 `PASS` 变量也会被识别,系统会自动检测所有设置的账号,并依次执行签到操作。
## 🔑 GitHub Personal Access Token 设置
为了实现自动更新Cookie功能脚本需要使用GitHub Personal Access Token (PAT)将获取的新Cookie保存到仓库变量中。
### 1. 创建Personal Access Token
1. 登录您的GitHub账户
2. 点击右上角头像 → 选择 "Settings"(设置)
3. 滚动到页面底部 → 点击 "Developer settings"(开发者设置)
4. 在左侧菜单选择 "Personal access tokens" → 点击 "Tokens (classic)"
5. 点击 "Generate new token" → 选择 "Generate new token (classic)"
6. 配置token
- 名称:填写一个描述性名称,如 "NodeSeek签到脚本"
- 过期时间根据需要选择推荐90天或更长
- 勾选权限:
- `repo` (完整的仓库访问权限)
- `workflow` (用于管理GitHub Actions)
7. 点击页面底部的 "Generate token" 按钮
8. **立即复制生成的token**,关闭页面后将无法再次查看
### 2. 添加到仓库Secrets
1. 进入您的NodeSeek-Signin仓库
2. 点击 "Settings" → "Secrets and variables" → "Actions"
3. 点击 "New repository secret"
4. 名称填写:`GH_PAT`
5. 值填写刚才复制的Personal Access Token
6. 点击 "Add secret" 保存
完成以上设置后签到脚本可以自动将有效的Cookie保存到GitHub仓库变量中下次运行时直接使用减少重复登录和验证码操作。
## 🔧 环境变量完整说明
| 变量名称 | 必要性 | 默认值 | 说明 |
@@ -138,9 +171,10 @@ PASS3=密码3
| `USER1``USER2`... | 可选 | - | NodeSeek 论坛用户名,当 Cookie 失效时使用 |
| `PASS1``PASS2`... | 可选 | - | NodeSeek 论坛密码 |
| `NS_RANDOM` | 可选 | true | 是否随机签到true/false |
| `SOLVER_TYPE` | 可选 | yescaptcha | 验证码解决方案turnstile/yescaptcha |
| `SOLVER_TYPE` | 可选 | turnstile | 验证码解决方案turnstile/yescaptcha |
| `API_BASE_URL` | 条件必需 | - | CloudFreed 服务地址,当 SOLVER_TYPE=turnstile 时必填 |
| `CLIENTT_KEY` | 必需 | - | 验证码服务客户端密钥 |
| `GH_PAT` | 可选 | - | GitHub Personal Access Token用于自动更新Cookie变量 |
| 各类通知变量 | 可选 | - | 支持多种推送通知平台配置 |
## 📊 验证码服务对比

View File

@@ -12,6 +12,38 @@ CLIENTT_KEY = os.environ.get("CLIENTT_KEY", "")
NS_RANDOM = os.environ.get("NS_RANDOM", "true")
SOLVER_TYPE = os.environ.get("SOLVER_TYPE", "turnstile")
def save_cookie_to_github_var(var_name: str, cookie: str):
"""将Cookie保存到GitHub仓库变量中"""
import requests as py_requests
token = os.environ.get("GH_PAT")
repo = os.environ.get("GITHUB_REPOSITORY")
if not token or not repo:
print("GH_PAT 或 GITHUB_REPOSITORY 未设置,跳过变量更新")
return
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/vnd.github+json"
}
url_check = f"https://api.github.com/repos/{repo}/actions/variables/{var_name}"
url_create = f"https://api.github.com/repos/{repo}/actions/variables"
data = {"name": var_name, "value": cookie}
response = py_requests.patch(url_check, headers=headers, json=data)
if response.status_code == 204:
print(f"{var_name} 更新成功")
elif response.status_code == 404:
print(f"{var_name} 不存在,尝试创建...")
response = py_requests.post(url_create, headers=headers, json=data)
if response.status_code == 201:
print(f"{var_name} 创建成功")
else:
print("创建失败:", response.status_code, response.text)
else:
print("设置失败:", response.status_code, response.text)
# 多账号支持
def parse_multi_accounts():
"""解析环境变量中的多账号信息,支持&和换行符作为分隔符"""
@@ -228,6 +260,8 @@ if __name__ == "__main__":
# 存储所有账号的通知信息
all_messages = []
# 用于收集有效的Cookie
valid_cookies = []
# 循环处理每个账号
for i, account in enumerate(accounts):
@@ -245,6 +279,8 @@ if __name__ == "__main__":
status = "签到成功" if sign_result == "success" else "今天已经签到过了"
print(f"{account_name}: {status}")
all_messages.append(f"{account_name}: {sign_message}")
# 收集有效的Cookie
valid_cookies.append(account["cookie"])
else:
# 签到失败或没有Cookie尝试登录
if account["user"] and account["pass"]:
@@ -261,6 +297,8 @@ if __name__ == "__main__":
message = f"{account_name}: {sign_message}"
if sign_result in ["success", "already_signed"]:
message += f"\nCookie: {cookie}"
# 收集新获取的有效Cookie
valid_cookies.append(cookie)
all_messages.append(message)
else:
print(f"{account_name}: 登录失败")
@@ -272,3 +310,16 @@ if __name__ == "__main__":
# 发送合并后的通知
if hadsend and all_messages:
send("nodeseek多账号签到", "\n\n".join(all_messages))
# 保存所有有效Cookie到GitHub变量
if valid_cookies and os.environ.get("GITHUB_ACTIONS") == "true":
print("\n===== 保存Cookie到GitHub变量 =====")
combined_cookies = "&".join(valid_cookies)
print(f"共收集到{len(valid_cookies)}个有效Cookie")
# 将Cookie保存到GitHub变量
try:
save_cookie_to_github_var("NS_COOKIE", combined_cookies)
print("Cookie已成功保存到GitHub变量")
except Exception as e:
print(f"保存Cookie时出现错误: {e}")