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

4.6 KiB

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.