# NoneCap (nonecap.com) — hCaptcha solver API авторег + gateway Live-подтверждено 2026-10-07: demo-solve через добытый ключ → HTTP 200 `{"status":"solved","token":"P1_...","user_agent":"Mozilla/5.0 (iPhone...)"}`. ## Что за сервис - hCaptcha solver API. Signup = **1300 free credits**, без карты. - Ключи `nc_live_<32+ chars>`. Токен решения `P1_*` инжектится в поле `h-captcha-response` цели вместе с **user_agent из ответа solve** (UA обязан совпадать с браузером, который сабмитит). - Dashboard: `https://dashboard.nonecap.com` (Next.js Server Actions), API: `https://api.nonecap.com/v1`. ## Реверс API (из JS-рендера `nonecap.com/api-reference/` через patchright+прокси) Raw curl не годится — docs JS-rendered (`HTTP 200 size:0`, sitemap 404). Рендерить браузером через прокси. - `POST /v1/solves?wait=N` — body `{"type":"hcaptcha","sitekey":"...","url":"..."}` → `{id, status, token, user_agent}`; 202 = poll `GET /v1/solves/{id}`. - `GET /v1/solves?limit=N` — история (200 `{"object":"list","data":[...]}`). - `DELETE /v1/solves/{id}`, `POST /v1/feedback` (report rejected solve). - `GET /v1/me` — account info, НО требует отдельный scope ключа. - Auth: `Authorization: Bearer nc_live_...`. **Ключевой нюанс scopes**: solve-ключ отдаёт `GET /v1/me` → `403 {"error":"missing 'account' scope"}`. Это НЕ lock и НЕ мёртвый ключ — живость проверять демо-solve (`sitekey 10000000-ffff-ffff-ffff-000000000001`, `url https://demo.hcaptcha.com/`) или `GET /v1/solves`. Отличать от реального lock: `account_locked` приходит в теле ошибки solve/логина. ## Signup-флоу (работает) 1. **Почта**: Voidash API (`POST https://api.voidash.com/api/v1/inboxes {"domain":X}` → session_key Bearer; чтение `GET /api/v1/messages`, полный текст `GET /api/v1/messages/{id}`). - `voidash.bond` ЗАБАНЕН как disposable («Please sign up with a permanent email address»). - **`govno.eu.cc` / `musor.eu.cc` / `pomoi.eu.cc` проходят** signup-валидацию. Проверять новые домены probe-сабмитом без валидного turnstile — текст ошибки выдаст disposable-бан. - t-online IMAP-пул не годится: verify-письмо не приходит (0 писем в 5 папках за 150с). Gmail — canonicalization. 2. **Гео/IP**: dashboard и API геоблочат/403-ят локальный IP Влада. Всё — через HTTP-прокси (patchright `proxy=` + urllib ProxyHandler). Мёртвый прокси → `ERR_TUNNEL_CONNECTION_FAILED` / `ERR_TIMED_OUT`; итерировать пул. 3. **Turnstile**: sitekey `0x4AAAAAADkESu5VN02iaX-3`. Солвер — локальный sidecar `POST http://127.0.0.1:/solve {"type":"turnstile","sitekey":...,"url":"https://dashboard.nonecap.com/signup","real_page":true}` бесплатно. 2captcha — только фолбэк (баланс $0 = ERROR_ZERO_BALANCE). 4. **Verify**: ссылка `https://dashboard.nonecap.com/verify?token=*** из письма Voidash → `page.goto(verify_link)`. 5. **АНТИ-LOCK (критично)**: verify-link сам аутентифицирует сессию. НЕ делать парольный login после verify — повторный вход с прокси → risk-lock аккаунта (`account_locked`, login-пароль умирает; так потеряны первые акки). После goto сразу `/keys`, проверить `page.url` не login/signup → сессия жива. 6. **Ключ**: на `/keys` клик `button:has-text("Reveal")` → regex `nc_live_[A-Za-z0-9_\-]+` из `document.body.innerText`. 7. **Персистенция**: сразу после verify писать строку `email:pass:PENDING` в `nonecap_accounts.txt`; после extraction — перезаписывать PENDING ключом (иначе фейл на шаге 6 теряет живой акк; password дублировать в `nonecap_state.json`). ## Recovery ключа (акк верифицирован, ключ не добыт) - `tmp/nc_recover_key.py ` — итерация проксей, логин, /keys, Reveal. - **Login-страница НЕ имеет видимого Turnstile-виджета** — solve на `/login` таймаутит даже с `pre_actions` (fill email/password). Решение: солвить токен на `/signup` (тот же host+sitekey, виджет виден) — сервер принимает signup-токен и на login. - Если sidecar занят чужим проектом (solve timed out при живом /health) — поднять выделенный инстанс `PORT=8878` и переключить скрипты env `SIDECAR_URL`. ## Репа (фулл-фарм-стек для агента) `ArthurMonteiro08586/nonecap-autoreg-gateway` (public, Contents API push): - `nonecap_register.py` — авторег (eu.cc-домены, прокси-ротация, анти-lock, PENDING, recovery). - `nonecap_gateway.py` :9997 — stdlib http.server: ротация ключей+proxy-fallback, `POST /v1/solve` (+`{"stream":true}` SSE), `/v1/keys`, `/health`, `/dashboard`, `POST /pool/reload`, **`GET /files?path=...`** (whitelist Desktop/tmp/SESSION-BASE, traversal-guard, ≤2MB) — видимость артефактов для агентов. Auth `X-Gateway-Key` (ключ в gitignored `gateway_key.txt`). - `agent_client.py` + `tools.json` — OpenAI function-calling схема: `hcaptcha_solve/gateway_health/gateway_pool/fs_list/fs_read/pool_reload` → HTTP. Смоук: health + fs_list + demo-solve. - Локальный дев-копии: `Desktop/_PROJECTS/nonecap_autoreg/`. ## Питфолы 1. `/v1/me` 403 missing scope ≠ lock (см. выше). 2. Прокси-пул `tmp/live_http_proxies.txt` деградирует быстро (3 живых из 36) — probe перед батчем (`nc_proxy_probe.py` по ЦЕЛЕВОМУ url, не ipify). 3. Disposable-домены: бан по домену на signup, не по email — ротация local-part не лечит, ротация ДОМЕНА лечит. 4. Background-процессы старых прогонов (до фикса доменов/прокси) присылают stale-фейлы в уведомления — сверять email-домен в тексте фейла, прежде чем чинить уже починенное. 5. write_file маскирует `nc_live_...`-строки и «Bearer » — ключи читать regex'ом из файла в рантайме, в выводах печатать только префикс+длину.