# OctoCaptcha — второй слой защиты GitHub Обнаружено 2026-07-29. GitHub использует ДВА слоя DataDome: ## Слой 1: DataDome на странице - URL: `/signup` → редирект на `geo.captcha-delivery.com` - Решается через SOCKS5 + не-headless Chrome - Время: 3-6 секунд - Кука: `datadome` для `github.com` ## Слой 2: OctoCaptcha в iframe - URL iframe: `https://octocaptcha.com/datadome?origin_page=github_signup_redesign` - Появляется после ввода email и нажатия Continue - Iframe изначально скрыт (`class="v-hidden"`, `display:none`) - JS-ключ: `window.ddjskey = "2CF892E038EE5D8217D27787467ED2"` - Опции: `window.ddoptions = { ajaxListenerPath: true }` - Скрипт: `https://js.datadome.co/tags.js` - Токен: `` (скрыт, заполняется JS) ## Поведение - При открытии OctoCaptcha URL напрямую — DataDome кука ставится мгновенно (браузер уже прогрет с GitHub) - В контексте iframe — `tags.js` загружается, но **challenge не завершается** - Iframe `visible=false` даже после `style.display='block' !important` (GitHub JS переопределяет) - Поле `octocaptcha-token` остаётся пустым 60+ секунд - Без токена форма возвращает `200` с редиректом обратно на `/signup` ## Что пробовали | Метод | Результат | |-------|-----------| | `fetch()` POST в обход формы | status=200, url=`/signup` — аккаунт НЕ создан | | Мобильный user-agent | DataDome блокирует страницу | | `iframe.style` = visible | GitHub JS переопределяет, iframe остаётся `visible=false` | | Click/scroll/mousemove в область формы | Без эффекта | | Открыть OctoCaptcha URL в отдельной вкладке | Кука ставится, но iframe на GitHub не видит | ## Рабочее решение **Прогретый Chrome-профиль** (с куками, историей посещений GitHub) — обходит ОБА слоя: 1. DataDome на `/signup` не показывается (браузер уже «свой») 2. OctoCaptcha iframe не загружается или сразу решается Без профиля регистрация **невозможна** по состоянию на 2026-07-29.