Releases: lingxiaoyiyu-hub/grok-register-win
Release list
v2.0.1
v2.0.1
一次完整的代码审查与修复。本版不含新功能,全部是修 bug、补安全、清死代码。
升级方式:下载新的 Source code 解压覆盖即可,
config.json不受影响。
🐛 用户反馈的问题
账号文件勾选框不显示对号 —— 已修复。
原来的复选框把绘制交给系统原生控件(appearance:auto + accent-color),
在部分 Windows 浏览器 / 系统主题下勾不出来:点了确实生效,但看不到任何标记。
(v1.x 那次「修复」是个空提交,实际什么都没改。)
现在改为 CSS 自绘对号,不依赖任何系统控件,任何内核 / 主题下表现一致。顺带:
- 点击整个单元格即可勾选,不用瞄准 18px 的小方块
- 选中行整行高亮
- 「删除选中」按钮实时显示已选数量,未选中时禁用
- 表头全选框支持半选状态
🔒 安全修复
逛个网页就能删掉你的账号(重要)
面板监听在本机,但浏览器里任意网页都能向 127.0.0.1:8787 发请求,
而面板此前照单全收。实测可从外部网站直接:启动 / 停止注册任务、
删除账号文件、整批替换工作区。
原因有三:默认无鉴权;get_json(force=True) 连 text/plain 也解析,
使跨站请求不触发 CORS 预检;multipart 上传本身就是「简单请求」。
现已加入两道闸:
- Host 头白名单 —— 挡住 DNS rebinding(把恶意域名解析到 127.0.0.1)
- 改状态的请求必须带同源
Origin/Referer—— 挡住跨站伪造请求
移除假的登录功能
PANEL_AUTH / PANEL_PASSWORD 已删除。它的 session 签名密钥硬编码在源码里
("grok-register-panel-local-secret"),任何人都能伪造登录态,
设了强密码也拦不住。安全性改由「只绑回环地址 + 同源校验」保证。
同时修掉登录流程里的开放重定向(/login?next=https://evil.example.com)。
其它
- 移除源码中硬编码的第三方 API bearer
- 邮箱访问凭证(JWT)不再原样打印进日志与面板
config.json写入后收紧文件权限
🔧 功能性 Bug
| 问题 | 说明 |
|---|---|
| 代理会偷偷改走直连 | 配置里写着 allow_proxy_fallback: false,但所有 HTTP 请求在代理报错时仍会静默直连重试,暴露真实出口 IP。现已遵守该开关 |
| 端口盲扫 + 偷改配置 | Clash 没开时会挨个试本机端口,试到哪个通就当代理用,还写回 config.json 覆盖手填值。现在会先发 CONNECT 验证对方确实是 HTTP 代理,且探测结果只对本次运行生效 |
GROK_PROXY 从未生效 |
README 说它能覆盖代理,但注册程序根本没读这个变量(此前靠偷改 config.json 才「看起来」有用)。现已真正接上 |
| 连点两下会起两个任务 | 「是否已在运行」的检查与置位不在同一临界区,两个任务争抢同一进程,停止只能停掉一个 |
| 异常被静默吞掉 | 注册循环在 finally 里 break 并调用可能抛异常的浏览器重启,会把本轮真正的错误替换掉,日志上看不出真实失败原因 |
| 换票时混入上一批凭证 | 上传新 SSO 时,后台转换线程可能在归档之后把上一批结果写回来,混进下载包。现按「工作区代次」作废在途任务 |
| 未知邮箱源静默降级 | provider 拼错一个字母会静默创建一个空配置邮箱,表现为「莫名收不到验证码」。现在直接报错 |
| PR 欢迎语从未触发 | workflow 的事件名判断写错(pull_request vs pull_request_target) |
🧹 清理与优化
- 移除服务器版:删掉遥控 Clash 换节点的约 120 行死代码(前端从未调用过)
及相关接口/api/nodes、/api/nodes/select - 移除
OutlookMailbox:约 1140 行从其它项目拷贝而来的死代码,
依赖本仓库不存在的模块,且引用未定义函数,一旦调用必崩 - CLI 不再依赖 tkinter:面板走的就是 CLI 模式,此前却在 import 阶段就硬依赖
图形库,没装 tcl/tk 的 Python 连 CLI 都起不来 - 日志改增量传输:面板每 2 秒轮询会重传整个 2000 行缓冲区(约 400KB),
现在只传新增行 - 移除 Google Fonts 外链:离线 / 内网环境下会阻塞渲染,且泄漏使用行为;改用系统字体栈
- 修复
datetime.utcnow()弃用告警、启动器忙轮询与文件句柄泄漏、
SSO cookie 优先级里一个永远不会执行的分支、CPA 计数语义混乱等
✅ 质量保障
本版新增 47 个回归测试(此前项目零测试)和 CI 工作流:
- 每一条安全修复都有对应测试,用的就是修复前能打穿的真实攻击请求
- 代理回退、端口探测、日志分页、上传解析、路径穿越防护等均有覆盖
- CI 在 Python 3.10 / 3.12 上跑
ruff+compileall+pytest
本地运行:
.venv\Scripts\python.exe -m pytest tests\ -q⚠️ 不兼容变更
- 服务器版发行包不再提供,本项目专注 Windows 本地使用
PANEL_AUTH/PANEL_PASSWORD/PANEL_SECRET已移除,设置这些变量不再有任何效果/api/nodes、/api/nodes/select接口已删除(前端从未使用)- 邮箱源
outlook/microsoft已移除(原本就无法运行) - 代理探测结果不再写回
config.json。若希望固定某个端口,请手动修改配置文件
v2.0.0
重大变更
面板 UI 全面重做
从深色科技蓝渐变改为暖米色「Atelier 简约工坊」风格,整体视觉语言完全更新。
| 项目 | 旧(v1.4.0) | 新(v2.0.0) |
|---|---|---|
| 背景 | 深色径向渐变 | 暖米色 #f7f4ed 纯净底 |
| 边框 | 1px 蓝灰线 + 圆角 10-16px | 1px 黑线 + 2px 微圆角 |
| 按钮 | 渐变填充 + 阴影 | 扁平铁锈红/墨黑/绿/琥珀 |
| 字体 | system-ui | Bricolage Grotesque + IBM Plex Sans/Mono + Noto Sans SC |
| 顶栏 | flex 分散布局 | 黑色通栏 + 铁锈红 Logo |
| 统计 | auto-fit 卡片 | 6 格通栏分割 |
| 日志 | 深色圆角框 | 深色通栏(与卡片无缝衔接) |
全中文化
所有界面文案改为中文,保留技术专有名词(CF Worker / SSO / CPA / API URL / OAuth 等)。
功能逻辑零改动
全部 id、API 调用、Jinja 变量、JS 函数原样保留,仅替换 HTML 结构和 CSS。注册、CPA 转换、邮箱配置、文件管理等功能行为与 v1.4.0 完全一致。
升级
- 下载本 Release 的 Source code (zip),或
git pull/ 检出v2.0.0 - 双击
start.bat - 浏览器 Ctrl+F5 强制刷新面板(首次加载新字体需联网)
服务器版资源(同版本附加包)
面向 Linux 无桌面服务器,内置 mihomo + 订阅链接面板 + 仅 Camoufox 无头。
- 附件:
grok-register-server-v2.0.0-mihomo.zip - 使用:解压后
chmod +x start.sh bin/mihomo && ./start.sh - 面板:
http://服务器IP:8787→ 配邮箱 → 填订阅并更新 → 开始注册 - 包内说明见
SERVER_README.md - 不含 密钥 /
config.json/ 账号数据
本地 Windows 请继续使用本 Release 中的常规资源 + 本机 Clash。
v1.4.0
重大变更
移除全部公共邮箱源
公共临时邮箱(TempMail.lol / DuckMail / GPTMail)均因 xAI 大规模拒收验证码而移除。面板邮箱下拉只保留自建与付费源。
- 已配置旧公共源的用户自动回退到 cfworker,不会报错
- 请切换到 CF Worker 自建域名 或其它可用源
邮箱配置层重构
cloudflare/custom/tempmailer等旧标识统一作为cfworker别名(同一协议)- 删除重复的下拉项与独立配置框
- 面板邮箱下拉精简为两组:
| 分组 | 邮箱源 |
|---|---|
| 自建 | CF Worker、MoeMail、Freemail、OpenTrashMail |
| 付费 | MaliAPI(YYDS)、LuckMail、SkyMail、CloudMail、Laoudo |
升级
- 下载本 Release 的 Source code (zip),或
git pull/ 检出v1.4.0 - 双击
start.bat - 浏览器 Ctrl+F5 强制刷新面板
- 在「邮箱服务」下拉选择自建或付费邮箱源并填写配置
Full Changelog: v1.3.1...v1.4.0
v1.3.1
Grok Register Win v1.3.1
修复
下载数量 = 面板当前账号数
- 下载 CPA / Sub2 只打包当前面板账号列表中的凭证
- 删除
accounts_*.txt时同步清理无主 CPA JSON - 避免「面板已删号,下载仍全量打包」
升级
- 下载本 Release 的 Source code (zip),或
git pull/ 检出v1.3.1 - 双击
start.bat - 浏览器 Ctrl+F5 强制刷新面板
相对 v1.3.0
- v1.3.0:上传 SSO / all.json 整批续期、工作区隔离
- v1.3.1:下载与删除严格对齐当前面板账号
v1.3.0
Grok Register Win v1.3.0
亮点
面板支持 上传已有 SSO(txt / CPA all.json)→ 整批换票 → 下载 CPA / Sub2,用于凭证续期与旧号池重铸,且与注册批次隔离。
新增
上传 SSO → CPA / Sub2
- 面板卡片:选择文件 → 上传并转换
- 支持格式:
email----password----ssoemail----sso- 纯 SSO 行
- CPA 导出
all.json/ 单账号xai-*.json(读取sso字段)
- 整批替换:上传前将当前
accounts_*.txt与data/cpa归档到data/archive/<时间戳>_upload/ - 转换复用现有
lib/sso2cpa_core.py(Authorization Code +referrer=grok-build) - 完成后仍用顶部按钮下载:
- SSO TXT
- CPA ZIP(
type=xai/auth_kind=oauth) - Sub2 ZIP(
sub2api-data)
工作区模式
| 模式 | 行为 |
|---|---|
| 上传 | 只保留本次上传批次;下载只反映该批 |
| 注册 | 从上传模式点「开始注册」时归档上传批次并清空,再跑注册 |
API
POST /api/sso/upload-convert(multipart 字段file)
升级
- 下载本 Release 的 Source code (zip) 并解压,或
git pull/ 检出v1.3.0 - 双击
start.bat - 浏览器 Ctrl+F5 强制刷新面板
- 在「上传 SSO → CPA / Sub2」试用续期流程
说明
- 上传依赖 JSON/TXT 中的 web SSO;SSO 过期则换票失败
- 换票成功后仍可能出现上游 403 对话权限被拒(号本身无 Build 对话权限),与本机转换无关
- 归档目录默认不上传到 Git(见
.gitignore)
v1.2.0
Grok Register Win v1.2.0
本版本为邮箱体系重大更新:移除已失效的内置公共临时邮,改为面板下拉多邮箱源,并接入 any-auto-register 风格收码流程。
重大变更
移除内置 Tempmailer
因大规模滥用,Tempmailer 等公共临时邮已拒收 xAI 验证码邮件(页面提示类似:emails from xAI are temporarily not accepted)。
请改用自建或其它邮箱源。
多邮箱源下拉
面板「邮箱服务」可选择:
| 源 | 说明 |
|---|---|
| CF Worker / 自建域名 | 推荐 |
| cloudflare_temp_email | 自建兼容接口 |
| MoeMail | 临时邮 API |
| TempMail.lol | 免 key 自动生成 |
| DuckMail / GPTMail | 第三方临时邮 |
| MaliAPI (YYDS) | 接码/邮箱 API |
| LuckMail | 接码/买邮 |
| SkyMail / CloudMail / Freemail / OpenTrashMail / Laoudo | 其它 API/固定邮箱 |
收码流程增强
- 发码前快照收件箱(
before_ids),忽略旧信 - 按发码时间过滤(
otp_sent_at) - 统一提取 Grok 验证码格式
ABC-DEF - 新增
lib/mailbox_core.py、lib/mail_providers.py、lib/base_mailbox.py、lib/luckmail/
修复
- 面板「保存邮箱设置」总是失败:删除重复的旧
saveEmailConfig覆盖新逻辑 - 未配置完整邮箱源时启动注册会明确提示并失败
升级方法
- 下载本 Release 的 Source code (zip) 并解压
- 或
git pull/ 检出v1.2.0 - 双击
start.bat - 浏览器强制刷新(Ctrl+F5)
- 在「邮箱服务」下拉选择源并保存后再注册
旧 config.json 可继续使用;建议对照 config.example.json 补全新字段。
使用建议
- 要稳定收 xAI 验证码:优先 CF Worker 自建域名
- 公共临时邮仅作备选,不保证可用
- 代理节点优先日本
完整变更(相对 v1.1.0)
见 README 更新日志 v1.2.0 与近期 commits。
v1.1.0
修复
注册成功后 SSO → CPA 自动转换失败,日志类似:
[CPA] FAIL ... authorize 未进入 consent 页: https://auth.x.ai/oauth2/authorize?...
根因:curl_cffi 固定使用 chrome131 TLS 指纹,被 Cloudflare 返回 403,authorize 请求根本没进 consent 页。
本版改动
- 启动时自动选择可用 TLS impersonate(优先
chrome136,并回退其它配置文件) - 识别 Cloudflare 拦截时输出明确错误(HTTP 状态 + impersonate),便于排查
- 不再把 CF 403 误报成「未进入 consent 页」
使用
覆盖更新或下 zip 后 重启 start.bat 再跑。
已注册但 CPA 失败的账号,重启后可补转;也可直接使用已转换的 data/cpa/xai-*.json。
v1.0.10
修复(你日志里那一步)
注册流程其实已经走到 填资料并提交 了,然后:
- Playwright 驱动在页面报错时崩溃(
pageError.location补丁不全) - 点 Cookie 弹窗时
page_eval卡 60 秒超时
本版改动
- 补全 Playwright
coreBundle.js补丁(1.60 有多处) - Cookie/同意弹窗脚本超时改为约 12 秒,失败不影响继续拿 SSO
- 修正 GeoIP(
camoufox.locales) - 优先用较新的 Camoufox 152 浏览器
使用
覆盖更新或下 zip 后 重启 start.bat 再跑。
你本地 1.0.8 目录若已打过补丁,重启即可,无需重下。
v1.0.9
修复
- 面板日志误过滤:含 “Camoufox” 的正常进度日志以前被当成噪音丢掉,看起来像卡死
- 首次下载不计入 5 分钟:Camoufox 浏览器首次下载在注册计时前完成,避免下载到一半被杀掉
- 下载有进度:首次 fetch 时日志会显示仍在下载
说明
如果你刚清过本机缓存,第一次用 Camoufox 需要再下载浏览器(约 1GB),属正常。
也可先改用 Chromium 有头 立即注册。
升级
下载本页 Source code (zip),或从 v1.0.8 覆盖 panel/app.py + lib/camoufox_backend.py 后重启 start.bat。
v1.0.8
主要更新
- 单账号 5 分钟硬超时:一个号卡住超过 5 分钟会自动终止,进入下一轮(
round_timeout_sec,默认300) - 成功后超时仍算成功:已经注册成功、卡在后续步骤(如 NSFW)时,不再整轮记失败
- 减少漏转 CPA:每轮结束都会扫描新账号文件并入队转换
- 不再改坏配置:面板不会把
config.json里的register_count强行改成 1
配置
config.json:
"round_timeout_sec": 300或环境变量:
$env:ROUND_TIMEOUT_SEC="300"范围:60–3600 秒。
升级
下载本 Release 源码包,或:
git pull
git checkout v1.0.8Windows:解压后双击 start.bat 即可(首次仍会建 venv / 装依赖)。
相对 v1.0.7
在 v1.0.7(Sub2 导出等)基础上,只增强注册卡住时的自动跳过与成功率统计/CPA 可靠性。