Files

22 lines
2.8 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.

# RainProxy dashboard — CDP + самопроходящий Turnstile (2026-09-10)
Подтверждённый рабочий паттерн для Vite-SPA с Cloudflare Turnstile, когда headless-инструменты висят.
## Симптом
- dashboard.rainproxy.io — пустая белая страница в Playwright MCP, chrome-devtools MCP и browser-use: бандл `/assets/index.*.js` (~900KB) остаётся `pending` / `ERR_CONNECTION_RESET`, хотя `curl` качает тот же файл (200). Причина сетевая/браузерная, не сайтовая.
- Firecrawl stealth рендерит страницу, но интеракт-сессии сгорают между вызовами ("Job not found"), лимит 2 concurrent jobs, MCP-таймаут 60s — многошаговые формы с ожиданием капчи через firecrawl_interact ненадёжны.
## Рабочее решение: реальный Chrome + CDP
1. `chrome.exe --remote-debugging-port=9333 --user-data-dir=<fresh_dir> --no-first-run <url>` через terminal(background=true). Fresh profile обязателен.
2. Playwright `connect_over_cdp("http://127.0.0.1:9333")` → `b.contexts[0]` → найти страницу по подстроке URL.
3. Заполнить поля по id (`#first_name`, `#email`, `#password`, `pg.check('#agree')`).
4. **Turnstile проходит САМ** в реальном Chrome — не кликать, просто поллить:
`document.querySelector('[name=cf-turnstile-response]').value.length > 10` (каждые 2 сек, до 30 итераций; типично 10-20 сек).
5. Клик Register → редирект на /verify-email?vfemail=<base64(email)>.
## Pitfalls
- Селектор `button:has-text("Login")` может попасть на соседнюю "Login with Google" (содержит подстроку) → неожиданный редирект на accounts.google.com. Google OAuth требует РЕАЛЬНЫЙ пароль аккаунта; IMAP app-пароль не подходит.
- Валидатор email отклоняет плюс-алиасы (`user+tag@gmail.com` → "Please enter a valid email").
- Gmail UTF-7 имена папок при русской локали: Spam = `"[Gmail]/&BCEEPwQwBDw-"`, All Mail = `"[Gmail]/&BBIEQQRP- &BD8EPgRHBEIEMA-"`. IMAP SEARCH с OR-критериями → BAD 'Could not parse command'; использовать SEARCH ALL / SINCE + фильтр в Python.
- Verify-письмо RainProxy на Gmail dot-алиас не пришло за ~3 мин (2 отправки). Для массовых регов использовать отдельный почтовый пул (t-online.de), не Gmail-алиасы.