Files
autoreg-skills-max/skills/anti-detection-browser/references/nodriver-google-oauth-grok.md

44 lines
2.2 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.

# Nodriver + Google OAuth Grok Registration
Конкретный пайплайн регистрации Grok (x.ai) через Google OAuth, когда прямой email signup блокируется Cloudflare.
## Проблема
`accounts.x.ai` блокирует ВСЕ bpproxy residential прокси (403). Даже DrissionPage с Turnstile patch получает `PageDisconnectedError` — Cloudflare рвёт CDP-соединение.
## Решение
Google OAuth flow через nodriver. Google (`accounts.google.com`) принимает bpproxy (302), а OAuth-редирект имеет больше шансов пройти.
## Файлы
- `grok_nodriver.py` — nodriver + email signup (DrissionPage-совместимый API)
- `grok_google_oauth.py` — nodriver + Google OAuth с Gmail аккаунтами
- `proxy_forwarder_9129.py` — локальный HTTP forward proxy на порту 9129
## Требования
- `nodriver` (pip install nodriver)
- `pyotp` для TOTP 2FA
- Gmail аккаунты в формате `tusk_gmail_accounts.json`:
```json
[{"email": "...@gmail.com", "password": "...", "2fa_secret": "..."}]
```
- Локальный proxy forwarder с bpproxy residential (Google принимает bpproxy)
## Flow
1. Запустить proxy forwarder: `python proxy_forwarder_9129.py`
2. `python grok_google_oauth.py N` (N = количество аккаунтов)
3. Nodriver открывает Chrome → `accounts.x.ai/sign-up` → ждёт Turnstile (~30 сек)
4. Ищет кнопку «Continue with Google» → кликает
5. Google OAuth: email → пароль → TOTP (если 2FA) → consent
6. Редирект на Grok → аккаунт создан
7. Сохраняет SSO в `sso/`
## Pitfalls
- **Proxy forwarder port conflicts**: не запускать несколько экземпляров на одном порту
- **bpproxy hardsession expiry**: прокси могут умереть через несколько часов
- **Google может запросить дополнительную верификацию**: phone, recovery email
- **TOTP timing**: код валиден 30 секунд, точное время на хосте критично