Files
autoreg-skills-max/skills/github-oauth-automation/references/habr-devto-vc-walls-2026-10.md

6.4 KiB
Raw Permalink Blame History

Habr / dev.to / vc.ru — стены OAuth и регистрации (2026-10-03)

Цель сессии: постить AI-лонгриды с рекламой TG-канала на внешних площадках. Итог: все три упёрлись в стены; зафиксировано точно где и почему, чтобы не повторять.

Habr (habr.com / account.habr.com)

Регистрация закрыта Yandex SmartCaptcha:

  • Форма: POST https://account.habr.com/ru/register/start/<token> (action-токен из GET habr.com/ru/auth/register/), поля email/nickname/password1/password2/agree=on/cplcy=on.
  • Ответ: JSON {"success":false,"errors":{"smart-token":"Необходимо пройти капчу"}}.
  • Sitekey: data-sitekey="ysc1_...", data-captcha="yandex".
  • YesCaptcha (баланс 4394, ключ в Desktop/_PROJECTS/авторег проект/.env YESCAPTCHA_KEY): НЕ поддерживает Yandex SmartCaptcha — AntiYandexTaskProxyless / AntiYandexTask / YandexSmartCaptchaTask / AntiYandexSmartCaptchaTask все → ERROR_TASK_NOT_SUPPORTED.
  • Camoufox headless (venv BrowserMCP): виджет есть (data-sitekey детектится), но submit-кнопка disabled и input[name=smart-token] пуст даже через 20с — невидимый чек не проходится headless. Venv SearchMCP для camoufox сломан (Connection closed while reading from the driver) — использовать C:/Users/User/tools/BrowserMCP/.venv/Scripts/python.exe.

OAuth через GitHub — технически проходит, но бесполезен для НОВЫХ аккаунтов:

  • Флоу: GET habr.com/ru/auth/login/ → 302 account.habr.com/ru/ident/ → из ident-HTML взять hidden token из блока формы extidp/github/prompt → POST этот endpoint с token=<...> + заголовок X-Requested-With → JSON {"success":true,"rurl":"https://github.com/login/oauth/authorize?client_id=8a8c881ecaaa3b5d9ca4&state=..."}.
  • GitHub login + 2FA (app_otp) + authorize POST проходят (см. pitfall про парсинг hidden-полей ниже).
  • Callback: https://account.habr.com/extidp/github/check?code=... → 403 «Внешняя учётная запись не привязана ни к одному Аккаунту». OAuth-логин работает ТОЛЬКО для аккаунтов, где GitHub уже привязан. Новую учётку так не создать.
  • Проверка логина: /ru/settings/profile/ → 401 если не залогинен. Анонимные cookies (habrsession_id и др.) ставятся всегда — «cookies есть» ≠ «залогинен», проверять именно authenticated endpoint.

Технические детали флоу (если когда-нибудь понадобится):

  • Скрипт: tmp/habr_gh_login.py (cookie-jar, pyotp, state в tmp/habr_sessions*.json).
  • После 2FA GitHub отдаёт страницу authorize; POST /login/oauth/authorize должен содержать ВСЕ hidden-поля формы (client_id, redirect_uri, redirect_uri_specified, scope, state, authenticity_token) + authorize=1. Парсить итерацией по <input ... type="hidden" ...> тегам с отдельными regex на name/value — фиксированный порядок name=".." value=".." в одном regex теряет поля (атрибуты идут в разном порядке) → POST отдаёт 404.
  • Callback приходит через <meta http-equiv="refresh" content="0;url=..."> — urllib за ним НЕ следует, извлекать regex и идти вручную.

vc.ru

  • Auth = SPA: POST https://api.vc.ru/v3.4/auth/email/code {email} → challengeId → POST .../email/code/confirm {challengeId, code} (эндпоинты из бандла /assets/index-*.js).
  • api.vc.ru (front-proxy.vc.ru, [REDACTED-IP], Yandex Cloud) полностью недоступен с домашнего IP — connection timeout на GET и POST, ping не отвечает. При этом корень vc.ru отдаёт 200. Через vc.ru/api/v3.4/... — 404 (роуты только на api-поддомене). Без residential-прокси РФ-гео флоу не проверить.

dev.to (Forem)

  • OAuth: GET dev.to/users/auth/github → GitHub login/2FA/authorize — всё проходит, meta-refresh отдаёт https://dev.to/users/auth/github?code=...&iss=....
  • GET этого callback → редиректит обратно на github authorize, api/users/me = 401, cookie _Devto_Forem_Session есть но неаутентифицированный. Похоже на state/session mismatch при обмене code. Сжигает GH-аккаунты пула впустую — после 2-3 неудач стопать, не масштабировать.
  • Скрипт-заготовка: tmp/devto_gh_login.py.

linux.do

  • Discourse, но Cloudflare: session/csrf.json → 403 «Just a moment» с нашего IP. Токен в tmp/_onemini_session.json не проверить без обхода CF.

Вывод для контент-дистрибуции

Внешние веб-форумы закрыты (капча/гео/привязка). Рабочие каналы: Telegraph (вечные URL, без аккаунта) + собственные TG-площадки: канал @AlStack, Vibe Club TG-форум (PeerChannel 4415843844, сессия tmp/R3fIex — get_entity по int-ид НЕ работает, нужен PeerChannel), Goth Intel Feed (3927191915). Конвейер: sm-content-pipeline → references/standalone-content-agent-telegraph.md (если skill user-owned — скрипт tmp/content_agent.py самодостаточен).

Расходники

  • GH-пул 172 акка (email/password/totp/login): tmp/hoplite-gateway/data/gh_accounts.json.
  • 2captcha ключ в tmp/vibe_autoreg/api456_api.py живой, баланс ~$1.03 — на Turnstile хватит, на Yandex SmartCaptcha не решает никто.
  • Voidash для почты: POST api.voidash.com/api/v1/inboxes {domain: voidash.bond} → address + session_key; домены govno.eu.cc/musor.eu.cc/pomoi.eu.cc тоже живые.