Chrome 扩展,将浏览器暴露为 CDP 端点。无需重启浏览器,直接用 Playwright/Puppeteer 接管你正在用的 Chrome。支持多客户端并行,页面相互隔离。
安装扩展 → 启动代理 → 用 Playwright 连接
# ① 安装并启动代理服务器 $ cdp-tunnel start ✓ Proxy server listening on http://localhost:9221 ✓ Loading Chrome extension from ~/.cdp-tunnel/extension # ② 用 Playwright 连接(可以是 Python / Node / 任何语言) $ node -e " const browser = await chromium.connectOverCDP('http://localhost:9221'); const page = await browser.newPage(); await page.goto('https://github.com'); console.log(await page.title()); " GitHub · Build and ship software on a single, collaborative platform # ③ 同时开第二个客户端(用同一个 Chrome,不同 tab) $ node -e "...chromium.connectOverCDP('http://localhost:9221')..." ✓ New session created, isolated context
同一个 Chrome 实例,支持 N 个 Playwright/Puppeteer 客户端同时连接,页面相互隔离互不干扰。
扩展弹出页面可视化配置端口、白名单、认证 token,无需手动改 JSON。
页面刷新、Chrome 重启后自动重连代理服务器,会话状态不丢失。
可选 token 鉴权,防止未授权访问。支持多用户多 token。
HTTP 接受连接,WebSocket 桥接到 Chrome 扩展,完美穿透防火墙。
完整的端到端测试覆盖,包括多客户端、断线重连、token 鉴权等场景。
┌──────────────────────────────────────────────────────────┐
│ Proxy Server (localhost:9221) │
│ │
│ /plugin ←────── Chrome Extension (WebSocket) │
│ HTTP ←────── Playwright/Puppeteer Clients │
└──────────────────────────────────────────────────────────┘
↑ ↑ ↑
│ │ │
│ │ │
Client 1 Client 2 Client 3
(Python) (Node.js) (Bash)
connectOverCDP puppeteer.connect cdp-tunnel cli