侧边栏壁纸
博主头像
一万AI分享

聚焦AI、数码、未来趋势,用内容解码科技世界。下一代的改变,今天开始讲给你听。

  • 累计撰写 31 篇文章
  • 累计创建 11 个标签
  • 累计收到 51 条评论

目 录CONTENT

文章目录

Docker Compose 部署 SheerID 自动认证机器人 (集成 MySQL & 完美解决 fraudRulesReject 风控)

一万AI分享
2025-12-15 / 0 评论 / 1 点赞 / 1918 阅读 / 0 字 / 正在检测是否收录...

本文将手把手教你部署 tgbot-verify 项目。这是一个基于 Telegram 的自动化工具,用于处理 SheerID 的学生/教师身份验证。

项目地址:https://github.com/PastKing/tgbot-verify?tab=readme-ov-file

本教程特别解决了以下两个痛点:

  1. 没有数据库环境:通过 Docker Compose 自动创建 MySQL 容器。

  2. 认证被拒绝 无需更换账号或重新注册 Google/OpenAI 账号。


🎯 支持的认证服务


🛠️ 前置准备

在开始之前,请确保你拥有:

  1. 一台美国IP的 Linux 服务器(推荐 Debian 12 或 Ubuntu 22.04)。

  2. 已安装 DockerDocker Compose

  3. Telegram Bot Token(通过 @BotFather 获取)和你的 Admin ID(通过 @userinfobot 获取)。


第一步:获取项目代码

登录服务器,拉取项目源码:

Bash

git clone https://github.com/PastKing/tgbot-verify.git
cd tgbot-verify

第二步:配置环境变量

复制示例配置文件并编辑:

Bash

cp env.example .env
nano .env

请修改 .env 文件,填入你的 Bot 信息。注意:数据库部分请严格按照下方填写,以便连接到我们即将创建的数据库容器。

Ini, TOML

# --- Telegram Bot 配置 ---
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11  # 替换为你的 Token(通过 @BotFather 获取)
CHANNEL_USERNAME=my_channel_name                    # 替换为你的频道用户名 (不带@)
CHANNEL_URL=https://t.me/my_channel_name            # 替换为你的频道链接
ADMIN_USER_ID=123456789                             # 替换为你的数字 ID(通过 @userinfobot 获取)

# --- MySQL 数据库配置 (保持如下配置,不要改动 Host) ---
# MYSQL_HOST 必须填 'db',这是 Docker 内部的服务名称
MYSQL_HOST=db
MYSQL_PORT=3306
MYSQL_USER=tgbot_user
MYSQL_PASSWORD=tgbot_secure_pass
MYSQL_DATABASE=tgbot_verify

第三步:创建 Docker Compose 文件 (含代理配置)

这是最关键的一步。我们需要创建一个 docker-compose.yml 文件,它包含数据库机器人以及解决风控所需的代理配置

在项目根目录下新建文件:

Bash

nano docker-compose.yml

复制并粘贴以下内容(注意修改代理部分):

YAML

version: '3.8'

services:
  # 数据库服务 (新增部分)
  db:
    image: mysql:5.7
    container_name: tgbot-mysql
    environment:
      MYSQL_ROOT_PASSWORD: root_secure_password  # Root 密码,可自行修改
      MYSQL_DATABASE: tgbot_verify               # 必须与 .env 一致
      MYSQL_USER: tgbot_user                     # 必须与 .env 一致
      MYSQL_PASSWORD: tgbot_secure_pass          # 必须与 .env 一致
    volumes:
      - ./mysql_data:/var/lib/mysql              # 将数据库数据持久化到当前目录
    networks:
      - tgbot_net
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

  # 机器人服务 (原项目)
  bot:
    build: .
    container_name: tgbot-verify
    env_file:
      - .env
    environment:
      - MYSQL_HOST=db  # 强制指定连接到上面的 db 服务
    volumes:
      - ./logs:/app/logs
      # 如果你需要修改内部配置代码,可以挂载这两个目录
      - ./one:/app/one
      - ./k12:/app/k12
      - ./spotify:/app/spotify
      - ./youtube:/app/youtube
      - ./Boltnew:/app/Boltnew
    depends_on:
      db:
        condition: service_healthy  # 等待数据库完全启动后再启动机器人
    networks:
      - tgbot_net
    restart: always

networks:
  tgbot_net:
    driver: bridge


第四步:启动服务

使用 Docker Compose 一键启动所有服务:

Bash

# 如果提示 docker-compose 未找到,请尝试使用 `docker compose up -d`
docker compose up -d

查看日志,确保没有报错:

Bash

docker compose logs -f

如果看到 Bot started 且没有数据库连接错误,说明部署成功!


此教程为您的机器人添加了针对以下服务的详细认证流程说明。请注意,SheerID 的认证核心逻辑都是通用的,区别主要在于入口链接获取所需身份材料

新增认证服务详细流程


1. Gemini One Pro (Google AI Premium) 认证

对应指令:/verify

Google 目前为高校学生提供 12 个月的 Google One AI Premium (包含 Gemini Advanced) 免费试用。

  • 前置要求

    • 建议使用干净的 Google 账号(未加入家庭组)。

  • 获取链接流程

    1. 浏览器(无痕模式)访问 Google One 学生优惠页面: https://gemini.google/tw/students/?hl=zh-TW 点击 【获取优惠】

    2. 登录您的 Google 账号。

    3. 点击页面上的 "Verify student status" (验证学生身份) 按钮。

    4. 页面会跳转到 SheerID 的验证表单。

    5. 关键步骤:此时复制浏览器地址栏中的长链接(包含 verificationId),发送给机器人。

  • 所需材料

    • .edu 邮箱(如有)。

    • 包含当前学期日期的录取通知书、成绩单或学生证。


2. ChatGPT Teacher K12 认证

对应指令:/verify2

OpenAI 为美国 K-12 (幼儿园至高中) 的教师提供免费的 ChatGPT Plus 功能(即 ChatGPT for Teachers)。

  • 前置要求

    • 必须使用 美国 (US) IP 地址。

    • 仅限 K-12 教师,大学教授通常需申请 ChatGPT Edu。

  • 获取链接流程

    1. 直接访问官方验证页面:https://chatgpt.com/k12-verification

    2. 点击开始验证,跳转至 SheerID 界面。

    3. 关键步骤:复制浏览器地址栏中的 https://services.sheerid.com/verify/... 完整链接,发送给机器人。

  • 所需材料

    • 教师工卡 (Teacher ID)。

    • 或者最近 90 天内的工资单 (Pay stub),需包含学校名称和您的姓名。

    • 学校官网的教师名录截图(包含您的名字和职位)通常也有效。


3. Spotify Student 认证

对应指令:/verify3

Spotify 学生会员认证,通常包含 Hulu (仅限美国) 和 Showtime。

  • 前置要求

    • IP 地址必须与您想要开通的 Spotify 账号所在国家一致(推荐美区账号用美国 IP)。

  • 获取链接流程

    1. 访问 https://www.spotify.com/us/student/

    2. 点击 "Get Premium Student""Try free for 1 month"

    3. 登录您的 Spotify 账号。

    4. 在跳转到 SheerID 填写学校信息的页面时,不要填写,直接复制浏览器地址栏的长链接。

    5. 将链接发送给机器人。

  • 所需材料

    • 本学期的课程表 (Class Schedule)。

    • 或者是显示当前日期的成绩单 (Transcript)。

    • 注意:Spotify 对文档审核较严,单纯的学生证 (ID Card) 如果没有明确的有效期通常会被拒。


4. Bolt.new Teacher 认证

对应指令:/verify4

Bolt.new (StackBlitz) 的教育优惠,通常通过 GitHub Student Developer Pack 或直接的 SheerID 验证提供 Pro 功能。

  • 获取链接流程

    1. 访问 Bolt.new 或 StackBlitz 的教育定价页面(如未直接提供入口,通常在 Settings -> Plans 中查找 "Education" 或 "Teacher" 选项)。

    2. 注意:由于 Bolt.new 较新,如果未找到直接入口,该指令可能通用适配于 AutodeskFigma 的教师认证流程(因为它们共享相似的 SheerID programId 逻辑)。

    3. 若为标准 SheerID 流程,进入验证页面后复制 URL 发送给机器人。

  • 所需材料

    • 教师资格证。

    • 聘书或学校出具的在职证明 (Official Letter)。

    • 学校官方邮箱验证通常能提高通过率。


5. YouTube Premium Student 认证

对应指令:/verify5

  • 特别说明:YouTube 的认证链接由 programIdverificationId 动态组成,不能直接复制地址栏,需要手动抓取。

  • 获取链接流程

    1. 电脑浏览器按 F12 打开开发者工具,切换到 Network (网络) 标签。

    2. 访问 https://www.youtube.com/premium/student

    3. 点击 "Try it for free" (免费试用)。

    4. 在 Network 面板的搜索框输入 verification

    5. 找到类似 https://services.sheerid.com/rest/v2/verification/... 的请求。

    6. 查看该请求的 Response (响应)Payload,找到 "verificationId": "xxxxxxxx""programId": "xxxxxxxx"

    7. 手动拼接链接https://services.sheerid.com/verify/YOUR_PROGRAM_ID/?verificationId=YOUR_VERIFICATION_ID

    8. 将拼接好的链接发送给机器人。

  • 所需材料

    • SheerID 在 YouTube 上的审核非常依赖 "当前学期" 的证明。

    • 推荐上传:包含姓名、学校、当前日期的注册缴费单 (Tuition receipt) 或 官方入学信 (Enrollment letter)。

🔧 常见报错与修复指南

在使用过程中,你可能会遇到以下两个主要错误,请对号入座进行修复。

适用范围:Gemini One Pro / ChatGPT Teacher K12

⚠️ 重要提示

由于 Gemini One Pro 和 ChatGPT Teacher K12 采用的是基于文档的验证方式,认证过程中出现失败属于正常现象。请保持耐心,按照以下步骤操作即可。

🔄 认证失败时的标准处理流程

当认证失败时,无需更换账号或重新注册 Google/OpenAI 账号。请按以下步骤“重置”认证链接:

  1. 手动干扰验证

    • 在浏览器中打开当前的 SheerID 验证页面。

    • 在上传文档的步骤,持续上传纯色图片(例如纯黑色或纯白色的图片)。

  2. 触发链接失效

    • 连续提交无效图片后,SheerID 系统会判定当前验证链接失效。

  3. 生成新链接

    • 链接失效后,系统通常会引导您重新开始,从而生成一个新的 SheerID 认证链接。

  4. 机器人重试

    • 复制这个新的链接

    • 将新链接发送给 Telegram 机器人,机器人将使用新链接为您进行下一轮认证尝试。


🚫 常见错误代码排查

错误:Step 2 Failure (400): invalidStep

报错示例:

JSON

步骤 2 失败 (状态码 400): {
  'verificationId': '6927a491fc1f830b9018a9d8',
  'currentStep': 'error',
  'errorIds': ['invalidStep'],
  ...
  'systemErrorMessage': "Verification with id ... can not perform step 'COLLECT_STUDENT_PERSONAL_INFO'"
}

原因分析:

  • 错误代码 invalidStep 意味着当前的 SheerID 链接状态异常

  • 机器人试图执行“提交个人信息”的步骤,但链接当前并不处于“填写个人信息表单”的页面(可能是已经过期的页面,或者是其他步骤的页面)。

解决方案:

  1. 检查链接:请自行在浏览器中打开该链接。

  2. 确认页面:确保链接打开后,直接显示的是提交学生/教师个人信息的表单页面。

  3. 重置链接:如果页面不对,请严格按照上文 “认证失败时的标准处理流程” 操作(上传纯色图片 -> 触发失效 -> 生成新链接 -> 发送给机器人)。

⚠️ 重要说明

🔴 使用前必读

在使用机器人之前,请务必检查并更新各模块的验证配置!

由于 SheerID 平台的 programId 可能会定期更新,使用前请确认以下配置文件中的 PROGRAM_ID 是否为最新:

  • one/config.py - Gemini One Pro 认证

  • k12/config.py - ChatGPT Teacher K12 认证

  • spotify/config.py - Spotify Student 认证

  • youtube/config.py - YouTube Premium Student 认证

  • Boltnew/config.py - Bolt.new Teacher 认证

如何获取最新的 programId

  1. 访问对应服务的认证页面

  2. 打开浏览器开发者工具(F12)→ 网络(Network)标签

  3. 开始认证流程

  4. 查找 https://services.sheerid.com/rest/v2/verification/ 请求

  5. 从 URL 或请求载荷中提取 programId

  6. 更新对应模块的 config.py 文件

提示:如果认证一直失败,很可能是 programId 已过期,请按上述步骤更新。

1

评论区