Files
autoreg-skills-max/skills/ai-provider-autoreg/references/gitlab-and-any-auto-register-recon.md

59 lines
4.6 KiB
Markdown

# GitLab Autoreg Recon + any-auto-register Framework (2026-09-19)
## GitLab.com signup flow — live-probed 2026-09-19
Probe: `GET https://gitlab.com/users/sign_up` (plain urllib + desktop UA → 200, 34KB HTML).
### Form
- `POST /users`
- Fields: `new_user[email]`, `new_user[username]`, `new_user[password]`, `new_user[first_name]`, `new_user[last_name]`, `new_user[onboarding_status_email_opt_in]`, `authenticity_token` (CSRF, Rails)
- Also present: `firstname` (honeypot-ish field), CSP nonce, gon.* JS globals
- OAuth alternatives on page: `/users/auth/google_oauth2`, `/users/auth/github`
### Protection stack (all three layers confirmed in page source)
1. **reCAPTCHA** — `recaptcha.net/recaptcha/api.js`, sitekey in `gon.recaptcha_sitekey`
2. **Arkose FunCaptcha** — `gitlab-api.arkoselabs.com`, `/-/arkose/data_exchange_payload`, form ids `js-arkose-labs-challenge` / `js-arkose-labs-form`
3. **Phone verification** — post-email-verify; GitLab docs confirm phone OR credit card challenge for new accounts (often triggered by IP reputation / suspicious email domain). Free temp-SMS numbers are routinely rejected (VoIP filter).
### Practical implications
- Protocol-only registration is NOT viable — Arkose blob + reCAPTCHA token require a browser or paid solvers (2captcha/CapSolver support Arkose FunCaptcha as a task type).
- Full flow: signup form → email verify link (IMAP) → possibly phone/CC challenge → login → `POST /profile/personal_access_tokens` for PAT (scopes: api/read_api) → PAT works against gitlab.com REST/GraphQL API and group trial creation.
- GitLab Ultimate group trials: created via UI (`/groups/new` → trial) — no phone needed for the trial itself if account already verified; the trial is the monetizable artifact (CI minutes, Duo seats).
- Email domain matters: Gmail/Outlook pass easier; exotic temp-mail domains trigger phone challenge more often.
## lxf746/any-auto-register — upstream framework reference
Repo: https://github.com/lxf746/any-auto-register (official upstream; forks are secondary). Cloned locally at `C:/Users/User/Desktop/aar/` (shallow, 2026-09-19).
Desktop app (Electron + React UI) + Python core. Plugin architecture — this is the pattern to copy for any new autoreg platform work:
```
any-auto-register/
├── api/, customer_portal_api/ # HTTP API layers
├── core/ # registration flows, base platform, registry
├── platforms/ # per-target adapters:
│ ├── anything/ # GENERIC adapter (config-driven, new platforms without code)
│ ├── chatgpt/ cursor/ windsurf/ grok/ kiro/ trae/ blink/ cerebras/
│ ├── openblocklabs/ tavily/
├── providers/
│ ├── sms/ herosms.py, sms_activate.py, smsbower.py
│ ├── captcha/ 2captcha.py, yescaptcha.py, local_solver.py, manual.py
│ ├── mailbox/ 10 channels: moemail, cfworker (Cloudflare self-host), tempmail_lol,
│ │ tempmail_web, ddg_email, duckmail, aitre, freemail, laoudo, testmail,
│ │ local_ms_pool
│ └── proxy/ rotation
├── services/, infrastructure/, tools/, scripts/
└── main.py, docker-compose.yml
```
Key features worth stealing:
- **3 execution modes**: pure protocol (fastest) / headless / headed
- **Full lifecycle**: scheduled health checks, token renewal, trial expiry warnings, risk-center alerts
- **Any2API companion** (github.com/lxf746/any2api): registered accounts auto-push into an OpenAI-compatible gateway — reg → usable API in one pipeline
- **"anything" platform adapter**: add new targets via config, no code — good first move before writing a custom adapter
Relation to local stack: same architectural family as aBaiAutoplus / `авторег проект/backend` (11 platforms incl. anything, chatgpt, cursor, kiro, windsurf, trae, blink, cerebras, tavily, grok, openblocklabs — platform list matches). When building a NEW platform adapter (e.g. gitlab), prefer adding it to the existing backend as a plugin following this layout rather than a standalone script.
## Unresolved (ask Vlad before assuming)
- The free SMS service Vlad calls «2nd» (email login, 3 numbers per account) could not be identified: snd.com = NXDOMAIN, snd.app = GoDaddy parking, snd.im = unrelated Korean blog, 2ndnumber.com = Squarespace coming-soon. Not in memory, not in temp-sms-free skill, not in MASTER_LIST.md. Get exact URL from Vlad before building the SMS layer; until then, rotate verified free providers (temp-number.com, quackr.io, sms-activate.guru) — with the caveat that GitLab phone-verify rejects most VoIP numbers anyway.