93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# Gmail+alias TokenHarbor Flow
|
||
|
||
Полный цикл регистрации TokenHarbor через Gmail +alias с $5 gift claim.
|
||
|
||
## Почему Gmail, не t-online.de
|
||
|
||
t-online.de блокирует письма от tokenharbor.ai на уровне сервера — ни inbox, ни spam.
|
||
Проверено на 10+ аккаунтах 2026-08-09. Gmail принимает мгновенно.
|
||
|
||
## Gmail аккаунт
|
||
|
||
- Email: `[REDACTED-NAME]@gmail.com`
|
||
- App password: [REDACTED]
|
||
- IMAP: `imap.gmail.com:993`, SSL
|
||
- Алиасы: `[REDACTED-NAME]+th{N}@gmail.com` — без настройки, работает из коробки
|
||
|
||
## Поиск verify-письма
|
||
|
||
```python
|
||
mail.search(None, f'TO "[REDACTED-NAME]+th{id}@gmail.com"')
|
||
```
|
||
|
||
Письмо от TokenHarbor с subject: "Verify your email to start using the Token Harbor API".
|
||
Ссылка в теле: `https://tokenharbor.ai/verify-email?token=...`
|
||
|
||
## Полный цикл (90 сек на аккаунт)
|
||
|
||
### 1. Signup (15 сек)
|
||
```
|
||
Page.navigate → https://tokenharbor.ai/login?mode=signup
|
||
Заполнить email + password через nativeSet
|
||
Клик "Create account"
|
||
Ждать редиректа на /dashboard
|
||
```
|
||
|
||
### 2. Email verification (10-30 сек)
|
||
```
|
||
Gmail IMAP: поиск verify-письма по TO "[REDACTED-NAME]+th{N}@gmail.com"
|
||
Извлечь https://tokenharbor.ai/verify-email?token=...
|
||
Page.navigate → verify link
|
||
Ждать редиректа verify=success или /dashboard
|
||
```
|
||
|
||
### 3. $5 Gift claim (10 сек)
|
||
```
|
||
Page.navigate → /dashboard
|
||
Клик: button с текстом "gift" + "ready" (в хедере, "1 gift ready to claim")
|
||
Ждать модалку (2 сек)
|
||
Клик: button с текстом.trim() === "Claim" (внутри модалки)
|
||
Ждать подтверждения (3 сек)
|
||
```
|
||
|
||
### 4. API key creation (20 сек)
|
||
```
|
||
Page.navigate → https://tokenharbor.ai/dashboard/api-keys
|
||
Ждать загрузки: "API keys" in text AND "LOADING" not in text AND "Create and manage" in text
|
||
Клик: button с "New key" И offsetParent !== null
|
||
Ждать форму (3 сек)
|
||
Заполнить label через nativeSet (visible input: offsetParent !== null)
|
||
Клик: button с text === "Create key" И !disabled И offsetParent !== null
|
||
Ждать появления ключа (5 сек)
|
||
Извлечь thk_live_... из document.body.innerText
|
||
```
|
||
|
||
### 5. Push to VPS (2 сек)
|
||
```
|
||
POST https://[REDACTED-NAME].loc.cc/th/provider/add?provider=tokenharbor
|
||
Authorization: Bearer [REDACTED-KEY]
|
||
Body: {"key": "thk_live_..."}
|
||
```
|
||
|
||
## Rate limiting
|
||
|
||
При регистрации быстрее 1 акк/мин TokenHarbor начинает реджектить signup.
|
||
Симптом: после клика "Create account" URL остаётся `/login?mode=signup`.
|
||
Решение: `time.sleep(2)` между регистрациями. При массовых фейлах — 5-10 сек.
|
||
|
||
## Проверка баланса
|
||
|
||
```python
|
||
GET https://tokenharbor.ai/v1/models
|
||
Authorization: Bearer thk_live_...
|
||
```
|
||
200 = ключ работает (баланс > 0 или есть $5). 401 = invalid. 402 = no balance.
|
||
|
||
Нет публичного API для проверки точного баланса — только через dashboard.
|
||
|
||
## Питфолы Gmail IMAP
|
||
|
||
- Gmail требует app password (не основной пароль)
|
||
- `imaplib.IMAP4_SSL("imap.gmail.com", 993)` — стандартный порт
|
||
- Поиск по `TO` работает с полным адресом включая `+alias`
|
||
- При частых запросах Gmail может темпорарно блокировать — добавить задержки |