# 服务端远程浏览器(Playwright Chromium)— 设计说明 > **取代** iframe 渲染方案([2026-06-11-embedded-browser-design.md](./2026-06-11-embedded-browser-design.md) 中的页面加载方式)。 > UI 状态(标签、收藏 `nav_links`、窗口位置)仍走 `/api/browser/state`,不变。 ## 背景与目标 运维需要在 Nexus 浮动面板内**完整浏览任意公网站点**,不受 `X-Frame-Options` / CSP `frame-ancestors` 限制,且使用**服务端独立浏览器内核**,而非用户本机标签页内的 iframe。 ### 用户确认(2026-06-11) | 决策项 | 选择 | |--------|------| | 可访问范围 | **任意公网** `http` / `https` | | 内核 | **Chromium**(Playwright),不要求 Firefox | | 交互 | 在 Nexus 面板内看画面 + 键鼠操作(非「新标签打开」为主) | ### 与 iframe 方案对比 | | iframe(现状) | 服务端 Chromium(目标) | |--|----------------|---------------------------| | 渲染位置 | 用户浏览器 | Nexus 服务器 | | 站点嵌入限制 | 常被拒绝 | 无(顶层窗口) | | SSRF 风险 | 无 | **有,必须缓解** | | 资源 | 几乎无 | 每会话 ~200–500MB RAM | | Cookie / 登录 | 用户本机 | **服务器浏览器 Profile** | ## 方案概述 类比 RDP(guacd → WebSocket → 前端画布),但 Nexus **拥有**浏览器进程与协议: ``` 管理员浏览器 (Vue SPA) │ JWT WebSocket + REST ▼ Nexus API (FastAPI) — 桥接,不跑 Chromium │ Worker Key + 内网 HTTPS ▼ Browser Worker VPS — Playwright Chromium(headless + CDP screencast) ▼ 公网目标站点 ``` | 组件 | 职责 | |------|------| | **Playwright Chromium** | 运行在 **Browser Worker**;Nexus 桥接会话 | | **URL 安全网关** | 导航前 DNS 解析 + IP 段校验,阻断私网/元数据 SSRF | | **`/ws/browser/{session_id}`** | 推送 JPEG 帧;接收 navigate / 键鼠 / 滚动 | | **`POST/DELETE /api/browser/sessions`** | 创建、销毁会话 | | **`GlobalBrowserPanel`** | `` 替代 `