5.1 KiB
5.1 KiB
TokenHarbor-ферма: топология rate-limit и дисциплина волн
Проверено в бою 2026-10-12 (полный шторм троттлинга: DC + home + free-пул одновременно).
1. Топология rate-limit TH (free-аккаунты лимитятся ПО СЕТЕВОМУ АДРЕСУ)
| Выход | Chat/serving | Signup | Вердикт |
|---|---|---|---|
| DC (сервер) | 429 навсегда — «many free accounts are sharing this network address» | 429 | непригоден by design |
| Home residential | работает, пока не спален | палит выход | остывает ~1ч после паузы |
| Free-прокси (GH-листы) | 0 из 419 живых смогли chat POST | ~5-10% конверсия | только signup |
| Paid residential (1024proxy DE, свежий IP/запрос) | работает | работает | единственный стабильный путь |
Ключевой факт: GET /models проходит на IP, которые ловят 429 на chat POST. Проба пула — только целевым authenticated POST (max_tokens=3), не GET.
2. Разделение трафиков (главное правило)
- Signup-волны и serving НИКОГДА не делят выход. Волны жгут прокси-пул, serving держит home/paid.
- Recovery (логины в TH) палит home-выход так же, как сайнапы — гонять recovery через прокси или ставить на паузу, пока home нужен для serving. CF 502 HTML на home-леге = выход под челленджем, ждать ~1ч.
- Различай тексты 429: «Too many sign-ups from this network» = signup-лимит (~1ч); «many free accounts sharing this network address» = serving-лимит на shared IP (для DC — перманентно); CF 502 HTML = IP под Cloudflare-челленджем.
3. Дисциплина волн
- Перед запуском волн — psutil-скан на дубли (cmdline содержит имя скрипта, исключить ' -c '). Дубли волн жрут один mail-сплит → «This email is already on board» фейлы и сожжённые прокси впустую. Из пары дублей оставлять старейший по create_time.
- Каждая волна = свой mail-сплит. Сплиты разного размера — запускать сначала крупные.
- Отложенный рестарт через
sleep N && cmd &в одном background-вызове тихо умирает (цепочка не переживает cleanup сессии терминала). Каждую долгую задачу запускать ОТДЕЛЬНЫМ terminal(background=true) вызовом, лог в свой файл через >>. - Счётчик «SIGNUP OK» в логе волны lag'ает банк на 2-5 мин (verify mail → login → key). Правда — в accounts.jsonl, не в логе.
4. Serving-шим (aiohttp-прокси)
- ClientTimeout(total=N) убивает длинные стримы (клиентские сессии стримят минуты). Правильно:
ClientTimeout(sock_connect=8-10, sock_read=20-45)— fail-fast на мёртвых прокси, sock_read = зазор между чанками, живой стрим не ограничен по длительности. - Порядок лега: home (быстрый, если не спален) → proxy-пул (2-3 попытки) → 502 быстро. Direct-DC-лег бессмыслен при free-акках (перманентный 429) — не тратить на него таймаут.
- Мусорные каналы в one-api.db ломают диагностику: key аномальной длины (сотни+ символов) даёт
ValueError: Invalid header valueу urllib-проб и рвёт ротацию new-api. При «беспричинных» 503 — первым деломSELECT id,length(key) FROM channels WHERE status=1 AND length(key)>100, дизейблить найденное. - Автопуш ключей в шлюз — cron каждые 15 мин, рестарт new-api только при новых каналах.
5. Бесплатный контур замкнутый (когда paid-прокси нет)
Фидер: каждые 30 мин скачать все живые GH-листы (skill proxy-free-trial) → дедуп против pool-БД → ipify-проба → вставить свежих в пул волн. ~9.5K уникальных за цикл, сотни свежих IP. Serving при этом остаётся на home-остывании — free-пул для чата мёртв, это нужно говорить пользователю прямо, с пруфом (N живых → 0 chat-способных), а не обещать «скоро оживёт».