Files
admin/.wiki/concepts/forgetmeai-free-web-chat-proxies.md

89 lines
10 KiB
Markdown
Raw 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.
---
title: "ForgetMeAI: семейство бесплатных web-chat прокси (DeepSeek/Qwen/GLM/Kimi) — паттерны обхода анти-бот"
type: concept
tags: [forgetmeai, llm-web-proxy, lwp, captcha, baxia-waf, pow, cloakbrowser, stealth, deepseek-web, qwen-web]
sources: [../raw/forgetmeai-repo-analysis-2026-08-22.md]
updated: 2026-08-22
---
# ForgetMeAI: бесплатные web-chat прокси — что там есть для lwp
Обзор GitHub-аккаунта [ForgetMeAI](https://github.com/ForgetMeAI) (8 репозиториев, автор t.me/forgetmeai) 2026-08-22. Весь аккаунт — ровно та же ниша, что lwp (llm-web-proxy): **локальные прокси, превращающие бесплатные веб-чаты LLM в OpenAI/Anthropic-совместимые API**. Часть репов — прямые аналоги комбо lwp, их подходы к анти-боту — готовый референс для разблокировки qwen-web и укрепления deepseek-web.
## Репозитории (по теме)
| Репо | ⭐ | Что это | Отношение к lwp |
|---|---|---|---|
| FreeDeepseekAPI | 318 | deepseek web-chat → OpenAI/Anthropic API. **PoW-солвер** (`lib/pow.js`) + Chrome-расширение-экспортёр сессии | прямой аналог комбо deepseek-web; PoW уже портирован в lwp (`src/vendor/deepseek-pow.ts`) |
| FreeQwenApi | 212 (форк) | qwen web-chat → OpenAI API. **Работает через браузер** (stealth-пуппетеер, fetch внутри `page.evaluate`) | ключ к разблокировке [llm-web-proxy-qwen-web]: baxia-WAF проходится браузерным фингерпринтом |
| FreeGLMKimiAPI | 67 | GLM/Z.ai + Kimi прокси. Прямой fetch + browser-fallback, **CloakBrowser** (патченый Chromium), классификация капчи (Aliyun WAF, `FRONTEND_CAPTCHA_REQUIRED`, `人机验证失败`, punish) | референс: классификаторы капчи, cloakbrowser-заметки |
| FreeKimiAPI | 27 | Kimi cfbt endpoint прокси, circuit-breaker на `browser_signature_banned` (1010) | простейший аналог, паттерн circuit-breaker уже есть в lwp |
| FreeNIMAPI | 11 | мост к NVIDIA NIM (trial) | не про капчу |
| grok_account_checker | 0 | мониторинг X-аккаунтов/SuperGrok: официальный OAuth 2.0 PKCE (Playwright) | честно: не обходит Turnstile/CAPTCHA/2FA |
## Главный паттерн аккаунта: НЕ решать капчу, а обходить через реальную браузерную сессию
Универсальный приём у ForgetMeAI (и у всех живых free-chat прокси):
1. **Один раз логинишься в реальном Chrome** (видимый режим, persistent-профиль) → капчу/2FA проходишь руками.
2. **Сессия захватывается** одним из способов:
- Chrome-расширение читает куки + localStorage из залогиненной вкладки (FreeDeepseekAPI: `token`, `ds_session_id`, `smidV2`, localStorage `hif_dliq`/`hif_leim`);
- экспорт полного cookie-заголовка / cookie-файла и вставка в конфиг;
- persistent browser profile (профиль переживает рестарты, куки живут).
3. **Дальше прокси ходит с живой сессией**: прямой fetch с cookie-jar, ИЛИ fetch внутри браузерного контекста (`page.evaluate`) — когда WAF привязан к device-фингерпринту, а не к кукам.
Исключение из «не решать»: **DeepSeek PoW**его решают локально (WASM-солвер, см. ниже).
## PoW-солвер DeepSeek (FreeDeepseekAPI/lib/pow.js)
- Грузит WASM-модуль челленджа по URL, **компилирует один раз и кэширует** `WebAssembly.Module` (по URL), каждый solve — свежий Instance (чистая линейная память).
- Префикс челленджа: `salt + '_' + expire_at + '_'`, затем `challenge + prefix` в память WASM, вызов `wasm_solve(sp, cBytes, cBytes.length, pBytes, pBytes.length, difficulty)`, ответ — `float64` (ans) → `Math.floor`.
- Жёсткий таймаут на fetch WASM (15s), неудачная загрузка не кэшируется.
- **В lwp PoW уже есть** (`src/vendor/deepseek-pow.ts` + `deepseek-pow-solver.cjs`), deepseek-комбо работает — ничего не портировать. Сравнить подходы при желании: lwp-версия из omniroute (TS), ForgetMeAI-версия автономная (CJS, 54 строки) — пригодна как fallback/референс.
## qwen-web: браузерный путь через baxia-WAF (главное для lwp)
Наш вывод из сессии 2026-08-22 ([[omniroute-combo-deepseek-web-tuning]]): капча Alibaba baxia-WAF привязана к **device-фингерпринту** (bx-umidtoken минтится JS из sg-wum.alibaba.com), не к cookie; Node-fetch и даже CDP-запросы мимо страницы виснут.
FreeQwenApi подтверждает и даёт рабочий путь:
- **`src/browser/browser.js`** — puppeteer-extra + stealth-плагин + тяжёлый фингерпринт-спуфинг в `page.evaluateOnNewDocument`: `navigator.platform='Win32'`, `hardwareConcurrency=8`, `deviceMemory=8`, фейк `plugins` (Chrome PDF Plugin), `connection` (4g/50ms/10Mbps), `getBattery`, **шум в `HTMLCanvasElement.toDataURL`** (±2 на пиксель — бьёт canvas-фингерпринт), обёртки-задержки на `mousemove/mousedown/mouseup` (человечность). Launch args: `--disable-blink-features=AutomationControlled`, `--disable-web-security` и др.
- **`src/api/chat.js`** — чат-запрос исполняется **внутри страницы**: `page.evaluate(async (data) => fetch(data.apiUrl, {...}))`. Так запрос несёт настоящий umidtoken + canvas-фингерпринт + same-origin → WAF пропускает. Node-стриминг пробуется первым, при анти-бот (antiBot детект: `rgv587|fail_sys_user_validate|_____tmd_____|purecaptcha`) — fallback на browser-fetch.
- Детект анти-бот-эневелопов на HTTP 200: `lower.includes('/_____tmd_____/punish') || (window._config_ && captcha) || purecaptcha`.
- Первичная авторизация — ручная (видимый браузер, `startManualAuthenticationPuppeteer`), сессия — cookies в `sessions/accounts/`.
**Вывод для lwp:** рабочий сценарий qwen-web = **браузерный executor** (puppeteer/playwright + stealth + фингерпринт-спуфинг + fetch в `page.evaluate`), а не реплей cookie-jar через undici. Референс-код закоммичен в lwp: `docs/reference/forgetmeai/`.
## CloakBrowser-заметки (FreeGLMKimiAPI/docs/cloakbrowser-notes.md)
Пропатченный Chromium против анти-бот (CloakHQ/CloakBrowser + Manager):
- **Настоящий патченый браузер** (не JS-инъекции): stealth на уровне бинаря, Playwright-совместимый `launchPersistentContext()`.
- **Persistent не-incognito профили** обязательны: сохраняются куки/localStorage, меньше детекта.
- **Humanize-слой**: печать/клики/скролл с реалистичными задержками через доверенные input-пути.
- **Согласованность locale/timezone/proxy**: флаги браузера + geoip-сверка с IP прокси (в lwp-контексте — per-account proxy уже есть).
- Очистка lock-файлов профиля (`SingletonLock/SingletonCookie/SingletonSocket`) после падений.
- **Ограничение:** патченый браузер не решает уже сработавшую капчу — один раз пройти руками в видимом профиле.
## Классификация капчи/анти-бот (референс-регэкспы)
- DeepSeek: PoW-челлендж (salt/expire_at/difficulty), 503 `chat_admission_busy` = capacity (не капча).
- Qwen (baxia-WAF): `FAIL_SYS_USER_VALIDATE`, `RGV587_ERROR::SM::...`, `_____tmd_____/punish`, `x5secdata`, `rgv587`, `purecaptcha`, `success:false` на 200.
- Z.ai (GLM): `FRONTEND_CAPTCHA_REQUIRED`, `人机验证失败`, `请重新验证`, `刷新页面以更新应用`, `aliyun`, `waf`, `punish`.
- Kimi cfbt: `browser_signature_banned` (1010), `access denied`.
- Общий маркер WAF-страницы: `text/html` в ответе API + `aliyun_waf|baxia|<html`.
## Что берём в lwp (статус)
- [x] PoW-солвер — уже портирован (`src/vendor/deepseek-pow.ts`).
- [x] Классификаторы капчи qwen — уже в `src/lib/qwen-web-executor.ts` (isQwenErrorEnvelope: FAIL_SYS_USER_VALIDATE/punish/x5secdata).
- [x] Референс-код браузерного пути qwen — `docs/reference/forgetmeai/` (коммит 2026-08-22).
- [ ] **Браузерный executor qwen** (puppeteer + фингерпринт-спуфинг + fetch в page.evaluate) — следующий шаг для [llm-web-proxy-qwen-web], см. [[qwen-waf-browser-path]] в вики lwp.
- [ ] (опция) CloakBrowser как запасной движок для z.ai/kimi, если понадобятся.
## Связанное
- [[omniroute-combo-deepseek-web-tuning]] — диагноз web-комбо, baxia-WAF, план lwp
- [[llm-web-proxy]] (таска) — спек lwp
- lwp/.wiki: [[qwen-waf-browser-path]], [[forgetmeai-qwen-browser-fetch]] (sources)