




















@@ -297,6 +297,9 @@ instead, and remote CDP profiles use the browser behind `cdpUrl`.
297297- **Remote control (node host):** run a node host on the machine that has the browser; the Gateway proxies browser actions to it.
298298- **Remote CDP:** set `browser.profiles.<name>.cdpUrl` (or `browser.cdpUrl`) to
299299 attach to a remote Chromium-based browser. In this case, OpenClaw will not launch a local browser.
300+- For externally managed CDP services on loopback (for example Browserless in
301+ Docker published to `127.0.0.1`), also set `attachOnly: true`. Loopback CDP
302+ without `attachOnly` is treated as a local OpenClaw-managed browser profile.
300303- `headless` only affects local managed profiles that OpenClaw launches. It does not restart or change existing-session or remote CDP browsers.
301304- `executablePath` follows the same local managed profile rule. Changing it on a
302305 running local managed profile marks that profile for restart/reconcile so the
@@ -370,6 +373,39 @@ Notes:
370373`wss://` for a direct CDP connection or keep the HTTPS URL and let OpenClaw
371374 discover `/json/version`.
372375376+### Browserless Docker on the same host
377+378+When Browserless is self-hosted in Docker and OpenClaw runs on the host, treat
379+Browserless as an externally managed CDP service:
380+381+```json5
382+{
383+ browser: {
384+ enabled: true,
385+ defaultProfile: "browserless",
386+ profiles: {
387+ browserless: {
388+ cdpUrl: "ws://127.0.0.1:3000",
389+ attachOnly: true,
390+ color: "#00AA00",
391+ },
392+ },
393+ },
394+}
395+```
396+397+The address in `browser.profiles.browserless.cdpUrl` must be reachable from the
398+OpenClaw process. Browserless must also advertise a matching reachable endpoint;
399+set Browserless `EXTERNAL` to that same public-to-OpenClaw WebSocket base, such
400+as `ws://127.0.0.1:3000`, `ws://browserless:3000`, or a stable private Docker
401+network address. If `/json/version` returns `webSocketDebuggerUrl` pointing at
402+an address OpenClaw cannot reach, CDP HTTP can look healthy while the WebSocket
403+attach still fails.
404+405+Do not leave `attachOnly` unset for a loopback Browserless profile. Without
406+`attachOnly`, OpenClaw treats the loopback port as a local managed browser
407+profile and may report that the port is in use but not owned by OpenClaw.
408+373409## Direct WebSocket CDP providers
374410375411Some hosted browser services expose a **direct WebSocket** endpoint rather than
@@ -388,10 +424,13 @@ CDP URL shapes and picks the right connection strategy automatically:
388424[Browserbase](https://www.browserbase.com)). OpenClaw tries HTTP
389425`/json/version` discovery first (normalising the scheme to `http`/`https`);
390426 if discovery returns a `webSocketDebuggerUrl` it is used, otherwise OpenClaw
391- falls back to a direct WebSocket handshake at the bare root. This lets a
392- bare `ws://` pointed at a local Chrome still connect, since Chrome only
393- accepts WebSocket upgrades on the specific per-target path from
394-`/json/version`.
427+ falls back to a direct WebSocket handshake at the bare root. If the advertised
428+ WebSocket endpoint rejects the CDP handshake but the configured bare root
429+ accepts it, OpenClaw falls back to that root as well. This lets a bare `ws://`
430+ pointed at a local Chrome still connect, since Chrome only accepts WebSocket
431+ upgrades on the specific per-target path from `/json/version`, while hosted
432+ providers can still use their root WebSocket endpoint when their discovery
433+ endpoint advertises a short-lived URL that is not suitable for Playwright CDP.
395434396435### Browserbase
397436@@ -654,6 +693,8 @@ Common examples:
654693- CDP startup or readiness failure:
655694- `Chrome CDP websocket for profile "openclaw" is not reachable after start`
656695- `Remote CDP for profile "<name>" is not reachable at <cdpUrl>`
696+- `Port <port> is in use for profile "<name>" but not by openclaw` when a
697+ loopback external CDP service is configured without `attachOnly: true`
657698- Navigation SSRF block:
658699- `open`, `navigate`, snapshot, or tab-opening flows fail with a browser/network policy error while `start` and `tabs` still work
659700此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。