9.1 KiB
name, description, triggers
| name | description | triggers | |||||
|---|---|---|---|---|---|---|---|
| chatgpt-autoreg | Mass auto-registration of ChatGPT accounts using aBaiAutoplus toolkit — protocol executor, IMAP pool, captcha auto-solver. Covers server lifecycle, task submission, monitoring, and pitfall recovery. |
|
ChatGPT Auto-Registration (aBaiAutoplus)
Quick Start
# 1. Start server
cd "C:/Users/User/Desktop/GPT-AUTOREG/aBaiAutoplus"
python -u main.py
# Server listens on port 8000. Web UI at http://localhost:8000
# No venv activation needed — uses system Python 3.11
# 2. Verify health
curl -s http://localhost:8000/api/health
# → {"ok":true,"service":"account-manager-v2"}
# 3. Check accounts
curl -s "http://localhost:8000/api/accounts?limit=3"
# Returns total count + account list
# 4. Register N accounts (protocol executor — fastest)
curl -s -X POST http://localhost:8000/api/tasks/register \
-H "Content-Type: application/json" \
-d '{"count":10,"concurrency":2,"executor_type":"protocol","captcha_solver":"auto","extra":{"mail_provider":"imap_pool","identity_provider":"mailbox"}}'
# Returns task_id. Monitor with step 5.
# 5. Monitor task
curl -s http://localhost:8000/api/tasks/<task_id>
# Fields: status, progress, success, error_count, errors[]
Project Layout
GPT-AUTOREG/aBaiAutoplus/
├── main.py # FastAPI entry point, port 8000
├── gateway.py # Go gateway (port 8001) — optional, not needed for reg
├── platforms/chatgpt/
│ ├── protocol_register.py # Protocol registration worker (curl_cffi impersonation)
│ ├── browser_register.py # Headed browser registration (Camoufox)
│ └── constants.py # OpenAI auth endpoints, Sentinel config
├── providers/mailbox/
│ └── imap_pool.py # GenericImapMailboxPool — t-online.de IMAP
├── api/
│ ├── task_commands.py # RegisterTaskRequest model
│ ├── provider_settings.py # Provider settings CRUD
│ └── health.py
├── application/
│ └── task_commands.py # TaskCommandsService
├── services/
│ └── task_runtime.py # TaskRuntime (max_parallel_tasks=3)
├── data/
│ └── .imap_mailbox_pool_state.json # IMAP pool state — reset to {} on reconfig
├── account_manager.db # SQLite DB with all registered accounts
├── requirements.txt
└── docker-compose.yml
Email Pool
- Active file:
C:/Users/User/Desktop/GPT-AUTOREG/emails.txt(t-online.de accounts, formatemail:password) - Provider: IMAP pool (id=2, provider_type=mailbox, provider_name=imap_pool)
- Config path in DB: stored in
provider_settingstable; update via SQLite if needed:UPDATE provider_settings SET value = 'C:/Users/User/Desktop/GPT-AUTOREG/emails.txt' WHERE key = 'imap_pool_file'; - To change email file: update the path in DB, reset pool state (
echo "{}" > data/.imap_mailbox_pool_state.json), restart server - Blocked domains: t-online.de mostly burned — ~80% return
account_deactivated. Consider rambler.ru for fresh pool.
Captcha
- Provider: RuCaptcha (id=1, provider_key=rucaptcha_api)
- Enabled: true, is_default: true
- Solver mode:
captcha_solver=auto— system selects automatically - Check config:
curl -s "http://localhost:8000/api/provider-settings?provider_type=captcha"
Concurrency & Performance
- max_parallel_tasks=3 (hardcoded in task_runtime.py)
- Recommended concurrency=2 — stable. Concurrency=3 causes server crashes under heavy IMAP load.
- Protocol executor uses curl_cffi impersonation (firefox144) + Sentinel PoW
- Performance: ~1 success per minute with concurrency=2
Common Pitfalls
Server crashes
Server is unstable at concurrency=3. Restart with:
cd "C:/Users/User/Desktop/GPT-AUTOREG/aBaiAutoplus" && python -u main.py
Database survives crashes. Incomplete tasks may produce partial results. Note: server often exits with code 1 on task completion — this is normal; just restart if you need more tasks.
account_deactivated
OpenAI rejects email: "You do not have an account because it has been deleted or deactivated." → Email was previously used and banned. Move to next email. Large portion of t-online.de pool is burned.
IMAP timeout (180s)
Worker waits for verification code from IMAP. If email doesn't arrive within 180s, task errors out. → Affected emails likely have slow IMAP delivery or inbox is full.
邮箱池为空 (empty mailbox pool)
IMAP pool config file missing or empty.
→ Verify C:/Users/User/Desktop/GPT-AUTOREG/emails.txt exists and has entries.
→ Reset pool state: echo "{}" > data/.imap_mailbox_pool_state.json
Provider settings API blocked
Only DELETE is allowed for individual settings. No PUT/PATCH.
→ Workaround: update path directly in SQLite provider_settings table, then restart server.
Stale tasks stuck at N/X
Worker waiting for IMAP — can take up to 180s. Wait or check server logs.
Token lifetime — hours, not days
Session cookies (__Secure-next-auth.session-token) expire in ~1-3 hours after registration.
Extract tokens IMMEDIATELY after task completion. Do not rely on accounts staying valid overnight.
See references/token-extraction.md for the extraction workflow.
"Unusual activity" on /backend-api/conversation
New accounts (<24h old) get HTTP 403 "Unusual activity has been detected from your device"
when hitting /backend-api/conversation. The /backend-api/me endpoint works (read-only).
→ Accounts need time to «warm up» (24-48h) before API usage.
→ The only working transport is Camoufox browser — plain httpx/requests are blocked by Cloudflare.
Full Toolkit Archive
When user asks to gather all autoreg files, consolidate from these sources:
| Source | Contents |
|---|---|
_PROJECTS/oai-register/aBaiAutoplus/ |
Main toolkit (exclude .venv, node_modules, frontend) |
Downloads/Telegram Desktop/working_mails.txt |
17,893 t-online.de accounts |
Downloads/Telegram Desktop/*Good*Mail* |
32 mail:pass lists |
SESSION-BASE/autoreg.md |
Reference document |
Desktop/conol_github/*autoreg* |
Conol scripts |
Desktop/velokey_autoreg/ |
Velokey autoreg |
Desktop/sepa_autoreg.py + ~/sepa_autoreg.py |
SEPA autoreg |
~/gorouter_autoreg.py |
Gorouter autoreg |
~/Desktop/baaaai_autoreg.py |
Baia autoreg |
tmp/gmail_autoreg.py |
Gmail autoreg |
tmp/autoreg_v*.py |
44 iterative versions |
_PROJECTS/grok_proxy_pool.py + grok_cli_proxy.py |
Proxy scripts |
Archive command: tar czf GPT-AUTOREG-FULL.tar.gz GPT-AUTOREG-FULL/
(Use tar, not zip/7z — only tar+gzip available in Git Bash on this Windows host)
Account Validity Check
Accounts are auto-checked by LifecycleManager. Statuses:
registered— just created, not yet verifiedvalid— token works, account activeinvalid— token expired or account banned
Check latest account state: curl -s "http://localhost:8000/api/accounts?limit=3"
Token Extraction & API Usage
After successful registration, extract tokens from the SQLite DB for API use:
# Query valid accounts with tokens
import sqlite3, json
db = sqlite3.connect("C:/Users/User/Desktop/GPT-AUTOREG/aBaiAutoplus/account_manager.db")
rows = db.execute("""
SELECT ao.account_id, ao.remote_email, ac.key, ac.value
FROM account_overviews ao
JOIN account_credentials ac ON ao.account_id = ac.account_id
WHERE ao.validity_status = 'valid' AND ac.credential_type IN ('token','cookie')
""").fetchall()
accounts_tokens.json format
The image API server (image_api_server.py in GPT-AUTOREG/) expects:
{
"accounts": [
{
"email": "[REDACTED-EMAIL]",
"tokens": {
"session_token": "eyJhbG...",
"access_token": "eyJhbG...",
"legacy_token": "eyJhbG...",
"csrf_token": "abc123%7Cdef456",
"cookies": "{'__Secure-next-auth.session-token': '...', ...}"
}
}
]
}
image_api_server.py
FastAPI server on port 8400. Uses Camoufox browser to bypass Cloudflare and call
chatgpt.com/backend-api/conversation for DALL-E image generation.
cd "C:/Users/User/Desktop/GPT-AUTOREG" && python -u image_api_server.py
# Endpoints: GET /health, GET /accounts, POST /generate
Known limitation: accounts <24h old return 403 "Unusual activity".
The /me endpoint works; conversation endpoint needs aged accounts.
Camoufox transport
Only Camoufox (Firefox-based anti-detection browser) bypasses Cloudflare for chatgpt.com.
Playwright Chromium and httpx both get blocked with 403 challenge pages.
from camoufox.async_api import AsyncCamoufox
async with AsyncCamoufox(headless=True, locale="en-US", block_webrtc=True) as browser:
page = await browser.new_page()
await page.goto("https://chatgpt.com/")
await page.context.add_cookies(cookies_list)
# Now fetch() from page.evaluate() inherits cookies + TLS fingerprint
See references/token-extraction.md for full workflow.