[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94079":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":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},94079,"grok-register-panel","lij768423-svg\u002Fgrok-register-panel","lij768423-svg","Grok register engine (Camoufox) + live web monitor panel",null,"Python",307,95,1,0,62,186,92.16,"MIT License",false,"main",true,[],"2026-08-01 04:02:10","\u003Cdiv align=\"center\">\n\n# Grok Register + Live Panel\n\nBased on [AaronL725\u002Fgrok-register](https:\u002F\u002Fgithub.com\u002FAaronL725\u002Fgrok-register) (MIT).\n\n批量注册 Grok 账号（Camoufox）+ Web 监控面板  \n启停 \u002F 并发 \u002F ASN 黑名单 \u002F 1h·3h·12h 成功率 \u002F **Token 鉴权**\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE)\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10%2B-3776AB.svg)\n![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Flij768423-svg\u002Fgrok-register-panel?style=flat)\n\n**仓库：** https:\u002F\u002Fgithub.com\u002Flij768423-svg\u002Fgrok-register-panel\n\n\u003C\u002Fdiv>\n\n---\n\n> **声明：** 仅供自动化流程研究、自有环境联调与个人学习。请遵守 xAI \u002F 邮箱 \u002F 代理服务商条款与当地法律，勿用于未授权批量滥用。\n\n## 功能一览\n\n| 能力 | 说明 |\n|------|------|\n| 注册全链路 | 邮箱 OTP → 资料页 → Turnstile → SSO → Device \u002F OAuth → 写入 CPA \u002F Grok2API |\n| 多邮箱后端 | Cloudflare Worker 邮、DuckMail、YYDS、MailNest、CloudMail 等 |\n| 反检测浏览器 | [Camoufox](https:\u002F\u002Fcamoufox.com\u002F)（Gecko 层指纹） |\n| 出口预检 | 启动前解析出口 IP \u002F ASN，命中黑名单直接换口 |\n| 风控早停 | `botFlagSource=1` + `policy=deny` 时跳过后续 OAuth，避免无效重试 |\n| 编排器 | 多轮 batch、风控满 N 暂停、ASN 自动扩黑；规则写入 JSON 状态，不修改源码 |\n| **Live 面板** | 启停、并发、再跑 N、黑名单、时段成功率和账号补录；操作 API 需 `MONITOR_TOKEN` |\n| 外部代理池 | 面板单条\u002F批量导入、去重、探活、启停、删除；记录出口 IP、ASN、延迟和冷却状态 |\n| 邮箱域名池 | 自有域名\u002F子域名导入、provider 绑定、连续拒绝阈值、自动拉黑、活跃数限制和手动重置 |\n| 失败恢复 | 待处理 SSO \u002F accounts 文本补录 CPA，跳过已有账号，成功后自动出队 |\n| 安全存储 | 代理、账号、SSO、日志、auth 与运行状态默认使用 owner-only 权限 |\n\n## 界面预览\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs\u002Fscreenshots\u002Fdashboard-dark.png\">\n  \u003Cimg alt=\"Grok Register 注册控制台\" src=\"docs\u002Fscreenshots\u002Fdashboard-light.png\">\n\u003C\u002Fpicture>\n\n控制台集中展示任务参数、批次进度、时段成功率、账号补录和黑名单状态；图片会跟随 GitHub 的深浅主题自动切换。\n\n## 架构示意\n\n```text\n┌─────────────────┐     HTTP proxy      ┌──────────────────┐\n│  Camoufox 注册机 │ ──────────────────► │ 本地代理 mixed 口 │\n│  (多 worker)     │   127.0.0.1:79xx    │ (可选链式 dialer) │\n└────────┬────────┘                     └────────┬─────────┘\n         │                                        │\n         │ SSO \u002F Device Flow                      ▼\n         ▼                                 住宅出口 \u002F 其它出口\n   cpa_auth\u002F · grok2api_auth\u002F\n         │\n         ▼\n┌─────────────────┐\n│ webui\u002Fmonitor   │  读 log\u002Fregister_results.jsonl · CPA 目录\n│ :8787 Live 面板 │  启停 run_until_100 \u002F run_batch_headless\n│ + Bearer token  │  浏览器填「访问令牌」→ localStorage\n└─────────────────┘\n```\n\n说明：**注册机本身只配置一层 HTTP 代理 URL**。若需要「先节点再家宽」等链式出口，在代理客户端（如 mihomo `dialer-proxy`）配置，对注册机透明。\n\n## 快速开始\n\n### 环境\n\n- Python 3.10+\n- Linux 无头建议带 Xvfb；macOS 可本机 GUI\u002F有头\n- 能访问注册页、临时邮箱 API、`auth.x.ai` 的网络\n\n### 安装\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Flij768423-svg\u002Fgrok-register-panel.git\ncd grok-register-panel\n\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate          # Windows: .venv\\Scripts\\activate\n\npip install -r requirements.txt\npython -m camoufox fetch           # 必须：下载浏览器引擎（约数百 MB）\n\ncp config.example.json config.json\n# 编辑 config.json：邮箱、proxy、cpa_auth_dir 等\n```\n\n> `pip install` 只装 Python 依赖；**不执行 `camoufox fetch` 无法启动浏览器**。\n\n### 配置（`config.json`）\n\n| 字段 | 说明 |\n|------|------|\n| `email_provider` | `cloudflare` \u002F `duckmail` \u002F `yyds` \u002F `mailnest` \u002F `cloudmail` \u002F `moemail` |\n| `defaultDomains` | 临时邮域名（如二级 CF 域） |\n| `cloudflare_*` \u002F `duckmail_*` 等 | 对应邮箱 API |\n| `moemail_api_base` | MoeMail 站点根 URL，例如 `https:\u002F\u002Fmail.example.com` |\n| `moemail_api_key` | MoeMail OpenAPI 的 `X-API-Key` |\n| `moemail_domain` | 可选固定域名；留空时自动读取 `\u002Fapi\u002Fconfig` 的可用域名 |\n| `moemail_expiry_ms` | `3600000` \u002F `86400000` \u002F `604800000` \u002F `0`，分别为 1 小时、1 天、7 天、永久 |\n| `proxy` | 默认 HTTP 代理，如 `http:\u002F\u002F127.0.0.1:7890` |\n| `proxies.txt` | 可选的旧版多行代理文件；未配置面板代理池时继续兼容 |\n| `register_workers` | 并发浏览器数（建议先 2～3） |\n| `register_count` | 单次目标数量 |\n| `cpa_auto_add` | 是否 SSO→OAuth 并写入 auth |\n| `cpa_auth_dir` | 本地 CPA 目录（`xai-*.json`） |\n| `grok2api_auth_dir` | Grok2API 风格 auth 目录 |\n| `cpa_remote_url` \u002F `cpa_management_key` | 远程 CPA Management API（可选） |\n\n### 环境变量\n\n| 变量 | 默认 | 说明 |\n|------|------|------|\n| `MONITOR_TOKEN` | （空） | **必设**：面板写接口鉴权；未设时 start\u002Fstop\u002Fcontrol 一律 401 |\n| `MONITOR_HOST` | `127.0.0.1` | 面板绑定地址；**绑定失败不会回退到 `0.0.0.0`** |\n| `MONITOR_PORT` | `8787` | 面板端口 |\n| `PANEL_INCLUDE_TAIL` | `0` | `1` 时状态接口附带原始日志尾部（可能含敏感信息，默认关） |\n| `CPA_AUTH_DIR` | `.\u002Fcpa_auth` | 编排器 \u002F 面板统计 CPA 数量 |\n| `BATCH_LOG` | 自动发现最新 `log\u002Fbatch*.log` | 面板跟踪的日志 |\n| `BLACKLIST_STATE_FILE` | `.\u002Flog\u002Fblacklist_state.json` | 运行时 ASN 黑名单状态 |\n| `GROK_BATCH_IDLE_TIMEOUT` | `360` | batch 子进程连续无输出多少秒后自动重建（最小 60 秒） |\n| `GROK_BATCH_MAX_RESTARTS` | `8` | 单批发生驱动崩溃或卡死时最多自动恢复次数 |\n| `PROXY_POOL_STATE_FILE` | `.\u002Flog\u002Fproxy_pool.json` | 外部代理池凭据、健康与冷却状态，文件权限 `0600` |\n| `PROXY_NETWORK_COOLDOWN_SECONDS` | `90` | 运行时网络异常的短冷却秒数 |\n| `PROXY_RISK_COOLDOWN_SECONDS` | `1800` | 注册风控后的长冷却秒数 |\n| `EMAIL_PROVIDER_CONFIG_FILE` | `.\u002Fconfig.json` | 面板邮箱服务配置文件；保存时保持 `0600` |\n| `EMAIL_DOMAIN_POOL_STATE_FILE` | `.\u002Flog\u002Femail_domain_pool.json` | 邮箱域名池状态与规则，文件权限 `0600` |\n\n生成 token 示例：\n\n```bash\n# Linux \u002F macOS\npython3 -c \"import secrets; print(secrets.token_urlsafe(24))\"\n```\n\n### 跑起来\n\n**A. Web 面板（推荐）**\n\n```bash\nexport MONITOR_TOKEN='你的长随机串'   # 必设，否则点启动会 401\nexport MONITOR_HOST=127.0.0.1         # 仅本机；局域网请改成具体网卡 IP\nexport MONITOR_PORT=8787\nexport CPA_AUTH_DIR=.\u002Fcpa_auth\n# 可选：需要页面里看原始日志尾时\n# export PANEL_INCLUDE_TAIL=1\n\npython webui\u002Fmonitor.py\n# 浏览器打开 http:\u002F\u002F127.0.0.1:8787\u002F\n```\n\n1. 页面顶部 **控制** 区找到 **面板 Token** 输入框  \n2. 填入与 `MONITOR_TOKEN` **相同**的字符串（自动写入 `localStorage`）  \n3. 设模式 \u002F workers \u002F batch 数量 \u002F 再跑 N \u002F 风控满 N → **启动**\n4. 需要多出口时打开顶部 **代理池**，导入代理并等待检测完成\n5. 打开顶部 **邮箱服务**，选择 provider、填写对应参数，保存后执行一次连接测试\n6. 需要多个自有收信域名轮换时，再展开 **域名轮换 · 高级设置** 导入域名并保存规则\n\n也可在控制台手动写入：\n\n```js\nlocalStorage.setItem('MONITOR_TOKEN', '你的长随机串')\nlocation.reload()\n```\n\n若未填 token 点启动，会看到：\n\n```text\nunauthorized: set MONITOR_TOKEN and pass Authorization: Bearer \u003Ctoken>\n```\n\n这是预期行为，不是注册链路崩溃。\n\n**B. 命令行单批（无头 Linux）**\n\n```bash\nxvfb-run -a python -u run_batch_headless.py 20 3\n#                        数量↑        并发↑\n```\n\n单批由独立监督进程运行。Playwright\u002FCamoufox 驱动崩溃，或连续超过\n`GROK_BATCH_IDLE_TIMEOUT` 没有输出时，监督进程会结束故障子进程并按原子进度文件\n继续剩余数量；已经写入的账号、SSO 和 CPA 文件不会回滚。\n\n**C. 编排器**\n\n```bash\n# 由面板写入 log\u002Fmonitor_control.json（workers \u002F add_count \u002F risk_pause …）\npython -u run_until_100.py\n```\n\n**D. GUI**\n\n```bash\npython grok_register_ttk.py\n```\n\n## Live 面板说明\n\n### 控制\n\n| 控件 | 作用 |\n|------|------|\n| **面板 Token** | 与环境变量 `MONITOR_TOKEN` 一致；启停\u002F保存\u002F重置黑名单必填 |\n| 模式 Orch | 跑 `run_until_100.py` 多轮直到目标 CPA |\n| 模式 单批 | 只跑一轮 `run_batch_headless` |\n| workers | 并发浏览器 |\n| batch 数量 | 单批账号数上限相关 |\n| **再跑 N 个** | 从**当前** CPA 再注册 N 个（目标已满时点启动不会秒退） |\n| 风控满 N 暂停 | 本轮注册风控达到 N 后停 batch 并分析 ASN |\n\n### 鉴权约定\n\n| 接口 | 鉴权 |\n|------|------|\n| `GET \u002F` · `GET \u002Fapi\u002Fhealth` | 可匿名；不返回运行数据 |\n| `GET \u002Fapi\u002Fstatus` · `\u002Fapi\u002Fstats` · `\u002Fapi\u002Fcontrol` · `\u002Fapi\u002Fblacklist` · `\u002Fapi\u002Frecovery` · `\u002Fapi\u002Fproxies` · `\u002Fapi\u002Femail-domains` | 配置了 Token 后必须鉴权 |\n| `POST \u002Fapi\u002Fstart` · `\u002Fapi\u002Fstop` · `\u002Fapi\u002Fcontrol` · `\u002Fapi\u002Fblacklist\u002Freset` · `\u002Fapi\u002Frecovery\u002F*` · `\u002Fapi\u002Fproxies\u002F*` · `\u002Fapi\u002Femail-domains\u002F*` | 必须 `Authorization: Bearer \u003CMONITOR_TOKEN>` |\n| `PATCH \u002Fapi\u002Fproxies\u002F{id}` · `DELETE \u002Fapi\u002Fproxies\u002F{id}` · `PATCH\u002FDELETE \u002Fapi\u002Femail-domains\u002F{id}` | 必须 `Authorization: Bearer \u003CMONITOR_TOKEN>` |\n\n前端 `api()` 会从 Token 输入框 \u002F `localStorage.MONITOR_TOKEN` \u002F `window.MONITOR_TOKEN` 自动带头。\n\n### 外部代理池\n\n- 支持单条或批量粘贴 `http:\u002F\u002Fuser:pass@host:port`、`host:port:user:pass`，也兼容 HTTPS \u002F SOCKS URL\n- 导入时规范化并去重，随后后台并发探活；GET 接口轮询检测进度\n- API 和 UI 只返回脱敏端点及 `has_auth`，不会返回代理账号或密码\n- worker 只选择“健康 + 启用”的条目，并在每个新账号创建浏览器前热加载一次\n- 一个账号从注册、SSO 到 OAuth 始终固定同一代理，不会中途更换出口\n- 网络异常进入短冷却，注册风控进入长冷却；邮箱域名、验证码或邮箱 API 错误不处罚代理\n- 面板池已有条目但没有健康代理时任务会明确停止，不会绕过状态回退到旧文件\n- `proxies.txt` 可从界面导入；只有面板池完全未配置时，worker 才直接兼容旧文件 \u002F `config.proxy`\n\n代理池不抓取、不分发公共代理，只管理操作者自己提供的外部代理。\n\n### 邮箱服务与高级域名轮换\n\n- 顶部“邮箱服务”统一配置 `cloudflare`、`duckmail`、`yyds`、`mailnest`、`cloudmail`、`moemail`\n- 切换服务商时只显示该服务实际支持的字段；保存后新的注册任务读取 `config.json`\n- 已保存的 API Key、JWT 和密码不会通过接口或页面回显；密钥输入留空会保留原值，必须点“清除”并保存才会删除\n- “测试当前提供商”使用表单中的未保存内容做非破坏性连通性检查，不会改写 `config.json`\n- `config.json` 以原子方式更新并保持 `0600`，现有无关配置项不会被覆盖\n\n域名轮换位于邮箱服务页的高级设置中：\n\n- 支持导入根域名或已有子域名，并绑定 `cloudflare`、`cloudmail`、`moemail`、`yyds` provider\n- 每个 provider 可设置最大活跃域名数；超出部分待命，活跃域名停用或拉黑后自动补位\n- xAI 明确拒绝邮箱域名时累计连续失败，达到阈值后自动拉黑；成功提交邮箱后清零连续失败\n- 邮箱 API、验证码超时和普通网络异常不会处罚域名，避免把基础设施故障误判成域名质量问题\n- 通过“启用”“重置”“删除”管理条目；对应 provider 的面板池配置后，域名池耗尽不会回退旧配置\n- `duckmail` 与 `mailnest` 的域名由上游服务分配，不能在面板中伪造自定义域名池\n\n域名池只保存域名和运行统计，不保存邮箱账号密码或 provider 密钥。\n\n### 时段成功率\n\n基于 `log\u002Fregister_results.jsonl`（纯 JSON Lines，无横幅污染）：\n\n```text\n成功率 = ok \u002F (ok + fail + risk) × 100%\n窗口：近 1 小时 \u002F 3 小时 \u002F 12 小时\n```\n\n### 黑名单\n\n- 下号前解析出口 ASN，命中则换 sticky \u002F 代理口  \n- 编排器在风控累计到阈值后，对「几乎只有失败」的 ASN 扩黑  \n- 自动扩展写入 `log\u002Fblacklist_state.json`，不会改写或执行 Python 源码\n- 面板可 **刷新列表**；**重置** 为写操作，同样需要 Token  \n\n### 账号补录\n\n- **补录待处理**：读取 `accounts\u002Fsso_pending.txt`，跳过 CPA 已存在邮箱，成功一条立即原子出队\n- **扫描全部账号**：扫描 `accounts\u002F*.txt` 并对缺失 CPA 的记录执行转换，不删除原账号文件\n- 补录运行在独立子进程，面板可查看数量、上次结果和停止任务\n- 命令行等价入口：\n\n```bash\npython sso_to_auth_json.py \\\n  --sso accounts\u002Fsso_pending.txt \\\n  --from-config config.json \\\n  --consume-success \\\n  --report-json log\u002Frecovery_report.json\n```\n\n## 工程实践备忘（非教程承诺）\n\n以下为社区常见踩坑方向，**环境差异大，仅供参考**：\n\n1. 邮箱：二级域名临时邮往往比批发一级域 \u002F 大盘 Outlook·Google 更省事  \n2. 出口：质量与冷却窗口影响大；同一出口短时间打太满容易抬失败率  \n3. 风控字段：服务端 deny 后宜尽早结束 OAuth 路径  \n4. 并发建议从 2～3 起跳，过高易空页、Turnstile 卡住、代理打满  \n5. 「资料填写失败」有时是资料页人机未过，不一定是姓名密码写不进  \n6. 链式代理在客户端配，不在注册机 Python 里写死  \n\n## 目录结构\n\n```text\n.\n├── grok_register_ttk.py       # GUI + CLI 主程序\n├── register_flow.py           # 注册页流程 \u002F Turnstile\n├── browser_session.py         # 会话、出口探测、ASN 黑名单\n├── sso_to_auth_json.py        # SSO → OAuth \u002F 写 CPA（auth 文件 0600）\n├── camoufox_adapter.py\n├── connectivity.py\n├── run_batch_headless.py      # 无头批量（包根 Path 后 chdir）\n├── run_until_100.py           # 编排器\n├── webui\u002F\n│   ├── monitor.py             # Live 面板 HTTP 服务\n│   ├── security_utils.py      # redact \u002F token 校验\n│   ├── blacklist_store.py     # 锁保护的 JSON 黑名单状态\n│   ├── proxy_store.py         # 外部代理池、探活、冷却与脱敏视图\n│   ├── email_domain_store.py  # 邮箱域名池、拒绝阈值与轮换状态\n│   ├── process_utils.py       # 当前项目实例的进程发现 \u002F 停止\n│   ├── recovery_ops.py        # SSO \u002F accounts 异步补录\n│   └── blacklist_ops.py       # 面板黑名单接口\n├── email_providers\u002F\n├── tests\u002F                     # 结构 \u002F 脱敏 \u002F chdir 冒烟\n├── scripts\u002F                   # xvfb 辅助脚本\n├── config.example.json\n├── proxies.example.txt\n├── requirements.txt\n├── DEPLOYMENT.md\n├── LICENSE · NOTICE\n└── README.md\n```\n\n## 自检\n\n```bash\n# 无需 pytest；运行全部发布检查\nPYTHON_BIN=.venv\u002Fbin\u002Fpython scripts\u002Frun_tests.sh\n```\n\n部署前还应执行：\n\n```bash\n.venv\u002Fbin\u002Fpython -m pip check\n.venv\u002Fbin\u002Fpython scripts\u002Fharden_runtime_permissions.py .\n```\n\n## 常见问题\n\n**Q: 点启动报 `unauthorized: set MONITOR_TOKEN...`？**  \nA: 服务端已启用写接口鉴权。启动 monitor 时 `export MONITOR_TOKEN=...`，浏览器 **面板 Token** 填同一串（或 `localStorage.setItem`）。硬刷新后再点启动。\n\n**Q: 日志尾部显示 `raw log tail disabled`？**  \nA: 默认关闭防泄密。需要时 `export PANEL_INCLUDE_TAIL=1` 后重启 `monitor.py`。\n\n**Q: 点启动立刻结束？**  \nA: CPA 已达旧目标。面板填大 **再跑 N 个** 再启动；编排器用 `add_count` 抬目标。\n\n**Q: 全是「无法解析出口 IP」？**  \nA: 打开顶部“代理池”查看异常和冷却原因，重新检测后只启用健康条目。旧版单代理仍可用 `curl -x http:\u002F\u002F127.0.0.1:端口 https:\u002F\u002Fhttpbin.org\u002Fip` 单独探活。\n\n**Q: 提示“面板代理池没有健康且启用的代理”？**\nA: 导入项尚未检测、已停用、检测失败或仍在冷却。先在代理池页面执行“检测全部”；面板池已配置时不会回退复用旧文件中的坏代理。\n\n**Q: 邮箱域名被自动拉黑，或域名池没有可用项？**\nA: 只有 xAI 明确拒绝邮箱域名才会累计。打开“邮箱服务”并展开“域名轮换 · 高级设置”查看连续拒绝次数，确认 provider 与域名绑定正确；可手动重置或启用其它待命域名。邮箱 API、验证码超时不会触发域名拉黑。\n\n**Q: 邮箱 API 401？**  \nA: 打开“邮箱服务”检查对应 provider 的 Key \u002F JWT \u002F `auth_mode`，保存后点“测试当前提供商”。页面不会回显已保存密钥，输入框留空表示保留原值。\n\n**Q: `Address already in use` \u002F 面板打不开？**  \nA: 8787 被其它进程占用（例如同机其它服务）。换 `MONITOR_PORT`，或先释放端口。绑定失败**不会**自动改绑 `0.0.0.0`。\n\n**Q: Windows？**  \nA: 主要在 macOS 与无界面 Linux 验证；Windows 需自备显示\u002F依赖，欢迎 PR。\n\n**Q: 面板和真实进程不一致？**  \nA: 看 `log\u002Forch100-stdout.log` 与最新 `log\u002Fbatch-*.log`；欢迎提 issue \u002F PR。\n\n**Q: accounts 文本或待处理 SSO 怎么补录 CPA？**\nA: 在控制台使用“账号补录”。待处理模式成功后自动出队；扫描全部账号模式会保留原始文本，并跳过本地 CPA 已存在邮箱。\n\n## 安全\n\n- **必须**设置 `MONITOR_TOKEN`；不要把 token 提交进仓库或贴进公开 issue  \n- **不要提交** `config.json`、`accounts\u002F`、`cpa_auth\u002F`、`proxies.txt`、`log\u002Fproxy_pool.json`、`log\u002Femail_domain_pool.json`、真实 stickies、`log\u002Fmonitor.token`\n- `.gitignore` 已忽略上述路径  \n- 运行数据、日志、PID、代理和账号文件使用 0600，父目录使用 0700\n- API 响应带 CSP、禁止 iframe、安全类型与 Referrer Policy；请求体上限 64 KiB\n- 停止任务只匹配当前项目根目录，不按全系统模糊命令行误杀\n- 开源前自查：`grep -R api_key --include='*.json' .`（勿提交真实配置）  \n- 面板默认**不**回传原始日志尾；生产环境固定 `PANEL_INCLUDE_TAIL=0`\n\n## 更新记录（摘录）\n\n| 提交方向 | 内容 |\n|----------|------|\n| 面板鉴权 | `MONITOR_TOKEN` + Bearer；UI 内 Token 输入；CORS 不开放 `*` |\n| 绑定安全 | 失败不回退 `0.0.0.0`；默认 `PANEL_INCLUDE_TAIL=0` |\n| 脱敏 | `webui\u002Fsecurity_utils.py`；JSONL \u002F 日志去凭据 |\n| 路径 | `run_batch_headless` \u002F blacklist 使用包相对 ROOT，无硬编码机器路径 |\n| 稳定性 | `from __future__` 置顶；`Path` 先于 `chdir`；workers DOM id 拆分 |\n| 结果流 | `register_results.jsonl` 仅 JSON 行 |\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flij768423-svg\u002Fgrok-register-panel\u002Fstargazers\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs\u002Fstar-history-dark.svg\">\n    \u003Cimg alt=\"Grok Register Panel GitHub Star 增长趋势\" src=\"docs\u002Fstar-history-light.svg\">\n  \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n图表根据 GitHub Stargazer 时间戳生成，由 GitHub Actions 每日更新，不依赖第三方绘图接口。\n\n## 友情链接\n\n- [LINUX DO](https:\u002F\u002Flinux.do) — 新的理想型社区\n\n## License\n\n[MIT](LICENSE) — 见 [NOTICE](NOTICE) 对 AaronL725\u002Fgrok-register 的归属说明。面板内嵌 Geist 字体使用 [SIL OFL 1.1](LICENSES\u002FOFL-1.1-Geist.txt)。\n\n## 致谢\n\n- [Camoufox](https:\u002F\u002Fcamoufox.com\u002F)\n- [CLIProxyAPI](https:\u002F\u002Fgithub.com\u002Frouter-for-me\u002FCLIProxyAPI) 等下游生态\n- 上游 [AaronL725\u002Fgrok-register](https:\u002F\u002Fgithub.com\u002FAaronL725\u002Fgrok-register)\n- 社区里分享风控字段与工程经验的各位\n\n---\n\nStar 鼓励一下 → https:\u002F\u002Fgithub.com\u002Flij768423-svg\u002Fgrok-register-panel\n",2,"2026-07-31 02:30:03","CREATED_QUERY"]