Files
autoreg-skills-max/skills/ai-provider-autoreg/references/nonecap-hcaptcha-solver-autoreg.md

57 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:<port>/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 <email> <pass> <proxy1,proxy2,...>` — итерация проксей, логин, /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'ом из файла в рантайме, в выводах печатать только префикс+длину.