Automated Qoder account registration with anti-detect browser, captcha solving (AI + OpenCV), and 9Router OAuth integration.
Project description
๐ค Qoder Autopilot
Automated Qoder account registration with anti-detect browser, multi-strategy captcha solving, and 9Router OAuth device token integration.
Register Qoder accounts โ solve captchas โ verify OTP โ auto-connect to 9Router. All in one command.
๐ฆ Published on PyPI โ pypi.org/project/qoder-autopilot
Install with
pip install qoder-autopilotโ no clone needed.
โจ Features
- ๐ฆ Anti-detect Browser โ Uses Camoufox (stealth Firefox fork) with C++-level fingerprinting to bypass bot detection
- ๐งฉ Multi-strategy Captcha Solving
- AI Vision (Gemini/GPT via OpenAI-compatible API)
- Manual mode (pause and solve it yourself)
- ๐ง Multi-Provider Temp Mail โ Cloudflare Workers (default) or Moca Supabase
- ๐ OAuth Device Flow โ PKCE-based device token flow (reverse-engineered from 9Router)
- ๐ 9Router Auto-Connect โ Inserts device tokens directly into 9Router's SQLite database
- ๐ First-Run Wizard โ Interactive setup on first launch
- ๐ Built-in Worker Deploy โ Deploy your own temp mail worker from CLI
- โก Parallel Mode โ Register multiple accounts concurrently
- โ๏ธ Persistent Config โ
qoder-autopilot configfor easy customization
๐ฆ Installation
Via pip (recommended)
# Basic install (manual captcha only)
pip install qoder-autopilot
# With AI captcha solver support
pip install qoder-autopilot[captcha]
# Full install with all extras
pip install qoder-autopilot[full]
From source (development)
git clone https://github.com/Daivageralda/qoder-autopilot.git
cd qoder-autopilot
# Basic install
pip install -e .
# With AI captcha solver
pip install -e ".[captcha]"
# Full install + dev tools
pip install -e ".[dev]"
Post-install
# Download Camoufox browser binary
python -m camoufox fetch
# Download Playwright browsers (if needed)
playwright install firefox
๐ Quick Start
First time? Just run:
qoder-autopilot
You'll see the setup wizard:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Welcome to qoder-autopilot! โ
โ Let's get you set up in 30 seconds. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[1] ๐ Quick Start โ use the default public worker
[2] ๐ Self-Host โ deploy your own Cloudflare Worker
Pick 1 for instant setup, or 2 to deploy your own temp mail service.
Registration commands
# Single account, manual captcha (most reliable)
qoder-autopilot --manual-captcha
# 5 accounts sequentially
qoder-autopilot -n 5 --manual-captcha
# 5 accounts in parallel
qoder-autopilot -n 5 --manual-captcha --parallel
# Skip OAuth/9Router, just register
qoder-autopilot --manual-captcha --no-oauth
# Show browser windows
qoder-autopilot --manual-captcha --no-headless
# Custom delay between accounts (seconds)
qoder-autopilot -n 3 --manual-captcha --delay 60
๐ All Commands
| Command | Description |
|---|---|
qoder-autopilot |
First-run wizard (no config) or start registration |
qoder-autopilot [options] |
Register accounts (see flags below) |
qoder-autopilot doctor |
๐ฉบ Health check โ verify all dependencies & configs |
qoder-autopilot deploy |
Deploy your own temp mail worker |
qoder-autopilot relay |
Start relay server for remote 9Router |
qoder-autopilot config |
Show config help + available keys |
qoder-autopilot config show |
Show all current settings with source |
qoder-autopilot config get <key> |
Get a specific config value |
qoder-autopilot config set <key> <value> |
Set a config value |
qoder-autopilot config reset |
Reset all settings to defaults |
Registration flags
| Flag | Description | Default |
|---|---|---|
-n, --count N |
Number of accounts to create (1-100) | 1 |
--manual-captcha |
Pause for manual captcha solving (forces non-headless) | false |
--no-headless |
Show browser windows | false |
--parallel |
Run all accounts concurrently | false |
--delay N |
Delay between sequential accounts | 30 |
--verbose, -v |
Show debug-level logs | false |
--quiet, -q |
Only show errors and warnings | false |
--dry-run |
Validate configuration and exit | false |
--proxy URL |
Proxy for browser (socks5://host:port, http://host:port) | none |
--format {text,json,csv} |
Output format for results | text |
--log-file PATH |
Write all logs to a file | none |
--no-oauth |
Skip 9Router OAuth, just register | false |
--parallel |
Run all accounts concurrently | false |
--delay N |
Delay between sequential accounts (seconds) | 30 |
โ๏ธ Configuration
Three-tier priority: Environment variables โ User config (~/.qoder-autopilot/config.json) โ Defaults
Via CLI (recommended)
# See all settings
qoder-autopilot config show
# Set values
qoder-autopilot config set worker-url https://my-worker.workers.dev
qoder-autopilot config set ai-api-key sk-abc123...
qoder-autopilot config set otp-timeout 30
qoder-autopilot config set mail-provider moca
# Get a value
qoder-autopilot config get worker-url
# Reset everything
qoder-autopilot config reset
Configurable keys
| Key | Description | Default |
|---|---|---|
mail-provider |
Temp mail provider: cloudflare or moca |
cloudflare |
worker-url |
Cloudflare Worker URL | Built-in default |
moca-api-key |
Moca Supabase API key (tmk_xxx) |
(empty) |
moca-base-url |
Moca Supabase base URL | (built-in) |
ai-api-key |
API key for AI captcha solver | (empty) |
ai-base-url |
OpenAI-compatible API base URL | https://ai.sumopod.com/v1 |
ai-model |
AI model name | gemini/gemini-2.5-flash |
otp-timeout |
Max seconds to wait for OTP | 20 |
captcha-timeout |
Max seconds for manual captcha | 120 |
parallel-delay |
Delay between parallel accounts (sec) | 30 |
ninerouter-db |
Path to 9Router SQLite DB | OS-aware: ~/.9router/db/data.sqlite (macOS/Linux), %APPDATA%/9router/db/data.sqlite (Windows) |
Via environment variables
All keys can be set with QODER_ prefix:
export QODER_WORKER_URL=https://my-worker.workers.dev
export QODER_AI_API_KEY=sk-abc123...
export QODER_OTP_TIMEOUT=30
Via .env file
cp .env.example .env
# Edit .env with your settings
๐ Self-Host Temp Mail Worker
Want your own independent temp mail service? Deploy in 5 minutes:
# From qoder-autopilot (bundled worker template)
qoder-autopilot deploy
# Or clone the standalone repo
git clone https://github.com/Daivageralda/cf-mail-worker.git
cd cf-mail-worker
npm install
npm run setup
See cf-mail-worker for full documentation.
๐๏ธ Architecture
qoder-autopilot/
โโโ src/qoder_autopilot/
โ โโโ cli.py # CLI entry point
โ โโโ config.py # Pydantic Settings (env + user config + defaults)
โ โโโ user_config.py # Persistent config manager (~/.qoder-autopilot/)
โ โโโ first_run.py # First-run setup wizard
โ โโโ deploy.py # Worker deploy (extract + setup)
โ โโโ register.py # Main registration flow
โ โโโ temp_mail.py # Multi-provider temp email client
โ โโโ oauth.py # PKCE device auth flow
โ โโโ otp.py # Email OTP extraction
โ โโโ identity.py # Random identity generation (faker id_ID)
โ โโโ credentials.py # Account credential storage
โ โโโ ninerouter.py # 9Router SQLite integration
โ โโโ errors.py # Custom exceptions
โ โโโ logger.py # ANSI colored structured logging
โ โโโ browser/
โ โ โโโ camoufox.py # Anti-detect browser launcher
โ โ โโโ window_tiler.py # macOS window grid positioning
โ โโโ captcha/
โ โ โโโ solver.py # Orchestrator (AI โ manual)
โ โ โโโ ai_vision.py # AI vision gap detection
โ โ โโโ manual.py # Manual solve pause/poll
โ โโโ worker_template/ # Bundled Cloudflare Worker (for deploy)
โ โโโ src/ # Worker JS source
โ โโโ schema.sql # D1 database schema
โ โโโ package.json
โ โโโ scripts/setup.sh
โโโ tests/
โโโ pyproject.toml
โโโ README.md
๐ Security
qoder-autopilot takes security seriously:
- Credential files โ
qoder_accounts.jsonsaved withchmod 600(owner-only) - Config files โ
~/.qoder-autopilot/config.jsonandrelay.jsonrestricted to600 - Password masking โ passwords never logged to stdout (masked as
โขโขโขโขโขโขโขโข) - API key masking โ AI API keys never shown in logs (shown as
***configured***) - Sensitive field masking โ
config showmasks API keys, tokens, and passwords - File locking โ concurrent credential writes are atomic (safe in
--parallelmode) - Timing-safe auth โ relay token comparison uses
hmac.compare_digest() - Rate limiting โ relay server limits to 30 requests/60s per IP
- Input validation โ relay validates email format and field lengths via Pydantic
- SQLite WAL mode โ safe concurrent access with
busy_timeout(no connection leaks) - Secure default binding โ relay defaults to
127.0.0.1(localhost only) - HTTPS warning โ startup warns when relay runs without TLS
- Trust transparency โ first-run wizard warns about shared public worker
Recommendation: For production use, always self-host your temp mail worker and use HTTPS (nginx/caddy) or SSH tunnel for relay.
๐ Related
- cf-mail-worker โ Self-hosted temp mail API (Cloudflare Workers + D1)
- bulk-temp-mail โ Full temp mail service with React frontend
๐ License
MIT โ see LICENSE
โ ๏ธ Disclaimer
This tool is for educational and research purposes only. Use responsibly and in accordance with applicable terms of service.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qoder_autopilot-0.6.3.tar.gz.
File metadata
- Download URL: qoder_autopilot-0.6.3.tar.gz
- Upload date:
- Size: 65.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7407c139fd9f9dbc50744ede070bcb421c7f89a84acc70367ca1b0679a5b5698
|
|
| MD5 |
c7152f8ad8e4c176f6c7c35b222519a3
|
|
| BLAKE2b-256 |
debff0e3f298d9507db819586db5fa6c61a2d2b21f4c7685018cdaa0c5deb51c
|
Provenance
The following attestation bundles were made for qoder_autopilot-0.6.3.tar.gz:
Publisher:
publish.yml on Daivageralda/qoder-autopilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qoder_autopilot-0.6.3.tar.gz -
Subject digest:
7407c139fd9f9dbc50744ede070bcb421c7f89a84acc70367ca1b0679a5b5698 - Sigstore transparency entry: 1840653305
- Sigstore integration time:
-
Permalink:
Daivageralda/qoder-autopilot@299109f750c9dff723e0c46283a4b70135d68d18 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/Daivageralda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@299109f750c9dff723e0c46283a4b70135d68d18 -
Trigger Event:
release
-
Statement type:
File details
Details for the file qoder_autopilot-0.6.3-py3-none-any.whl.
File metadata
- Download URL: qoder_autopilot-0.6.3-py3-none-any.whl
- Upload date:
- Size: 75.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77f4b87873e4b9bf31919a6124fa18da5d9a0c94a7a4eee4173dd0441ebb8c10
|
|
| MD5 |
ed7e2bbd4d5b27551e29d7403c77afe0
|
|
| BLAKE2b-256 |
b98a2ebb8b5aa9ed213a9d5c74b45a6a6f2f098a303d4c6f78dc47bdd252e3e3
|
Provenance
The following attestation bundles were made for qoder_autopilot-0.6.3-py3-none-any.whl:
Publisher:
publish.yml on Daivageralda/qoder-autopilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qoder_autopilot-0.6.3-py3-none-any.whl -
Subject digest:
77f4b87873e4b9bf31919a6124fa18da5d9a0c94a7a4eee4173dd0441ebb8c10 - Sigstore transparency entry: 1840653357
- Sigstore integration time:
-
Permalink:
Daivageralda/qoder-autopilot@299109f750c9dff723e0c46283a4b70135d68d18 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/Daivageralda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@299109f750c9dff723e0c46283a4b70135d68d18 -
Trigger Event:
release
-
Statement type: