openclaw browser
oraz wzorców skryptowych (snapshoty, referencje, oczekiwania, przepływy debugowania).
Control API (opcjonalne)
Do integracji lokalnych Gateway udostępnia małe loopback HTTP API:- Status/start/stop:
GET /,POST /start,POST /stop - Karty:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/zrzut ekranu:
GET /snapshot,POST /screenshot - Akcje:
POST /navigate,POST /act - Hooki:
POST /hooks/file-chooser,POST /hooks/dialog - Pobieranie:
POST /download,POST /wait/download - Debugowanie:
GET /console,POST /pdf - Debugowanie:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Sieć:
POST /response/body - Stan:
GET /cookies,POST /cookies/set,POST /cookies/clear - Stan:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Ustawienia:
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>.
Jeśli skonfigurowano uwierzytelnianie gateway współdzielonym sekretem, trasy HTTP przeglądarki również wymagają auth:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>albo HTTP Basic auth z tym hasłem
- To samodzielne loopback API przeglądarki nie używa nagłówków tożsamości trusted-proxy ani Tailscale Serve.
- Jeśli
gateway.auth.modema wartośćnonealbotrusted-proxy, te loopbackowe trasy przeglądarki nie dziedziczą tych trybów przenoszących tożsamość; zachowaj je tylko dla loopback.
Kontrakt błędów /act
POST /act używa ustrukturyzowanej odpowiedzi błędu dla walidacji na poziomie trasy i
awarii polityki:
code:
ACT_KIND_REQUIRED(HTTP 400): brakkindalbo jest nierozpoznane.ACT_INVALID_REQUEST(HTTP 400): ładunek akcji nie przeszedł normalizacji albo walidacji.ACT_SELECTOR_UNSUPPORTED(HTTP 400): użytoselectorz nieobsługiwanym rodzajem akcji.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(albowait --fn) jest wyłączone przez konfigurację.ACT_TARGET_ID_MISMATCH(HTTP 403): najwyższego poziomu albo wsadowetargetIdkoliduje z celem żądania.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): akcja nie jest obsługiwana dla profili existing-session.
{ "error": "<message>" } bez pola
code.
Wymaganie Playwright
Niektóre funkcje (navigate/act/AI snapshot/role snapshot, zrzuty ekranów elementów, PDF) wymagają Playwright. Jeśli Playwright nie jest zainstalowany, te endpointy zwracają czytelny błąd 501. Co nadal działa bez Playwright:- Snapshoty ARIA
- Zrzuty całej strony dla zarządzanej przeglądarki
openclaw, gdy dostępny jest WebSocket CDP per karta - Zrzuty całej strony dla profili
existing-session/ Chrome MCP - Zrzuty z referencją
existing-session(--ref) z danych wyjściowych snapshotu
navigateact- Snapshoty AI / role snapshoty
- Zrzuty ekranów elementów według selektora CSS (
--element) - pełny eksport PDF przeglądarki
--full-page; trasa zwraca fullPage is not supported for element screenshots.
Jeśli widzisz Playwright is not available in this gateway build, napraw
dołączone zależności runtime Pluginu przeglądarki tak, aby playwright-core było zainstalowane,
a następnie uruchom ponownie gateway. Dla instalacji pakietowych uruchom openclaw doctor --fix.
Dla Docker dodatkowo zainstaluj binaria przeglądarki Chromium, jak pokazano poniżej.
Instalacja Playwright w Docker
Jeśli Gateway działa w Docker, unikajnpx playwright (konflikty nadpisań npm).
Użyj zamiast tego dołączonego CLI:
PLAYWRIGHT_BROWSERS_PATH (na przykład,
/home/node/.cache/ms-playwright) i upewnij się, że /home/node jest utrwalone przez
OPENCLAW_HOME_VOLUME albo bind mount. Zobacz Docker.
Jak to działa (wewnętrznie)
Mały loopbackowy serwer sterowania akceptuje żądania HTTP i łączy się z przeglądarkami opartymi na Chromium przez CDP. Zaawansowane akcje (click/type/snapshot/PDF) przechodzą przez Playwright na CDP; gdy Playwright nie ma, dostępne są tylko operacje niezależne od Playwright. Agent widzi jeden stabilny interfejs, podczas gdy lokalne/zdalne przeglądarki i profile mogą się swobodnie zmieniać pod spodem.Szybka dokumentacja CLI
Wszystkie polecenia akceptują--browser-profile <name> do wskazania konkretnego profilu oraz --json dla danych wyjściowych czytelnych maszynowo.
Podstawy: status, karty, open/focus/close
Podstawy: status, karty, open/focus/close
Inspekcja: screenshot, snapshot, console, errors, requests
Inspekcja: screenshot, snapshot, console, errors, requests
Akcje: navigate, click, type, drag, wait, evaluate
Akcje: navigate, click, type, drag, wait, evaluate
Stan: cookies, storage, offline, headers, geo, device
Stan: cookies, storage, offline, headers, geo, device
uploadidialogto wywołania uzbrajające; uruchom je przed kliknięciem/naciśnięciem, które wywoła chooser/dialog.click/type/itd. wymagająrefzesnapshot(numeryczne12albo referencja rolie12). Selektory CSS są celowo nieobsługiwane dla akcji.- Ścieżki download, trace i upload są ograniczone do katalogów tymczasowych OpenClaw:
/tmp/openclaw{,/downloads,/uploads}(fallback:${os.tmpdir()}/openclaw/...). uploadmoże także bezpośrednio ustawiać inputy plików przez--input-refalbo--element.
--format ai(domyślnie z Playwright): AI snapshot z referencjami numerycznymi (aria-ref="<n>").--format aria: drzewo dostępności, bez referencji; tylko do inspekcji.--efficient(albo--mode efficient): preset kompaktowego role snapshot. Ustawbrowser.snapshotDefaults.mode: "efficient", aby był to tryb domyślny (zobacz Gateway configuration).--interactive,--compact,--depth,--selectorwymuszają role snapshot z referencjamiref=e12.--frame "<iframe>"ogranicza role snapshoty do iframe.--labelsdodaje zrzut ekranu tylko viewportu z nałożonymi etykietami referencji (wypisujeMEDIA:<path>).
Snapshoty i referencje
OpenClaw obsługuje dwa style „snapshotów”:-
AI snapshot (referencje numeryczne):
openclaw browser snapshot(domyślnie;--format ai)- Dane wyjściowe: tekstowy snapshot zawierający referencje numeryczne.
- Akcje:
openclaw browser click 12,openclaw browser type 23 "hello". - Wewnętrznie referencja jest rozwiązywana przez
aria-refPlaywright.
-
Role snapshot (referencje ról jak
e12):openclaw browser snapshot --interactive(albo--compact,--depth,--selector,--frame)- Dane wyjściowe: lista/drzewo oparte na rolach z
[ref=e12](i opcjonalnie[nth=1]). - Akcje:
openclaw browser click e12,openclaw browser highlight e12. - Wewnętrznie referencja jest rozwiązywana przez
getByRole(...)(plusnth()dla duplikatów). - Dodaj
--labels, aby dołączyć zrzut viewportu z nałożonymi etykietamie12.
- Dane wyjściowe: lista/drzewo oparte na rolach z
- Referencje nie są stabilne między nawigacjami; jeśli coś się nie powiedzie, ponownie uruchom
snapshoti użyj świeżej referencji. - Jeśli role snapshot został wykonany z
--frame, referencje ról są ograniczone do tego iframe do następnego role snapshotu.
Ulepszone oczekiwanie
Możesz czekać na więcej niż tylko czas/tekst:- Czekaj na URL (obsługiwane globy Playwright):
openclaw browser wait --url "**/dash"
- Czekaj na stan ładowania:
openclaw browser wait --load networkidle
- Czekaj na predykat JS:
openclaw browser wait --fn "window.ready===true"
- Czekaj, aż selektor stanie się widoczny:
openclaw browser wait "#main"
Przepływy debugowania
Gdy akcja kończy się błędem (np. „not visible”, „strict mode violation”, „covered”):openclaw browser snapshot --interactive- Użyj
click <ref>/type <ref>(w trybie interactive preferuj referencje ról) - Jeśli nadal nie działa:
openclaw browser highlight <ref>, aby zobaczyć, co Playwright targetuje - Jeśli strona zachowuje się dziwnie:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Do głębokiego debugowania nagraj trace:
openclaw browser trace start- odtwórz problem
openclaw browser trace stop(wypisujeTRACE:<path>)
Wyjście JSON
--json służy do skryptów i narzędzi uporządkowanych.
Przykłady:
refs oraz mały blok stats (wiersze/znaki/refy/interactive), dzięki czemu narzędzia mogą analizować rozmiar i gęstość ładunku.
Pokrętła stanu i środowiska
Są przydatne dla przepływów typu „spraw, żeby strona zachowywała się jak X”:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Nagłówki:
set headers --headers-json '{"X-Debug":"1"}'(starszeset headers --json '{"X-Debug":"1"}'nadal jest obsługiwane) - HTTP Basic auth:
set credentials user pass(albo--clear) - Geolokalizacja:
set geo <lat> <lon> --origin "https://example.com"(albo--clear) - Media:
set media dark|light|no-preference|none - Strefa czasowa / locale:
set timezone ...,set locale ... - Urządzenie / viewport:
set device "iPhone 14"(presety urządzeń Playwright)set viewport 1280 720
Bezpieczeństwo i prywatność
- Profil przeglądarki openclaw może zawierać zalogowane sesje; traktuj go jako wrażliwy.
browser act kind=evaluate/openclaw browser evaluateorazwait --fnwykonują dowolny JavaScript w kontekście strony. Prompt injection może tym sterować. Wyłącz to przezbrowser.evaluateEnabled=false, jeśli tego nie potrzebujesz.- Informacje o logowaniach i uwagach anty-bot (X/Twitter itd.) znajdziesz w Browser login + X/Twitter posting.
- Utrzymuj host Gateway/Node jako prywatny (tylko loopback albo tailnet).
- Zdalne endpointy CDP mają duże możliwości; tuneluj je i chroń.
Powiązane
- Browser — przegląd, konfiguracja, profile, bezpieczeństwo
- Browser login — logowanie do stron
- Browser Linux troubleshooting
- Browser WSL2 troubleshooting