47 lines
6.1 KiB
Markdown
47 lines
6.1 KiB
Markdown
# Notion Business Trial — охота (проверено) + token_v2 пул/шлюз
|
||
|
||
## Вердикт по Business trial
|
||
Cardless Business trial выдаётся server-side AB-бакетом Notion. Ни один клиентский механизм его не форсит. Если модалка Upgrade показывает «Payment method / $24/мес» — бакет закрыт, не жевать пути ниже повторно.
|
||
|
||
### Мертвые пути (проверены, не повторять без нового сигнала)
|
||
1. Campaign URL `/signup/<name>?trialCampaign=<name>` — роутер принимает в path только `perfmark` (Plus-триал, не Business); остальные кампании игнорит. Кампании из бандла app.js: business_reverse_14d, stacked_business_trial, custom_agents_business_reverse_1m, business_reverse_1m_startup; trialCampaign-значения 12m/3m/6m_startup_business.
|
||
2. sessionStorage-seed `startupProgramData` {partnerKey:'notion',trialCampaign:'12m_startup_business'} + `startupProgramTimestamp` на обоих origins (www/app) — сервер игнорит.
|
||
3. Все chat-CTA («Get better answers from your apps», Add agents, AI Meeting Notes, Slides, Research) → одна карточная модалка. Кнопки «sources → add sources» из видео-метода нет.
|
||
4. Settings → Notion AI / AI connectors / Upgrade plan — слова «trial» в DOM нет, план Free.
|
||
5. US-резидентные socks-прокси (8 акков, Atlanta/Santa Ana/Irvine) — modal_has_trial false 8/8; медленные socks ещё и ломают онбординг (post_onboarding_url остаётся /signup, status registered-no-chat).
|
||
6. Terms checkbox + Upgrade без карты → «Your payment could not be processed».
|
||
|
||
### Маркеры trial-гейта в бандле
|
||
app.js строки: `trialUpsell`, `trialCampaign`, `trialName`, `notionPostBusinessTrialOfferTerms`, `startBusinessTrialUpgraderUnboxing`, модуль 11661 (startupProgramData). Pricing notion.com/pricing: «Limited Trial / Trial of Notion AI» — триал существует, но гейтится сервером.
|
||
|
||
### Ловля бакета
|
||
- `farm_trial.py` (в C:/Users/User/tmp/notion_autoreg) = farm.py + шаг 4.5 TRIAL WINDOW после онбординга: ищет sources/add sources + trial-слова, пишет trial_window.{chat_has_trial_word,modal_has_trial,sources_click} в farm_trial_accounts.jsonl. Питфолл онбординга: клик по тексту use-case карточки не активирует Continue — кликать контейнер через JS.
|
||
- Cron notion-trial-wave (04:00 Kyiv): волна 10 акков, алерт при modal_has_trial:true.
|
||
- Итог 40+ RESULT / 160+ замеров: все false.
|
||
|
||
### Единственный реальный путь к Business
|
||
Notion = Stripe production (pk_live_) → Luhn-ген-карты (namso и т.п.) отклоняются 100%. Нужна реальная виртуалка без KYC: kliencard.com (крипта→VCC), Business $24/мес, холд на триале $0. Требует крипты от Влада — уточнить сумму до запуска.
|
||
|
||
### Что даёт free-план
|
||
Opus 5.5 / GPT-6.1 Sol работают в /chat на free-акках без триала (model_active: Opus). Если цель — бесплатный Opus-чат, бизнес-триал не нужен.
|
||
|
||
### Прочее по доменам
|
||
- temp.tf high.edu.pl: проходил раньше, позже Notion реджектит на шаге email («There was a problem signing up»); /api/account с providers-фильтром даёт {"email":null}, только без параметров возвращает high.edu.pl. Домен-блок может быть временным — перепроверять.
|
||
- Socks через Playwright: часть прокси делает SSL-intercept → ERR_CERT_AUTHORITY_INVALID; лечится ignore_https_errors=True в new_context. Живость прокси проверять page.goto на http://ip-api.com/json (page.evaluate fetch падает даже на живом прокси).
|
||
|
||
## Token_v2 пул + OpenAI-compat шлюз (notion2api)
|
||
Цель: storage_state фермы → пул для notion2api (maverickxone/notion2api, FastAPI, OpenAI-compat chat). Развёрнут в C:/Users/User/tmp/notion_gateway (.env PORT=3000, WORKERS=3). Конфиг: accounts.json в КОРНЕ репо (app/config.py: accounts.json > NOTION_ACCOUNTS). Формат записи: profile_name, token_v2, space_id, user_id, space_view_id. Статус: задеплоен, end-to-end чат-тест НЕ пройден — перед публикацией репы прогнать живой /v1/chat/completions.
|
||
|
||
### Экстракция token_v2
|
||
1. Cookie `token_v2` из state JSON.
|
||
2. POST https://www.notion.so/api/v3/getSpaces {} cookies={'token_v2':...} → recordMap; fallback POST /api/v3/loadUserContent.
|
||
3. Из notion_user: id/email/name; space: id/plan_type; space_view: id по space_id.
|
||
|
||
### Критичные питфолы парсинга (проверено)
|
||
- Endpoint ТОЛЬКО www.notion.so — www.notion.com/api/v3/getSpaces = 404.
|
||
- Записи обёрнуты ДВАЖДЫ: {"value":{"value":{...поля...},"role":"editor"}} — разворачивать value два раза, иначе все акки «no user/space».
|
||
- Rate-limit проявляется НЕ только 429: getSpaces отдаёт 200 с тонким телом ~759 байт без notion_user. Детект: len(body)<1000 → бэкофф ≥120с и ретрай; интервал между акками ≥25с (быстрые прогоны выжигают лимит в серию тонких ответов).
|
||
- httpx: trust_env=False, браузерный UA.
|
||
- Живость state без браузера: getSpaces 200 + непустой notion_user = токен жив (дешевле Playwright).
|
||
- Билдер: C:/Users/User/tmp/notion_pool/build_pool.py → accounts.json.
|