# 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`.