Files
autoreg-skills-max/skills/proxy-free-trial/references/cdk-promo-hunting.md

8.6 KiB
Raw Blame History

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 и блокируют рескан.