autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
52
skills/proxy-free-trial/references/cdk-promo-hunting.md
Normal file
52
skills/proxy-free-trial/references/cdk-promo-hunting.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# CDK/Promo-охота на прокси-провайдеров (NovProxy, ZooProxy, паттерн для любых)
|
||||
|
||||
Класс задачи: вендор раздаёт промо-коды (CDK) на бесплатный трафик в форумах; коды first-come-first-served и выжигаются за минуты. Устойчивый подход — НЕ ручной перебор публичных кодов (все уже used), а автоматический хантер: поллинг источников → diff с used-множеством → мгновенная рега аккаунта → redeem.
|
||||
|
||||
## Архитектура хантера
|
||||
|
||||
1. **State-файл** (`*_hunter_state.json`): `used_codes` (seed = все когда-либо виденные), `pending_accounts` (акки без redemption), `wins`.
|
||||
2. **Скан источников** каждый тик: форумы (ниже). Новый код = не в used_codes.
|
||||
3. **Рега аккаунта ТОЛЬКО при находке нового кода** — вендоры имеют fingerprint-антифрод, массовая рега впустую = бан. Рега через прокси (пул `Desktop/proxy_bot/proxies.db`, `SELECT proxy FROM pool WHERE alive=1 ORDER BY RANDOM()`).
|
||||
4. **1 аккаунт = 1 redemption** — после win акк уходит в wins, под следующий код регается новый.
|
||||
5. **Cron watchdog**: no_agent-скрипт каждые 30м, stdout пустой при отсутствии событий (no delivery), при WIN — одна строка в чат. Воронка: wrapper вызывает хантер(ы) subprocess'ом, фильтрует stdout по `WIN|wins=[1-9]|new: [1-9]|crash`.
|
||||
6. **Cap 5 redeem'ов за прогон** — не светить автоматизацию.
|
||||
|
||||
## Источники кодов (форум-паттерны)
|
||||
|
||||
- **Discourse (nodeloc.com, idcflare.com)**: `https://nodeloc.com/t/<topic_id>.json` публичный, коды в `post_stream.posts[].cooked`. ОБЯЗАТЕЛЬНО `-L`/`allow_redirects=True` — без него 301 и пустой ответ. Новые топики: `/search.json?q=<vendor>%20CDK`.
|
||||
- **Cloudflare-закрытые форумы (idcflare, Altenens, crackingx)**: только через `https://r.jina.ai/<url>`. Jina троттлит БЁРСТЫ (серия запросов подряд → заглушка ~5.8KB без контента); одиночные разнесённые запросы проходят даже с того же IP. Рабочий рецепт: (1) проверять маркер контента (`post_stream` в тексте), а не HTTP-статус — заглушка приходит с 200; (2) пэйсинг 20-25с между фетчами топиков; (3) кэш результатов в state (`topic_cache`, TTL 3ч) — обычный тик трогает 1-2 URL; (4) ретраи через СВЕЖИЙ прокси из пула на каждой попытке (новый IP = новая квота jina; ~20% free-проксей живые); (5) глобальный deadline скана 300-360с, иначе cron-обёртка словит таймаут. Короткий UA `Mozilla/5.0` достаточен.
|
||||
- **XenForo (altenens.is)**: `page-999` в URL клампится к последней странице — способ получить свежие посты без знания числа страниц. Пермалинки `/post-<id>` через jina рендерят ВСЮ первую страницу, а не один пост — не полагаться на них.
|
||||
- **web_search по `<vendor> CDK`** периодически вытаскивает новые треды (crdpro, blackhatpakistan и т.п.) — добавлять найденные topic-id в список скана.
|
||||
|
||||
Форматы кодов: NovProxy `[A-Z0-9]{16}`, ZooProxy `XXXX-XXXX-XXXX`. Regex БЕЗ `\b`: в jina-выводе JSON-экранированного HTML непосредственно перед кодом стоит `e` из литерала `\u003e` (word char) — word-boundary не возникает, и паттерн с `\b` даёт 0 совпадений там, где plain-паттерн находит все. Мусор из постов отсеивать BLACKLIST'ом.
|
||||
|
||||
## NovProxy (проверено: рега работает, капча $0)
|
||||
|
||||
API `https://api.novproxy.com`, регистрация БЕЗ браузера:
|
||||
|
||||
1. `POST /novip` → `data: {id, img (data:image/png;base64), k}` — капча 4 знака.
|
||||
2. Решить капчу голосованием локальных vision-моделей (`http://127.0.0.1:16432/v1/chat/completions`, модели qwen-vl-ocr / qwen3-vl-plus, промпт «Reply with ONLY the characters»); принять первый ответ 3-6 alnum-символов.
|
||||
3. `cyemail` = base64(AES-CBC(key=MD5hex(k + '_sign_up'), iv=key[:16], plaintext=`<visitor_id 32hex>`,`<email>`), PKCS7 pad).
|
||||
4. `POST /v1/signup` **form-data**: `lang=en, email, pwd, kwd='', pcode='', result=<captcha>, idkey=<id>, headless='false', cyemail`.
|
||||
5. Redeem: `POST /v1/cdkeyUse` data `{cdkey, token, lang}` (token в data, не в хедерах — axios-обёртка дашборда кладёт его в тело). Ответ code=0 win, code=2 «The code has been used».
|
||||
6. После win: `POST /v1/member` (traffic), `/v1/addTrafficWhite` {ip} (whitelist своего IP), `/v1/getIp` + `/v1/nov/account_domain` (прокси-эндпоинты появляются только при трафике; на пустом акке «Ip balance is empty» — норма).
|
||||
|
||||
Почта: voidash.bond проходит. Disablemsg про Китай — на UA/EU IP не влияет.
|
||||
|
||||
## ZooProxy (проверено: рега без капчи)
|
||||
|
||||
API `https://api.zooproxy.com`, хедер **`X-Custom: zooproxy`** обязателен.
|
||||
|
||||
1. `POST /flux_api/v1/sign_up` **СТРОГО form-encoded** (`data=`): `email, pwd, pcode='', kwd='', lang='en', token=''`. JSON-тело даёт ложное `code:10 "Email format error"` — дело не в email, а в content-type/наборе полей.
|
||||
2. Redeem: `POST /flux_api/v1/cdkey/use` data `{cdkey, token, lang}`, Origin/Referer `https://console.zooproxy.com/`.
|
||||
3. Трафик: `/flux_api/v1/users/traffic_info`. `/v1/cdkeys` и `/v1/cdkeyRecord` — история (пусты до win).
|
||||
|
||||
## Pitfalls
|
||||
|
||||
- Сохранённый ответ API может лежать в state-файле как **stringified JSON** (`resp` = строка) — парсить `json.loads(resp)['data']['token']`, а не regex'ом по `json.dumps()` файла: экранированные кавычки ломают паттерн `token":`.
|
||||
- Публичные коды из поисковой выдачи почти гарантированно уже redeemed — не тратить прогоны на перебор старых тредов, ценность только в свежих постах (поллинг последней страницы).
|
||||
- Не регистрировать акки «про запас» пачками с одного IP/фингерпринта — вендор банит за мульти-аккаунт-паттерн; рега строго под найденный код, через прокси.
|
||||
- XenForo-треды «daily update» могут содержать коды только в первом посте (устаревшие) — реальные дропы вендора в последних постах, сканировать хвост треда.
|
||||
- Discourse `search.json` содержит id не только топиков, но и постов/юзеров — новые топики для скана извлекать ТОЛЬКО JSON-парсингом массива `topics[]`; сырой regex по `"id"` тащит мусорные id и раздувает список скана.
|
||||
- Прокси-ретрай не должен молча фолбэчиться на direct при исключении мёртвого прокси — иначе «троттлинг» на самом деле запросы с того же throttled IP; брать новый прокси на каждую попытку и давать исключению всплыть до следующего attempt.
|
||||
- После фикса extraction-логики (regex, парсер) сбрасывать `topic_cache` в state — записи «0 кодов» от сломанного экстрактора маскируют баг на весь TTL и блокируют рескан.
|
||||
Reference in New Issue
Block a user