hermes-erkenntnisse/nachtplan-2026-07-22/weg-b-cdp-umbiegung.md

42 lines
2.7 KiB
Markdown

# Weg B — Bridge-Adapter auf gpu-pc-CDP :9223 umbiegen (Nachtplan #5)
**Datum:** 2026-07-22 · **Status:** Code fertig + py_compile-sauber · **Nutzbarkeit:** [BÄR — PWA-Login gpu-pc]
## Kontext
Der dedizierte Bridge-Server `bridge.ki1.it` wurde am 2026-07-22 abgebaut. Einzige Quelle dauerhaft
eingeloggter PWA-Sessions = **gpu-pc (100.109.177.88)**, dort Chrome mit remote-debugging **:9223**
(Suno/Gemini/Qolaba live). "Weg B" = Adapter greifen diese Tabs per CDP ab, statt einen zweiten
Browser mit kopierten Cookies zu betreiben (bei Google-OAuth ohnehin fragil).
## Befund
- **suno.py macht Weg B bereits** — eigenes `get_page()` mit `connect_over_cdp` (host.docker.internal:9223
via SSH-Tunnel, Hostname->IP wegen Chrome-CDP-Host-Header-Check).
- **gemini.py / qolaba.py** nutzten bisher `base.get_page()` = `launch_persistent_context` (eigenes Chrome
+ injizierte Cookies). Diese sind auf CDP umgestellt.
- **mammouth.py** = Firefox + SOCKS5 (gpu-pc-Egress). Firefox hat kein Chromium-CDP -> `connect_over_cdp`
nicht anwendbar. Zusaetzlich Session aktuell ausgeloggt. **Bleibt Firefox-Sonderfall.**
## Umsetzung
Neues Modul `app/bridges/cdp.py` mit `CDPBridge(PWABridge)` — verallgemeinert exakt suno's erprobtes
Muster (gemeinsamer CDP-Browser-Handle mit Reconnect, Hostname->IP-Aufloesung, Tab-Wiederverwendung
nach Domain). Aenderungen an gemini.py/qolaba.py minimal:
- `class Gemini(CDPBridge)` + `match_host="gemini.google.com"`, `relogin_supported=True` entfernt
- `class Qolaba(CDPBridge)` + `match_host="qolaba.ai"`, `relogin_supported=True` entfernt
- Die gesamte Selector-/Ablauf-Logik (chat/image/audio/video/veo3) **unveraendert**.
Sicherheit: `CDPBridge.get_page()` oeffnet bei fehlendem Domain-Tab einen **eigenen neuen Tab**
(kein Hijack von `pages[0]` eines fremden Dienstes). `relogin_supported=False` (geteilter CDP-Context).
## Nutzbarkeit (ehrlich)
Rein technische Umbiegung. Die Session MUSS auf gpu-pc eingeloggt sein. Am 2026-07-22 ist
**Mammouth ausgeloggt** (rigoros geprueft: /login-Redirect, kein Auth-Cookie); Gemini-Google-OAuth
kann ebenfalls ablaufen. Dann meldet `login_status()` ehrlich `logged_in=False` und die Methoden
liefern eine Login-Wall. **-> einmaliger Human-Login auf gpu-pc noetig ([BÄR — PWA-Login gpu-pc]).**
Auto-Relogin aus dem Bridge-Prozess ist bei geteiltem CDP nicht moeglich.
## Deployment (offen, [BÄR]/Folgeschritt)
bridge.ki1.it ist weg — der Bridge-Prozess braucht einen neuen Host MIT SSH-Tunnel zu gpu-pc:9223
(oder Betrieb direkt auf gpu-pc gegen localhost:9223). Env: `PWA_CDP_URL=http://host.docker.internal:9223`.
Code: `bridges/cdp.py` (dieses Repo), Adapter-Backup `D:\claude\backups\bridges-adapter-code-2026-07-22.tgz`.