meta(wiki): ingest ForgetMeAI free web-chat proxy analysis (concept + raw) + qwen-web task update (browser path through baxia-WAF)
This commit is contained in:
88
.wiki/concepts/forgetmeai-free-web-chat-proxies.md
Normal file
88
.wiki/concepts/forgetmeai-free-web-chat-proxies.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
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)
|
||||
@@ -94,3 +94,4 @@ OmniRoute для 2 комбо — overkill (Next.js + sqlite + дашборд +
|
||||
- **Вывод:** капча привязана к device-фингерпринту запроса (bx-umidtoken минтится JS из sg-wum.alibaba.com), не к cookie. Прямой API-scraping из Node — мёртвая ветка.
|
||||
- **Зацепка:** «из под omniroute работает» — в **контейнере** omniroute лежит рабочая версия `open-sse/executors/qwen-web.ts` (≠ GitHub main, который портировали в lwp). Сравнить и/или взять подход оттуда (возможно решённый punish-flow / живой браузерный путь). Ключ/сессия qwen хранится в omniroute DB (provider_connections, зашифрован `enc.v1.` + STORAGE_ENCRYPTION_KEY из `/app/data/server.env`).
|
||||
- Статус: подзадача [llm-web-proxy-qwen-web] 🟡 paused, next-сессия — юзер покажет рабочий подход.
|
||||
- **2026-08-22 вечер: находка-подтверждение.** Аккаунт ForgetMeAI (FreeQwenApi, 212⭐) гоняет qwen через браузер и работает: чат-запрос исполняется **внутри страницы** (`page.evaluate(fetch(...))`) — запрос несёт настоящий bx-umidtoken + canvas-фингерпринт + same-origin → baxia-WAF пропускает. Плюс тяжёлый stealth-спуфинг (navigator/canvas-noise/задержки событий). Вывод: Node-fetch-путь мёртв окончательно, рабочий сценарий = браузерный executor (puppeteer/playwright). Референс: [[forgetmeai-free-web-chat-proxies]] + lwp `docs/reference/forgetmeai/`.
|
||||
|
||||
Reference in New Issue
Block a user