zc-zhangchen/any-auto-register

Python

3,626

339 commits

updated Sep 20, 2026

See the code

README

Any Auto Register

LINUX DO

⚠️ 免责声明:本项目仅供学习与研究使用,不得用于任何商业用途。使用本项目所产生的一切后果由使用者自行承担。

中文 | English | Tiếng Việt

多平台账号自动注册与管理系统,支持插件化扩展、Web UI 管理、批量注册、状态同步,以及本地 Turnstile Solver 自动拉起。

目录

当前界面与实际平台展示

根据当前前端代码与界面,左侧“平台管理”菜单默认显示的平台为:

  • ChatGPT
  • iCloud(Hide My Email 隐私邮箱)

功能特性

  • 多平台账号注册与管理:统一的账号列表、详情、导入、多格式导出、删除、批量操作
  • iCloud 隐私邮箱:Apple ID 主号登录(SRP + 双重认证 / Cookie 导入)、Hide My Email 批量生成与收件箱查看
  • 多执行器模式:纯协议、无头浏览器、有头浏览器
  • 多邮箱服务接入:支持内置、第三方、自建 Worker 邮箱等多种方案
  • 验证码支持:YesCaptcha、本地 Turnstile Solver(Camoufox)
  • 手机接码:SmsBower / HeroSMS 自动租号收码,ChatGPT 命中 add-phone 时全程无人值守
  • 代理能力:代理池轮询、代理状态维护、注册过程代理接入
  • 批量注册:支持注册数量、并发数、每个账号启动延迟设置
  • 实时日志:前端实时查看注册日志
  • 任务历史管理:支持历史记录查看与批量删除
  • 插件化扩展:可按需接入外部服务和独立管理端

自营产品

感谢以下自营产品对 any-auto-register 的支持。

Logo名称介绍官网
阿晨小铺阿晨小铺本人经营gpt等虚拟产品,诚信稳定,有保障https://faka.gsyun.cloud/
zc-apizc-api面向 Claude Code、Codex 等模型调用场景的中转服务,10G 带宽保障首字响应更快、链路稳定。提供高可用接口、便捷接入与持续交付支持,适合开发者与团队长期使用;支持开具发票,详情可前往官网查看。https://api.codelife.eu.cc/

赞助商目录

感谢以下朋友与伙伴对 any-auto-register 的支持。

Logo名称介绍官网
IPWOIPWOIPWO 住宅代理适用于浏览器自动化、多地区网络访问、数据采集及在线业务测试等场景。

对于 any-auto-register 这类涉及浏览器自动化、代理池管理和多环境运行的项目,IPWO 住宅代理可用于配置不同浏览器会话的网络环境,支持灵活的 IP 切换与地区选择,为自动化任务提供更加便捷的代理接入方式。

提供 195+ 地区动静态 IP 资源,支持 http/https/socks5 协议,免费测试。

专属优惠码:0204(优惠 10%)
https://www.ipwo.net/?ref=githubanyautoregister

界面预览

仪表盘

仪表盘

全局配置 / 插件管理

全局配置 / 插件管理

技术栈

层级技术
后端FastAPI + SQLite(SQLModel)
前端React + TypeScript + Vite
HTTPcurl_cffi
浏览器自动化Playwright / Camoufox
ChatGPT 注册协议纯协议实现,Sentinel PoW 走 Node 沙箱

环境要求

  • Python 3.12+
  • Node.js 18+(既用于构建前端,也是 ChatGPT Sentinel PoW 求解器的运行时,注册时必须可执行)
  • Conda(推荐)
  • Windows(推荐直接使用仓库内启动脚本)

ChatGPT 专项能力

当前版本里,ChatGPT 是功能最完整的平台之一,不仅支持注册,还支持 Token 生命周期管理、状态探测和外部系统同步。

1. 注册协议

ChatGPT 的整条注册链路位于 platforms/chatgpt/protocol/,是纯协议实现,不需要浏览器:

  • http_client.py —— 基于 curl_cffi 的 TLS 指纹会话
  • auth_flow.py —— 驱动 OpenAI authorize 状态机(注册、OTP、add-phone、Codex OAuth)
  • sentinel_quickjs.py + openai_sentinel_quickjs.js —— 在 Node 沙箱里跑 OpenAI 真实的 sdk.js 求解 Sentinel PoW

⚠️ Sentinel 需要 Node 运行时。 自己合成的 PoW token 能骗过 /sentinel/req 的表层校验,但发码服务会在服务端复核,结果是验证码邮件被静默丢弃——链路看着一切正常却永远收不到码。所以必须有可执行的 node(>= 18),如果不在 PATH 里可用 OPENAI_SENTINEL_NODE_PATH 指定绝对路径。

协议层之上只有三个注入点:邮箱池适配器(protocol/mailbox_adapter.py)、手机接码控制器(services/sms_service.py)、密码生效回调。任务级配置通过实例参数下传,不写进程环境变量,因此多个注册任务并发时互不干扰。

2. ChatGPT Token 方案切换

前端当前提供两种 ChatGPT 注册模式:

  • 有 RT(默认推荐)
    • 完整跑一遍 Codex OAuth
    • 产出 Access Token + Refresh Token
  • 无 RT
    • 跳过 Codex OAuth(每次省约 10 秒)
    • 仅产出 Access Token / Session
    • 依赖 RT 的后续能力可能不可用

这项切换在以下位置都能看到:

  • 注册任务页
  • ChatGPT 平台注册弹窗

3. ChatGPT 注册方式

同样两个位置还能选注册用什么身份,和上面的 Token 方案可以任意组合:

  • 邮箱注册(默认)
    • 从邮箱池领地址,收邮件验证码
  • 手机注册
    • 从接码平台租号,收短信验证码,不占用邮箱
    • 账号在列表里以手机号为标识
  • 手机注册 + 绑定邮箱
    • 先用号码注册,再把邮箱池里的地址绑到账号上,收一次邮件验证码
    • 绑定成功后账号按邮箱记账,手机号留在账号详情里

后两种都要先在「设置 → 手机接码」里启用接码并填好 API Key,否则任务会直接报错。绑定邮箱这一步只在 OpenAI 把 add-email 摆进当前 authorize 流程时才会被接受;被拒时账号照常保留,失败原因记在账号详情里,可以稍后单独补绑。

4. TOTP 2FA 绑定

注册任务页和 ChatGPT 注册弹窗上还有一个「绑定 2FA」开关,默认关闭。打开后注册成功的号会顺手绑上一个 TOTP 双因素:

  • 快路径:复用注册那条会话直接申请密钥并激活。注册链几十秒前才做完验证,服务端认这是「最近认证过」,所以不用重新登录、不用再收一封邮件,几秒钟完事。
  • 慢路径:快路径没成时才走,用邮箱 + 密码重跑一遍登录正式链再绑,要多花一次 PoW,多半还要收一封验证码邮件。手机号身份的号没有邮箱可登,会跳过这一步。

密钥随号落库(写进账号 extra 的 totp_secret),三个地方都能复制导入验证器 App:账号列表里点「2FA 已绑」标签、账号操作菜单里的「复制 2FA 密钥」、账号详情里的密钥栏。补绑动作跑完的弹窗也会把密钥单独列出来带复制按钮,任务日志里同样打一遍。批量拿密钥用导出里的 邮箱----密码----2FA 之类的格式。

库里的老号可以在账号操作菜单里点「绑定 2FA」单独补绑,同样先试复用会话、会话失效再走重新登录。这个动作和「补 RT」一样跑成后台任务:点完立刻弹出日志窗口,实时看到走的是哪条路、是不是在等验证码,也能中途停掉;绑成功那一刻密钥会打在日志里,弹窗顶部再单独列一份带复制按钮。

⚠️ 密钥只在绑定那一刻由服务端下发一次,任何接口都取不回。绑定即生效,之后该号每次登录都要动态码 —— 补 RT、重新登录这些链路会自动用库里的密钥算码通过,但密钥丢了这个号就再也登不进去。

5. 手机接码(add-phone)

OpenAI 会对部分注册请求要求绑定手机号。命中 add-phone 时,系统会自动租号、等短信、提交验证码,全程无人值守。在「设置 → 手机接码」里配置:

配置项说明
启用手机接码关闭时命中 add-phone 会回退到手工号码路径(OPENAI_PHONE_NUMBER)
接码平台SmsBower / HeroSMS,两家共用 sms-activate 的 handler_api.php 协议
API Key平台密钥,可用页面上的「测试余额」直接自检
服务代码平台按服务码分库存,OpenAI 对应 dr
默认国家 ID默认 52(泰国)
自动选最优国家按价格升序 + 库存挑号;也可用「允许的国家」限定候选范围
复用同一号码在号码 20 分钟租期内复用,直到达到单号成功次数上限
单号等待秒数 / 最多换号次数 / 单号内验证重试次数收码失败时的重试策略

「查询国家排名」会列出该服务码下各国的价格与库存,绿色标签是 OpenAI 走纯短信的国家。

⚠️ OpenAI 自 2025 年起对大部分国家改用 WhatsApp 验证,纯 SMS 路径实测只有**泰国(country_id=52)**稳定可用。选其它国家可能抽到 WhatsApp 号从而收不到短信,自动选号时会打告警但不阻止。

国家 ID、单号等待秒数、最多换号次数还可以在注册任务页按任务覆盖,平台与 API Key 只在全局配置里维护。

6. ChatGPT 批量状态同步与补传

在 ChatGPT 平台列表顶部,当前还有两类批量能力:

  • 状态同步
    • 同步所选账号本地状态
    • 同步所选账号 CLIProxyAPI 状态
    • 或对当前筛选结果批量执行
  • 补传远端未发现
    • 补传远端未发现的 auth-file
    • 支持“当前筛选范围”或“当前所选账号”两种作用范围

7. 多格式批量导出

账号列表右上角的「导出」打开导出弹窗:先选范围(勾选的账号 / 当前筛选出的全部账号,翻页不影响),再选格式,右边直接出预览,然后一键复制或下载。

格式一行长什么样
email_pw邮箱----密码
email_pw_2fa邮箱----密码----2FA 密钥
email_pw_2fa_at再接 ----AccessToken
email_pw_2fa_rt再接 ----RefreshToken
email_pw_2fa_at_rt登录与调用凭证一次带齐
email_pw_2fa_phone再接 ----手机号
email_pw_rt邮箱----密码----RefreshToken
email_2fa邮箱----2FA 密钥
at / rt / totp一行一个 token,没有该字段的账号自动跳过
csv / json全字段,给 Excel 或脚本用

空字段照样占位(a@b.com----pw---- 结尾那个分隔符不会省),按 ---- 切列的脚本不会错位。格式清单由后端 services/account_export.py 的 EXPORT_FORMATS 统一定义,加一个新格式只改这一处,前端下拉框自动跟上。

邮箱服务支持

根据当前注册页实际配置项,项目支持以下邮箱服务:

服务名称标识说明
LuckMailluckmail可免费领取用于测试,且每天签到还能继续领取邮箱
MoeMailmoemail默认常用方案,自动注册账号并生成邮箱
TempMail.loltempmail_lol临时邮箱方案,部分地区可能需要代理
SkyMail (CloudMail)skymail通过 API / Token / 域名使用
YYDS Mail / MaliAPImaliapi支持域名与自动域名策略
GPTMailgptmail基于 GPTMail API 生成临时邮箱并轮询邮件,支持已知域名时本地拼装随机地址
DuckMailduckmail临时邮箱方案
Freemailfreemail自建邮箱服务
Laoudolaoudo固定邮箱方案
CF WorkercfworkerCloudflare Worker 自建邮箱

iCloud 隐私邮箱说明

iCloud 平台不消耗上表中的临时邮箱池,而是使用 Apple 自带的 Hide My Email 地址:

  1. 在「iCloud 隐私邮箱 → 主号管理」中添加 Apple ID 主号,支持两种方式:
    • 账号密码登录:走 Apple SRP 协议,按需完成双重认证(可信设备推送或短信验证码);
    • Cookie 导入:直接粘贴浏览器导出的 iCloud Cookie。
  2. 登录成功后在「隐私邮箱」标签页批量生成别名,Apple 侧限制为每小时最多 5 个,系统会按主号维度自行限流。
  3. 主号的 IMAP 密码(应用专用密码)用于拉取别名收件箱,凭据均以 AES-256-GCM 加密后落库。

加密密钥取自环境变量 CREDENTIAL_ENCRYPTION_KEY;未设置时会在 .secrets/credential_key 自动生成一份本地密钥。

快速开始

1. 创建并激活 Conda 环境

conda create -n any-auto-register python=3.12 -y
conda activate any-auto-register

2. 安装后端依赖

pip install -r requirements.txt

3. 安装浏览器相关依赖

python -m playwright install chromium
python -m camoufox fetch

4. 安装并构建前端

cd frontend
npm install
npm run build
cd ..

构建完成后,静态资源输出到:

./static

5. 启动项目

Windows 推荐方式

PowerShell:

.\start_backend.ps1

CMD:

start_backend.bat

手动启动

conda activate any-auto-register
python main.py

启动后默认访问:

http://localhost:8000

如果你已经执行过 npm run build,前端会由 FastAPI 直接托管,因此访问的是 8000,不是 5173。

Windows 启动脚本说明

仓库内已提供以下脚本:

  • start_backend.bat
  • start_backend.ps1
  • stop_backend.bat
  • stop_backend.ps1

这些脚本会强制使用 any-auto-register 环境启动/停止后端,可避免以下常见问题:

  • 后端能启动,但 Solver 没有拉起
  • ModuleNotFoundError: quart
  • 前端中 Turnstile Solver 一直显示“未运行”

停止服务时可执行:

PowerShell:

.\stop_backend.ps1

CMD:

stop_backend.bat

默认会停止:

  • 后端端口:8000
  • Solver 端口:8889

前端开发模式

适合调试 React 页面时使用。

终端 1:启动后端

.\start_backend.ps1

终端 2:启动 Vite

cd frontend
npm run dev

访问地址:

http://localhost:5173

Vite 会将 /api 请求代理到本地后端 http://localhost:8000。

Turnstile Solver 说明

自动启动

本地 Turnstile Solver 会在 FastAPI 后端启动时自动拉起,默认地址:

http://localhost:8889

前端“全局配置 → 验证码 → Turnstile Solver”显示的是后端检测结果,因此:

  • 后端未启动 → 前端显示“未运行”
  • 后端已启动但不在正确 conda 环境 → Solver 可能启动失败

手动启动 Solver

conda activate any-auto-register
python services/turnstile_solver/start.py --browser_type camoufox --port 8889

Solver 日志

如启动失败,可查看:

services/turnstile_solver/solver.log

Docker 部署

仓库根目录已提供两套:

用途文件镜像体积说明
完整版(含浏览器)Dockerfile + docker-compose.yml约 5GB带 Playwright / Camoufox / Turnstile Solver
无头服务器Dockerfile.server + docker-compose.server.yml约 1.1GB只跑 Web UI 与 ChatGPT/iCloud 注册,不装浏览器栈

ChatGPT 切到纯协议后两个平台都不用浏览器,服务器部署推荐用无头版,详见 docs/SERVER_DEPLOY.md(含反向代理配置和必须先设登录密码的说明)。

以下是完整版的部署内容:

  • FastAPI 后端
  • 已构建的前端静态资源
  • SQLite 数据库持久化目录 ./data
  • 随后端自动拉起的本地 Turnstile Solver

启动

docker compose up -d --build

首次构建会额外下载 Python 依赖、Playwright Chromium 和 Camoufox,因此耗时会明显更长。

当前 Dockerfile 已改为通过固定直链安装 Camoufox,以避免构建时访问 GitHub Releases API 触发匿名限流。

访问

http://localhost:8000

停止

docker compose down

查看日志

docker compose logs -f app

数据持久化

容器默认使用:

DATABASE_URL=sqlite:////app/data/account_manager.db

宿主机会挂载到:

./data

常用环境变量

变量名默认值说明
HOST0.0.0.0FastAPI 监听地址
PORT8000FastAPI 监听端口
DATABASE_URLsqlite:////app/data/account_manager.dbSQLite 数据库地址
APP_ENABLE_SOLVER1是否自动启动本地 Solver,设为 0 可禁用
SOLVER_PORT8889Solver 监听端口
LOCAL_SOLVER_URLhttp://127.0.0.1:8889后端访问 Solver 的地址
OPENAI_SENTINEL_NODE_PATHnodeSentinel PoW 求解器使用的 Node 可执行文件,node 不在 PATH 时填绝对路径

如需传入 OPENAI_* 等配置,可直接写入仓库根目录 .env 文件,docker compose 会自动注入到容器环境中。

Camoufox 构建参数

如需覆盖上游版本,可在构建时指定:

CAMOUFOX_VERSION=135.0.1 CAMOUFOX_RELEASE=beta.24 docker compose build app

Docker 使用建议

  • 当前 Docker 镜像主要覆盖主应用和本地 Turnstile Solver
  • CLIProxyAPI 的自动安装/拉起逻辑仍偏向宿主机环境
  • 若依赖 conda、Go 或 Windows 可执行文件,不建议直接在当前 Linux 容器中启动这些插件
  • 如果你只需要 Web UI、账号管理、任务调度和本地 Solver,当前 Compose 配置可直接使用

插件与外部依赖

临时邮箱方案来源

项目支持 Cloudflare Worker 自建临时邮箱,当前使用方案来源于:

外部插件 Git 地址

项目当前支持按需安装/启动以下外部组件:

项目用途Git 地址
CLIProxyAPICPA / 代理池管理服务https://github.com/router-for-me/CLIProxyAPI.git

插件页中的 “安装最新版 / 更新到最新版” 会同步仓库最新代码,且已支持 卸载(会先停止服务,再删除本地插件目录)。 默认按 最新 semver tag 更新;你也可以在“设置 → 插件 → 安装/更新策略”切回 分支 HEAD 模式。

如果你后续要改成 ghproxy、gitclone、企业 Git 镜像或其他代理地址,需要同步修改:

services/external_apps.py

常见问题排查

1. 前端里 Turnstile Solver 显示“未运行”

先检查后端是否正常启动:

curl http://localhost:8000/api/solver/status

正常返回示例:

{"running":true}

如果 8000 端口都访问不到,说明问题在后端,而不是 Solver 本身。

2. 出现 ModuleNotFoundError: quart

说明当前启动后端的 Python 不是 any-auto-register 环境,请改用:

.\start_backend.ps1

或:

start_backend.bat

3. 如何确认当前 Python 是否正确

python -c "import sys; print(sys.executable)"

输出应类似:

D:\miniconda\conda3\envs\any-auto-register\python.exe

4. Solver 能打开,但状态仍然异常

检查以下两个地址:

http://localhost:8000/api/solver/status
http://localhost:8889/

如果第二个能打开、但第一个不通,问题就在后端,不在 Solver。

5. 端口被占用

如果启动时报 WinError 10048,先执行:

.\stop_backend.ps1

然后重新启动:

.\start_backend.ps1

6. ChatGPT 注册收不到验证码

先确认 node 可执行:

node --version

Sentinel PoW 求解器要在 Node 沙箱里跑 OpenAI 的 sdk.js,没有 Node 时算出来的 token 过不了服务端复核,验证码邮件会被静默丢弃——日志上看不到明显报错,但码永远收不到。若 node 不在 PATH 里,用 OPENAI_SENTINEL_NODE_PATH 指定绝对路径。

更新记录

2026-08-28

  • 优化代理池对 host:port:user:pass 格式的兼容性,代理检测与浏览器执行器会使用一致的规范化代理配置。
  • 代理健康统计现在能准确回写到原始代理记录;检测成功会自动恢复启用,从未成功且连续失败的代理会自动停用。

完整历史请查看 docs/releases/release-notes.md。

项目结构

any-auto-register/
├── api/
├── core/
├── docs/
├── electron/
├── frontend/
├── platforms/
├── services/
│   ├── solver_manager.py
│   └── turnstile_solver/
├── static/
├── tests/
├── main.py
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
├── start_backend.bat
├── start_backend.ps1
├── stop_backend.bat
└── stop_backend.ps1

Electron 开发说明

Electron 开发模式不会自动启动 Python 后端。

请先在项目根目录启动:

.\start_backend.ps1

然后再运行 Electron。

用户讨论群

  • QQ群:1065114376(any-auto-register 注册机用户讨论群)

赞助支持

如果这个项目对你有帮助,欢迎赞助支持项目继续维护与更新。

打赏码

Star History

Star History Chart

License

MIT License — 仅供学习研究,禁止商业使用。

zc-zhangchen/any-auto-register

Python

3,626

339 commits

updated Sep 20, 2026

See the code

README

Any Auto Register

LINUX DO

⚠️ 免责声明:本项目仅供学习与研究使用,不得用于任何商业用途。使用本项目所产生的一切后果由使用者自行承担。

中文 | English | Tiếng Việt

多平台账号自动注册与管理系统,支持插件化扩展、Web UI 管理、批量注册、状态同步,以及本地 Turnstile Solver 自动拉起。

目录

当前界面与实际平台展示

根据当前前端代码与界面,左侧“平台管理”菜单默认显示的平台为:

  • ChatGPT
  • iCloud(Hide My Email 隐私邮箱)

功能特性

  • 多平台账号注册与管理:统一的账号列表、详情、导入、多格式导出、删除、批量操作
  • iCloud 隐私邮箱:Apple ID 主号登录(SRP + 双重认证 / Cookie 导入)、Hide My Email 批量生成与收件箱查看
  • 多执行器模式:纯协议、无头浏览器、有头浏览器
  • 多邮箱服务接入:支持内置、第三方、自建 Worker 邮箱等多种方案
  • 验证码支持:YesCaptcha、本地 Turnstile Solver(Camoufox)
  • 手机接码:SmsBower / HeroSMS 自动租号收码,ChatGPT 命中 add-phone 时全程无人值守
  • 代理能力:代理池轮询、代理状态维护、注册过程代理接入
  • 批量注册:支持注册数量、并发数、每个账号启动延迟设置
  • 实时日志:前端实时查看注册日志
  • 任务历史管理:支持历史记录查看与批量删除
  • 插件化扩展:可按需接入外部服务和独立管理端

自营产品

感谢以下自营产品对 any-auto-register 的支持。

Logo名称介绍官网
阿晨小铺阿晨小铺本人经营gpt等虚拟产品,诚信稳定,有保障https://faka.gsyun.cloud/
zc-apizc-api面向 Claude Code、Codex 等模型调用场景的中转服务,10G 带宽保障首字响应更快、链路稳定。提供高可用接口、便捷接入与持续交付支持,适合开发者与团队长期使用;支持开具发票,详情可前往官网查看。https://api.codelife.eu.cc/

赞助商目录

感谢以下朋友与伙伴对 any-auto-register 的支持。

Logo名称介绍官网
IPWOIPWOIPWO 住宅代理适用于浏览器自动化、多地区网络访问、数据采集及在线业务测试等场景。

对于 any-auto-register 这类涉及浏览器自动化、代理池管理和多环境运行的项目,IPWO 住宅代理可用于配置不同浏览器会话的网络环境,支持灵活的 IP 切换与地区选择,为自动化任务提供更加便捷的代理接入方式。

提供 195+ 地区动静态 IP 资源,支持 http/https/socks5 协议,免费测试。

专属优惠码:0204(优惠 10%)
https://www.ipwo.net/?ref=githubanyautoregister

界面预览

仪表盘

仪表盘

全局配置 / 插件管理

全局配置 / 插件管理

技术栈

层级技术
后端FastAPI + SQLite(SQLModel)
前端React + TypeScript + Vite
HTTPcurl_cffi
浏览器自动化Playwright / Camoufox
ChatGPT 注册协议纯协议实现,Sentinel PoW 走 Node 沙箱

环境要求

  • Python 3.12+
  • Node.js 18+(既用于构建前端,也是 ChatGPT Sentinel PoW 求解器的运行时,注册时必须可执行)
  • Conda(推荐)
  • Windows(推荐直接使用仓库内启动脚本)

ChatGPT 专项能力

当前版本里,ChatGPT 是功能最完整的平台之一,不仅支持注册,还支持 Token 生命周期管理、状态探测和外部系统同步。

1. 注册协议

ChatGPT 的整条注册链路位于 platforms/chatgpt/protocol/,是纯协议实现,不需要浏览器:

  • http_client.py —— 基于 curl_cffi 的 TLS 指纹会话
  • auth_flow.py —— 驱动 OpenAI authorize 状态机(注册、OTP、add-phone、Codex OAuth)
  • sentinel_quickjs.py + openai_sentinel_quickjs.js —— 在 Node 沙箱里跑 OpenAI 真实的 sdk.js 求解 Sentinel PoW

⚠️ Sentinel 需要 Node 运行时。 自己合成的 PoW token 能骗过 /sentinel/req 的表层校验,但发码服务会在服务端复核,结果是验证码邮件被静默丢弃——链路看着一切正常却永远收不到码。所以必须有可执行的 node(>= 18),如果不在 PATH 里可用 OPENAI_SENTINEL_NODE_PATH 指定绝对路径。

协议层之上只有三个注入点:邮箱池适配器(protocol/mailbox_adapter.py)、手机接码控制器(services/sms_service.py)、密码生效回调。任务级配置通过实例参数下传,不写进程环境变量,因此多个注册任务并发时互不干扰。

2. ChatGPT Token 方案切换

前端当前提供两种 ChatGPT 注册模式:

  • 有 RT(默认推荐)
    • 完整跑一遍 Codex OAuth
    • 产出 Access Token + Refresh Token
  • 无 RT
    • 跳过 Codex OAuth(每次省约 10 秒)
    • 仅产出 Access Token / Session
    • 依赖 RT 的后续能力可能不可用

这项切换在以下位置都能看到:

  • 注册任务页
  • ChatGPT 平台注册弹窗

3. ChatGPT 注册方式

同样两个位置还能选注册用什么身份,和上面的 Token 方案可以任意组合:

  • 邮箱注册(默认)
    • 从邮箱池领地址,收邮件验证码
  • 手机注册
    • 从接码平台租号,收短信验证码,不占用邮箱
    • 账号在列表里以手机号为标识
  • 手机注册 + 绑定邮箱
    • 先用号码注册,再把邮箱池里的地址绑到账号上,收一次邮件验证码
    • 绑定成功后账号按邮箱记账,手机号留在账号详情里

后两种都要先在「设置 → 手机接码」里启用接码并填好 API Key,否则任务会直接报错。绑定邮箱这一步只在 OpenAI 把 add-email 摆进当前 authorize 流程时才会被接受;被拒时账号照常保留,失败原因记在账号详情里,可以稍后单独补绑。

4. TOTP 2FA 绑定

注册任务页和 ChatGPT 注册弹窗上还有一个「绑定 2FA」开关,默认关闭。打开后注册成功的号会顺手绑上一个 TOTP 双因素:

  • 快路径:复用注册那条会话直接申请密钥并激活。注册链几十秒前才做完验证,服务端认这是「最近认证过」,所以不用重新登录、不用再收一封邮件,几秒钟完事。
  • 慢路径:快路径没成时才走,用邮箱 + 密码重跑一遍登录正式链再绑,要多花一次 PoW,多半还要收一封验证码邮件。手机号身份的号没有邮箱可登,会跳过这一步。

密钥随号落库(写进账号 extra 的 totp_secret),三个地方都能复制导入验证器 App:账号列表里点「2FA 已绑」标签、账号操作菜单里的「复制 2FA 密钥」、账号详情里的密钥栏。补绑动作跑完的弹窗也会把密钥单独列出来带复制按钮,任务日志里同样打一遍。批量拿密钥用导出里的 邮箱----密码----2FA 之类的格式。

库里的老号可以在账号操作菜单里点「绑定 2FA」单独补绑,同样先试复用会话、会话失效再走重新登录。这个动作和「补 RT」一样跑成后台任务:点完立刻弹出日志窗口,实时看到走的是哪条路、是不是在等验证码,也能中途停掉;绑成功那一刻密钥会打在日志里,弹窗顶部再单独列一份带复制按钮。

⚠️ 密钥只在绑定那一刻由服务端下发一次,任何接口都取不回。绑定即生效,之后该号每次登录都要动态码 —— 补 RT、重新登录这些链路会自动用库里的密钥算码通过,但密钥丢了这个号就再也登不进去。

5. 手机接码(add-phone)

OpenAI 会对部分注册请求要求绑定手机号。命中 add-phone 时,系统会自动租号、等短信、提交验证码,全程无人值守。在「设置 → 手机接码」里配置:

配置项说明
启用手机接码关闭时命中 add-phone 会回退到手工号码路径(OPENAI_PHONE_NUMBER)
接码平台SmsBower / HeroSMS,两家共用 sms-activate 的 handler_api.php 协议
API Key平台密钥,可用页面上的「测试余额」直接自检
服务代码平台按服务码分库存,OpenAI 对应 dr
默认国家 ID默认 52(泰国)
自动选最优国家按价格升序 + 库存挑号;也可用「允许的国家」限定候选范围
复用同一号码在号码 20 分钟租期内复用,直到达到单号成功次数上限
单号等待秒数 / 最多换号次数 / 单号内验证重试次数收码失败时的重试策略

「查询国家排名」会列出该服务码下各国的价格与库存,绿色标签是 OpenAI 走纯短信的国家。

⚠️ OpenAI 自 2025 年起对大部分国家改用 WhatsApp 验证,纯 SMS 路径实测只有**泰国(country_id=52)**稳定可用。选其它国家可能抽到 WhatsApp 号从而收不到短信,自动选号时会打告警但不阻止。

国家 ID、单号等待秒数、最多换号次数还可以在注册任务页按任务覆盖,平台与 API Key 只在全局配置里维护。

6. ChatGPT 批量状态同步与补传

在 ChatGPT 平台列表顶部,当前还有两类批量能力:

  • 状态同步
    • 同步所选账号本地状态
    • 同步所选账号 CLIProxyAPI 状态
    • 或对当前筛选结果批量执行
  • 补传远端未发现
    • 补传远端未发现的 auth-file
    • 支持“当前筛选范围”或“当前所选账号”两种作用范围

7. 多格式批量导出

账号列表右上角的「导出」打开导出弹窗:先选范围(勾选的账号 / 当前筛选出的全部账号,翻页不影响),再选格式,右边直接出预览,然后一键复制或下载。

格式一行长什么样
email_pw邮箱----密码
email_pw_2fa邮箱----密码----2FA 密钥
email_pw_2fa_at再接 ----AccessToken
email_pw_2fa_rt再接 ----RefreshToken
email_pw_2fa_at_rt登录与调用凭证一次带齐
email_pw_2fa_phone再接 ----手机号
email_pw_rt邮箱----密码----RefreshToken
email_2fa邮箱----2FA 密钥
at / rt / totp一行一个 token,没有该字段的账号自动跳过
csv / json全字段,给 Excel 或脚本用

空字段照样占位(a@b.com----pw---- 结尾那个分隔符不会省),按 ---- 切列的脚本不会错位。格式清单由后端 services/account_export.py 的 EXPORT_FORMATS 统一定义,加一个新格式只改这一处,前端下拉框自动跟上。

邮箱服务支持

根据当前注册页实际配置项,项目支持以下邮箱服务:

服务名称标识说明
LuckMailluckmail可免费领取用于测试,且每天签到还能继续领取邮箱
MoeMailmoemail默认常用方案,自动注册账号并生成邮箱
TempMail.loltempmail_lol临时邮箱方案,部分地区可能需要代理
SkyMail (CloudMail)skymail通过 API / Token / 域名使用
YYDS Mail / MaliAPImaliapi支持域名与自动域名策略
GPTMailgptmail基于 GPTMail API 生成临时邮箱并轮询邮件,支持已知域名时本地拼装随机地址
DuckMailduckmail临时邮箱方案
Freemailfreemail自建邮箱服务
Laoudolaoudo固定邮箱方案
CF WorkercfworkerCloudflare Worker 自建邮箱

iCloud 隐私邮箱说明

iCloud 平台不消耗上表中的临时邮箱池,而是使用 Apple 自带的 Hide My Email 地址:

  1. 在「iCloud 隐私邮箱 → 主号管理」中添加 Apple ID 主号,支持两种方式:
    • 账号密码登录:走 Apple SRP 协议,按需完成双重认证(可信设备推送或短信验证码);
    • Cookie 导入:直接粘贴浏览器导出的 iCloud Cookie。
  2. 登录成功后在「隐私邮箱」标签页批量生成别名,Apple 侧限制为每小时最多 5 个,系统会按主号维度自行限流。
  3. 主号的 IMAP 密码(应用专用密码)用于拉取别名收件箱,凭据均以 AES-256-GCM 加密后落库。

加密密钥取自环境变量 CREDENTIAL_ENCRYPTION_KEY;未设置时会在 .secrets/credential_key 自动生成一份本地密钥。

快速开始

1. 创建并激活 Conda 环境

conda create -n any-auto-register python=3.12 -y
conda activate any-auto-register

2. 安装后端依赖

pip install -r requirements.txt

3. 安装浏览器相关依赖

python -m playwright install chromium
python -m camoufox fetch

4. 安装并构建前端

cd frontend
npm install
npm run build
cd ..

构建完成后,静态资源输出到:

./static

5. 启动项目

Windows 推荐方式

PowerShell:

.\start_backend.ps1

CMD:

start_backend.bat

手动启动

conda activate any-auto-register
python main.py

启动后默认访问:

http://localhost:8000

如果你已经执行过 npm run build,前端会由 FastAPI 直接托管,因此访问的是 8000,不是 5173。

Windows 启动脚本说明

仓库内已提供以下脚本:

  • start_backend.bat
  • start_backend.ps1
  • stop_backend.bat
  • stop_backend.ps1

这些脚本会强制使用 any-auto-register 环境启动/停止后端,可避免以下常见问题:

  • 后端能启动,但 Solver 没有拉起
  • ModuleNotFoundError: quart
  • 前端中 Turnstile Solver 一直显示“未运行”

停止服务时可执行:

PowerShell:

.\stop_backend.ps1

CMD:

stop_backend.bat

默认会停止:

  • 后端端口:8000
  • Solver 端口:8889

前端开发模式

适合调试 React 页面时使用。

终端 1:启动后端

.\start_backend.ps1

终端 2:启动 Vite

cd frontend
npm run dev

访问地址:

http://localhost:5173

Vite 会将 /api 请求代理到本地后端 http://localhost:8000。

Turnstile Solver 说明

自动启动

本地 Turnstile Solver 会在 FastAPI 后端启动时自动拉起,默认地址:

http://localhost:8889

前端“全局配置 → 验证码 → Turnstile Solver”显示的是后端检测结果,因此:

  • 后端未启动 → 前端显示“未运行”
  • 后端已启动但不在正确 conda 环境 → Solver 可能启动失败

手动启动 Solver

conda activate any-auto-register
python services/turnstile_solver/start.py --browser_type camoufox --port 8889

Solver 日志

如启动失败,可查看:

services/turnstile_solver/solver.log

Docker 部署

仓库根目录已提供两套:

用途文件镜像体积说明
完整版(含浏览器)Dockerfile + docker-compose.yml约 5GB带 Playwright / Camoufox / Turnstile Solver
无头服务器Dockerfile.server + docker-compose.server.yml约 1.1GB只跑 Web UI 与 ChatGPT/iCloud 注册,不装浏览器栈

ChatGPT 切到纯协议后两个平台都不用浏览器,服务器部署推荐用无头版,详见 docs/SERVER_DEPLOY.md(含反向代理配置和必须先设登录密码的说明)。

以下是完整版的部署内容:

  • FastAPI 后端
  • 已构建的前端静态资源
  • SQLite 数据库持久化目录 ./data
  • 随后端自动拉起的本地 Turnstile Solver

启动

docker compose up -d --build

首次构建会额外下载 Python 依赖、Playwright Chromium 和 Camoufox,因此耗时会明显更长。

当前 Dockerfile 已改为通过固定直链安装 Camoufox,以避免构建时访问 GitHub Releases API 触发匿名限流。

访问

http://localhost:8000

停止

docker compose down

查看日志

docker compose logs -f app

数据持久化

容器默认使用:

DATABASE_URL=sqlite:////app/data/account_manager.db

宿主机会挂载到:

./data

常用环境变量

变量名默认值说明
HOST0.0.0.0FastAPI 监听地址
PORT8000FastAPI 监听端口
DATABASE_URLsqlite:////app/data/account_manager.dbSQLite 数据库地址
APP_ENABLE_SOLVER1是否自动启动本地 Solver,设为 0 可禁用
SOLVER_PORT8889Solver 监听端口
LOCAL_SOLVER_URLhttp://127.0.0.1:8889后端访问 Solver 的地址
OPENAI_SENTINEL_NODE_PATHnodeSentinel PoW 求解器使用的 Node 可执行文件,node 不在 PATH 时填绝对路径

如需传入 OPENAI_* 等配置,可直接写入仓库根目录 .env 文件,docker compose 会自动注入到容器环境中。

Camoufox 构建参数

如需覆盖上游版本,可在构建时指定:

CAMOUFOX_VERSION=135.0.1 CAMOUFOX_RELEASE=beta.24 docker compose build app

Docker 使用建议

  • 当前 Docker 镜像主要覆盖主应用和本地 Turnstile Solver
  • CLIProxyAPI 的自动安装/拉起逻辑仍偏向宿主机环境
  • 若依赖 conda、Go 或 Windows 可执行文件,不建议直接在当前 Linux 容器中启动这些插件
  • 如果你只需要 Web UI、账号管理、任务调度和本地 Solver,当前 Compose 配置可直接使用

插件与外部依赖

临时邮箱方案来源

项目支持 Cloudflare Worker 自建临时邮箱,当前使用方案来源于:

外部插件 Git 地址

项目当前支持按需安装/启动以下外部组件:

项目用途Git 地址
CLIProxyAPICPA / 代理池管理服务https://github.com/router-for-me/CLIProxyAPI.git

插件页中的 “安装最新版 / 更新到最新版” 会同步仓库最新代码,且已支持 卸载(会先停止服务,再删除本地插件目录)。 默认按 最新 semver tag 更新;你也可以在“设置 → 插件 → 安装/更新策略”切回 分支 HEAD 模式。

如果你后续要改成 ghproxy、gitclone、企业 Git 镜像或其他代理地址,需要同步修改:

services/external_apps.py

常见问题排查

1. 前端里 Turnstile Solver 显示“未运行”

先检查后端是否正常启动:

curl http://localhost:8000/api/solver/status

正常返回示例:

{"running":true}

如果 8000 端口都访问不到,说明问题在后端,而不是 Solver 本身。

2. 出现 ModuleNotFoundError: quart

说明当前启动后端的 Python 不是 any-auto-register 环境,请改用:

.\start_backend.ps1

或:

start_backend.bat

3. 如何确认当前 Python 是否正确

python -c "import sys; print(sys.executable)"

输出应类似:

D:\miniconda\conda3\envs\any-auto-register\python.exe

4. Solver 能打开,但状态仍然异常

检查以下两个地址:

http://localhost:8000/api/solver/status
http://localhost:8889/

如果第二个能打开、但第一个不通,问题就在后端,不在 Solver。

5. 端口被占用

如果启动时报 WinError 10048,先执行:

.\stop_backend.ps1

然后重新启动:

.\start_backend.ps1

6. ChatGPT 注册收不到验证码

先确认 node 可执行:

node --version

Sentinel PoW 求解器要在 Node 沙箱里跑 OpenAI 的 sdk.js,没有 Node 时算出来的 token 过不了服务端复核,验证码邮件会被静默丢弃——日志上看不到明显报错,但码永远收不到。若 node 不在 PATH 里,用 OPENAI_SENTINEL_NODE_PATH 指定绝对路径。

更新记录

2026-08-28

  • 优化代理池对 host:port:user:pass 格式的兼容性,代理检测与浏览器执行器会使用一致的规范化代理配置。
  • 代理健康统计现在能准确回写到原始代理记录;检测成功会自动恢复启用,从未成功且连续失败的代理会自动停用。

完整历史请查看 docs/releases/release-notes.md。

项目结构

any-auto-register/
├── api/
├── core/
├── docs/
├── electron/
├── frontend/
├── platforms/
├── services/
│   ├── solver_manager.py
│   └── turnstile_solver/
├── static/
├── tests/
├── main.py
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
├── start_backend.bat
├── start_backend.ps1
├── stop_backend.bat
└── stop_backend.ps1

Electron 开发说明

Electron 开发模式不会自动启动 Python 后端。

请先在项目根目录启动:

.\start_backend.ps1

然后再运行 Electron。

用户讨论群

  • QQ群:1065114376(any-auto-register 注册机用户讨论群)

赞助支持

如果这个项目对你有帮助,欢迎赞助支持项目继续维护与更新。

打赏码

Star History

Star History Chart

License

MIT License — 仅供学习研究,禁止商业使用。

Significant stargazers

不要葱姜蒜

1,033 followers · starred Apr 2026

CorrectRoad

137 followers · starred May 2026

Haoyuan Li

42 followers · starred Mar 2026

DaZuiZui

117 followers · starred Apr 2026