Trình duyệt (do openclaw quản lý)
OpenClaw can run a dedicated Chrome/Brave/Edge/Chromium profile that the agent controls. 35. Nó được cô lập khỏi trình duyệt cá nhân của bạn và được quản lý thông qua một dịch vụ điều khiển cục bộ nhỏ bên trong Gateway (chỉ loopback). Góc nhìn cho người mới:- Hãy xem nó như một trình duyệt riêng, chỉ dành cho tác tử.
- Profile
openclawkhông chạm vào profile trình duyệt cá nhân của bạn. - Tác tử có thể mở tab, đọc trang, nhấp, và gõ trong một làn an toàn.
- Profile
chromemặc định sử dụng trình duyệt Chromium mặc định của hệ thống thông qua relay extension; chuyển sangopenclawđể dùng trình duyệt được quản lý và cách ly.
Những gì bạn nhận được
- Một profile trình duyệt riêng tên openclaw (mặc định có điểm nhấn màu cam).
- Điều khiển tab mang tính quyết định (liệt kê/mở/tập trung/đóng).
- Hành động của tác tử (nhấp/gõ/kéo/chọn), snapshot, ảnh chụp màn hình, PDF.
- Hỗ trợ đa profile tùy chọn (
openclaw,work,remote, …).
Khởi động nhanh
Profile: openclaw vs chrome
openclaw: trình duyệt được quản lý, cách ly (không cần extension).chrome: relay extension tới trình duyệt hệ thống của bạn (yêu cầu extension OpenClaw được gắn vào một tab).
browser.defaultProfile: "openclaw" nếu bạn muốn chế độ managed làm mặc định.
Cấu hình
Cài đặt trình duyệt nằm trong~/.openclaw/openclaw.json.
- The browser control service binds to loopback on a port derived from
gateway.port(default:18791, which is gateway + 2). The relay uses the next port (18792). - Nếu bạn ghi đè cổng Gateway (
gateway.porthoặcOPENCLAW_GATEWAY_PORT), các cổng trình duyệt suy ra sẽ dịch chuyển để giữ cùng một “họ”. cdpUrlmặc định là cổng relay khi không được đặt.remoteCdpTimeoutMsáp dụng cho kiểm tra khả năng truy cập CDP từ xa (không loopback).remoteCdpHandshakeTimeoutMsáp dụng cho kiểm tra khả năng truy cập WebSocket CDP từ xa.attachOnly: truenghĩa là “không bao giờ khởi chạy trình duyệt cục bộ; chỉ gắn nếu nó đã chạy.”color+colortheo từng profile nhuộm màu UI trình duyệt để bạn biết profile nào đang hoạt động.- Default profile is
chrome(extension relay). 36. DùngdefaultProfile: "openclaw"cho trình duyệt được quản lý. - Thứ tự tự phát hiện: trình duyệt mặc định hệ thống nếu dựa trên Chromium; nếu không thì Chrome → Brave → Edge → Chromium → Chrome Canary.
- Các profile
openclawcục bộ tự gáncdpPort/cdpUrl— chỉ đặt các giá trị đó cho CDP từ xa.
Dùng Brave (hoặc trình duyệt dựa trên Chromium khác)
If your system default browser is Chromium-based (Chrome/Brave/Edge/etc), OpenClaw uses it automatically. Setbrowser.executablePath to override
auto-detection:
Ví dụ CLI:
Điều khiển cục bộ vs từ xa
- Điều khiển cục bộ (mặc định): Gateway khởi động dịch vụ điều khiển loopback và có thể mở trình duyệt cục bộ.
- Điều khiển từ xa (node host): chạy một node host trên máy có trình duyệt; Gateway proxy các hành động trình duyệt tới đó.
- Remote CDP: set
browser.profiles.<name>.cdpUrl(orbrowser.cdpUrl) to attach to a remote Chromium-based browser. 37. Trong trường hợp này, OpenClaw sẽ không khởi chạy trình duyệt cục bộ.
- Token qua query (ví dụ:
https://provider.example?token=<token>) - HTTP Basic auth (ví dụ:
https://user:[email protected])
/json/* endpoints and when connecting
to the CDP WebSocket. Prefer environment variables or secrets managers for
tokens instead of committing them to config files.
Node browser proxy (mặc định zero-config)
If you run a node host on the machine that has your browser, OpenClaw can auto-route browser tool calls to that node without any extra browser config. 38. Đây là đường dẫn mặc định cho các gateway từ xa. Ghi chú:- Node host phơi bày máy chủ điều khiển trình duyệt cục bộ của nó thông qua một proxy command.
- Profile lấy từ cấu hình
browser.profilescủa chính node (giống như cục bộ). - Tắt nếu bạn không muốn:
- Trên node:
nodeHost.browserProxy.enabled=false - Trên gateway:
gateway.nodes.browser.mode="off"
- Trên node:
Browserless (CDP từ xa được lưu trữ)
Browserless is a hosted Chromium service that exposes CDP endpoints over HTTPS. You can point a OpenClaw browser profile at a Browserless region endpoint and authenticate with your API key. Ví dụ:- Thay
<BROWSERLESS_API_KEY>bằng token Browserless thực của bạn. - Chọn endpoint khu vực phù hợp với tài khoản Browserless của bạn (xem tài liệu của họ).
Bảo mật
Ý chính:- Điều khiển trình duyệt chỉ qua loopback; truy cập đi qua xác thực của Gateway hoặc ghép cặp node.
- Giữ Gateway và mọi node host trong mạng riêng (Tailscale); tránh phơi bày công khai.
- Xem URL/token CDP từ xa như bí mật; ưu tiên biến môi trường hoặc secrets manager.
- Xem URL/token CDP từ xa như bí mật; ưu tiên biến môi trường hoặc secrets manager.
- Ưu tiên endpoint HTTPS và token ngắn hạn khi có thể.
- Tránh nhúng token dài hạn trực tiếp trong file cấu hình.
Profile (đa trình duyệt)
OpenClaw supports multiple named profiles (routing configs). Profiles can be:- openclaw-managed: một instance trình duyệt dựa trên Chromium chuyên dụng với thư mục dữ liệu người dùng + cổng CDP riêng
- remote: một URL CDP tường minh (trình duyệt dựa trên Chromium chạy ở nơi khác)
- extension relay: các tab Chrome hiện có của bạn thông qua relay cục bộ + Chrome extension
- Profile
openclawđược tự động tạo nếu thiếu. - Profile
chromelà built-in cho relay Chrome extension (mặc định trỏ tớihttp://127.0.0.1:18792). - Các cổng CDP cục bộ được cấp phát từ 18800–18899 theo mặc định.
- Xóa một profile sẽ chuyển thư mục dữ liệu cục bộ của nó vào Thùng rác.
?profile=<name>; CLI dùng --browser-profile.
Chrome extension relay (dùng Chrome hiện có của bạn)
OpenClaw cũng có thể điều khiển các tab Chrome hiện có của bạn (không cần một instance Chrome “openclaw” riêng) thông qua relay CDP cục bộ + một Chrome extension. Hướng dẫn đầy đủ: Chrome extension Luồng hoạt động:- Gateway chạy cục bộ (cùng máy) hoặc một node host chạy trên máy có trình duyệt.
- Một máy chủ relay cục bộ lắng nghe tại một loopback
cdpUrl(mặc định:http://127.0.0.1:18792). - Bạn nhấp biểu tượng extension OpenClaw Browser Relay trên một tab để gắn (nó không tự động gắn).
- Tác tử điều khiển tab đó qua công cụ
browserthông thường, bằng cách chọn đúng profile.
Phiên sandboxed
If the agent session is sandboxed, thebrowser tool may default to target="sandbox" (sandbox browser).
Chrome extension relay takeover requires host browser control, so either:
- chạy phiên không sandboxed, hoặc
- đặt
agents.defaults.sandbox.browser.allowHostControl: truevà dùngtarget="host"khi gọi công cụ.
Thiết lập
- Tải extension (dev/unpacked):
- Chrome →
chrome://extensions→ bật “Developer mode” - “Load unpacked” → chọn thư mục được in bởi
openclaw browser extension path - Ghim extension, sau đó nhấp vào nó trên tab bạn muốn điều khiển (huy hiệu hiển thị
ON).
- Sử dụng:
- CLI:
openclaw browser --browser-profile chrome tabs - Công cụ tác tử:
browservớiprofile="chrome"
- Chế độ này dựa vào Playwright-on-CDP cho hầu hết thao tác (ảnh chụp/snapshot/hành động).
- Gỡ gắn bằng cách nhấp lại biểu tượng extension.
Cam kết cách ly
- Thư mục dữ liệu người dùng chuyên dụng: không bao giờ chạm vào profile trình duyệt cá nhân của bạn.
- Cổng chuyên dụng: tránh
9222để ngăn xung đột với quy trình dev. - Điều khiển tab mang tính quyết định: nhắm tab theo
targetId, không phải “tab cuối”.
Lựa chọn trình duyệt
Khi khởi chạy cục bộ, OpenClaw chọn cái khả dụng đầu tiên:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Nền tảng:
- macOS: kiểm tra
/Applicationsvà~/Applications. - Linux: tìm
google-chrome,brave,microsoft-edge,chromium, v.v. - Windows: kiểm tra các vị trí cài đặt phổ biến.
Control API (tùy chọn)
Chỉ cho tích hợp cục bộ, Gateway phơi bày một HTTP API loopback nhỏ:- Trạng thái/bắt đầu/dừng:
GET /,POST /start,POST /stop - Tab:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/ảnh chụp:
GET /snapshot,POST /screenshot - Hành động:
POST /navigate,POST /act - Hook:
POST /hooks/file-chooser,POST /hooks/dialog - Tải xuống:
POST /download,POST /wait/download - Gỡ lỗi:
GET /console,POST /pdf - Gỡ lỗi:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Mạng:
POST /response/body - Trạng thái:
GET /cookies,POST /cookies/set,POST /cookies/clear - Trạng thái:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Cài đặt:
POST /set/offline,POST /set/headers,POST /set/credentials,POST /set/geolocation,POST /set/media,POST /set/timezone,POST /set/locale,POST /set/device
?profile=<name>.
Nếu gateway auth được cấu hình, các route HTTP trên trình duyệt cũng yêu cầu xác thực:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>hoặc HTTP Basic auth với mật khẩu đó
Yêu cầu Playwright
Some features (navigate/act/AI snapshot/role snapshot, element screenshots, PDF) require Playwright. If Playwright isn’t installed, those endpoints return a clear 501 error. ARIA snapshots and basic screenshots still work for openclaw-managed Chrome. For the Chrome extension relay driver, ARIA snapshots and screenshots require Playwright. Nếu bạn thấyPlaywright is not available in this gateway build, hãy cài gói
Playwright đầy đủ (không phải playwright-core) và khởi động lại gateway, hoặc cài lại
OpenClaw với hỗ trợ trình duyệt.
Cài Playwright cho Docker
- Nếu Gateway của bạn chạy trong Docker, tránh dùng
npx playwright(xung đột ghi đè npm). - Thay vào đó, hãy dùng CLI được đóng gói sẵn:
- Để lưu trữ các bản tải xuống của trình duyệt, hãy đặt
PLAYWRIGHT_BROWSERS_PATH(ví dụ,/home/node/.cache/ms-playwright) và đảm bảo/home/nodeđược lưu trữ bền vững thông quaOPENCLAW_HOME_VOLUMEhoặc một bind mount. 4. Xem Docker.
Cách hoạt động (nội bộ)
Thiết kế này giữ cho tác tử ở trên một giao diện ổn định, mang tính quyết định, đồng thời cho phép bạn hoán đổi trình duyệt và profile cục bộ/từ xa.- Một máy chủ điều khiển nhỏ nhận các yêu cầu HTTP.
- Nó kết nối tới các trình duyệt dựa trên Chromium (Chrome/Brave/Edge/Chromium) qua CDP.
- Với các hành động nâng cao (nhấp/gõ/snapshot/PDF), nó dùng Playwright phía trên CDP.
- Khi thiếu Playwright, chỉ các thao tác không dùng Playwright khả dụng.
Tham chiếu nhanh CLI
All commands accept--browser-profile <name> to target a specific profile.
39. Tất cả các lệnh cũng chấp nhận --json để xuất kết quả dạng máy đọc được (payload ổn định).
Kiểm tra:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level erroropenclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
uploadvàdialoglà các lệnh arming; chạy chúng trước thao tác click/press kích hoạt chooser/dialog.- Đường dẫn tải xuống và trace bị giới hạn trong các thư mục tạm (temp root) của OpenClaw:
- traces:
/tmp/openclaw(dự phòng:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(dự phòng:${os.tmpdir()}/openclaw/downloads)
- traces:
- Đường dẫn upload bị giới hạn trong thư mục uploads tạm của OpenClaw:
- uploads:
/tmp/openclaw/uploads(dự phòng:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadcũng có thể đặt trực tiếp input file thông qua--input-refhoặc--element.snapshot:--format ai(mặc định khi Playwright được cài): trả về AI snapshot với ref số (aria-ref="<n>").--format aria: trả về cây accessibility (không có ref; chỉ để kiểm tra).--efficient(hoặc--mode efficient): preset role snapshot gọn (tương tác + gọn + độ sâu + maxChars thấp hơn).- Mặc định cấu hình (chỉ tool/CLI): đặt
browser.snapshotDefaults.mode: "efficient"để dùng snapshot hiệu quả khi caller không truyền mode (xem Cấu hình Gateway). - Tùy chọn role snapshot (
--interactive,--compact,--depth,--selector) ép snapshot theo role với ref nhưref=e12. --frame "<iframe selector>"giới hạn role snapshot trong một iframe (kết hợp với role ref nhưe12).--interactivexuất danh sách phẳng, dễ chọn các phần tử tương tác (tốt nhất để điều khiển hành động).--labelsthêm ảnh chụp chỉ viewport với nhãn ref chồng lên (inMEDIA:<path>).
-
click/type/v.v. yêu cầu mộtreftừsnapshot(có thể là số12hoặc role refe12).- Bộ chọn CSS cố ý không được hỗ trợ cho các hành động.
Snapshot và ref
Hành vi ref:-
Ref không ổn định qua các lần điều hướng; nếu có lỗi, hãy chạy lại
snapshotvà dùng ref mới.- Đầu ra: snapshot dạng văn bản bao gồm ref số.
- Hành động:
openclaw browser click 12,openclaw browser type 23 "hello". - Nội bộ, ref được phân giải qua
aria-refcủa Playwright.
-
Nếu role snapshot được chụp với
--frame, role ref sẽ bị giới hạn trong iframe đó cho tới role snapshot kế tiếp.- Đầu ra: danh sách/cây dựa trên role với
[ref=e12](và tùy chọn[nth=1]). - Hành động:
openclaw browser click e12,openclaw browser highlight e12. - Nội bộ, ref được phân giải qua
getByRole(...)(kèmnth()cho trùng lặp). - Thêm
--labelsđể kèm ảnh chụp viewport với nhãne12chồng lên.
- Đầu ra: danh sách/cây dựa trên role với
- Ref không ổn định qua các lần điều hướng; nếu có lỗi, hãy chạy lại
snapshotvà dùng ref mới. - Nếu role snapshot được chụp với
--frame, role ref sẽ bị giới hạn trong iframe đó cho tới role snapshot kế tiếp.
Power-up chờ đợi
Có thể kết hợp:- Chờ URL (hỗ trợ glob của Playwright):
openclaw browser wait --url "**/dash"
- Chờ trạng thái tải:
openclaw browser wait --load networkidle
- Chờ một predicate JS:
openclaw browser wait --fn "window.ready===true"
- Chờ một selector trở nên hiển thị:
openclaw browser wait "#main"
Quy trình gỡ lỗi
Khi một hành động thất bại (ví dụ: “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Dùng
click <ref>/type <ref>(ưu tiên role ref ở chế độ tương tác) - Nếu vẫn thất bại:
openclaw browser highlight <ref>để xem Playwright đang nhắm tới đâu - Nếu trang hoạt động lạ:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Gỡ lỗi sâu: ghi lại trace:
openclaw browser trace start- tái hiện sự cố
openclaw browser trace stop(inTRACE:<path>)
Đầu ra JSON
--json dành cho scripting và công cụ có cấu trúc.
Role snapshot ở JSON bao gồm refs cùng một khối stats nhỏ (dòng/ký tự/ref/tương tác) để công cụ có thể suy luận về kích thước và mật độ payload.
Các nút trạng thái và môi trường
Hữu ích cho các quy trình “làm cho trang hoạt động như X”:- Profile trình duyệt openclaw có thể chứa các phiên đã đăng nhập; hãy xem nó là nhạy cảm.
- Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Giữ Gateway/node host ở chế độ riêng tư (chỉ loopback hoặc tailnet).
- Endpoint CDP từ xa rất mạnh; hãy tunnel và bảo vệ chúng.
- Định vị địa lý:
set geo <lat> <lon> --origin "https://example.com"(hoặc--clear) - Media:
set media dark|light|no-preference|none - Múi giờ / locale:
set timezone ...,set locale ... - Thiết bị / viewport:
set device "iPhone 14"(preset thiết bị của Playwright)set viewport 1280 720
Xử lý sự cố
- Profile trình duyệt openclaw có thể chứa các phiên đã đăng nhập; hãy xem nó là nhạy cảm.
browser act kind=evaluate/openclaw browser evaluateandwait --fnexecute arbitrary JavaScript in the page context. 41. Prompt injection có thể điều hướng điều này. 42. Vô hiệu hóa bằngbrowser.evaluateEnabled=falsenếu bạn không cần.- Với ghi chú đăng nhập và chống bot (X/Twitter, v.v.), xem Đăng nhập trình duyệt + đăng bài X/Twitter.
- Giữ Gateway/node host ở chế độ riêng tư (chỉ loopback hoặc tailnet).
- Endpoint CDP từ xa rất mạnh; hãy tunnel và bảo vệ chúng.
Công cụ tác tử + cách điều khiển hoạt động
Tác tử có một công cụ cho tự động hóa trình duyệt:Công cụ tác tử + cách điều khiển hoạt động
Cách ánh xạ:browser snapshottrả về cây UI ổn định (AI hoặc ARIA).
browser snapshottrả về cây UI ổn định (AI hoặc ARIA).browser actdùng các IDreftừ snapshot để nhấp/gõ/kéo/chọn.browser screenshotchụp pixel (toàn trang hoặc phần tử).browserchấp nhận:profileđể chọn profile trình duyệt có tên (openclaw, chrome, hoặc CDP từ xa).target(sandbox|host|node) để chọn nơi trình duyệt tồn tại.- Trong phiên sandboxed,
target: "host"yêu cầuagents.defaults.sandbox.browser.allowHostControl=true. - Nếu bỏ
target: phiên sandboxed mặc địnhsandbox, phiên không sandbox mặc địnhhost. - Nếu có node có khả năng trình duyệt được kết nối, công cụ có thể tự động định tuyến tới nó trừ khi bạn ghim
target="host"hoặctarget="node".