Browser (zarządzany przez openclaw)
OpenClaw może uruchamiać dedykowany profil Chrome/Brave/Edge/Chromium, którym steruje agent. Jest on odseparowany od Twojej osobistej przeglądarki i zarządzany przez małą lokalną usługę sterowania wewnątrz Gateway (tylko loopback). Perspektywa dla początkujących:- Traktuj to jak oddzielną przeglądarkę tylko dla agenta.
- Profil
openclawnie dotyka Twojego osobistego profilu przeglądarki. - Agent może otwierać karty, czytać strony, klikać i wpisywać tekst w bezpiecznym obszarze.
- Wbudowany profil
userpodłącza się do Twojej prawdziwej zalogowanej sesji Chrome przez Chrome MCP.
Co otrzymujesz
- Oddzielny profil przeglądarki o nazwie openclaw (domyślnie z pomarańczowym akcentem).
- Deterministyczne sterowanie kartami (list/open/focus/close).
- Akcje agenta (click/type/drag/select), snapshoty, zrzuty ekranu, PDF-y.
- Opcjonalną obsługę wielu profili (
openclaw,work,remote, …).
Szybki start
openclaw browser, albo agent mówi, że narzędzie browser
jest niedostępne, przejdź do Missing browser command or tool.
Sterowanie pluginem
Domyślne narzędziebrowser jest teraz dołączonym pluginem, który jest domyślnie
włączony. Oznacza to, że możesz go wyłączyć lub zastąpić bez usuwania reszty
systemu pluginów OpenClaw:
browser. Domyślne działanie Browser wymaga obu warunków:
plugins.entries.browser.enablednie jest wyłączonebrowser.enabled=true
openclaw browser),
metoda gateway (browser.request), narzędzie agenta i domyślna usługa sterowania
Browser znikną razem. Twoja konfiguracja browser.* pozostaje nienaruszona, aby
mogła zostać ponownie użyta przez plugin zastępczy.
Dołączony plugin Browser jest teraz także właścicielem implementacji runtime Browser.
Rdzeń zachowuje tylko współdzielone helpery Plugin SDK oraz re-eksporty zgodności dla
starszych wewnętrznych ścieżek importu. W praktyce usunięcie lub zastąpienie pakietu pluginu Browser
usuwa zestaw funkcji Browser zamiast pozostawiać drugi runtime należący do rdzenia.
Zmiany konfiguracji Browser nadal wymagają restartu Gateway, aby dołączony plugin
mógł ponownie zarejestrować swoją usługę Browser z nowymi ustawieniami.
Brak polecenia browser lub narzędzia
Jeśliopenclaw browser nagle staje się nieznanym poleceniem po aktualizacji albo
agent zgłasza brak narzędzia browser, najczęstszą przyczyną jest restrykcyjna
lista plugins.allow, która nie zawiera browser.
Przykład błędnej konfiguracji:
browser do listy dozwolonych pluginów:
browser.enabled=truesamo w sobie nie wystarczy, gdy ustawionoplugins.allow.plugins.entries.browser.enabled=truetakże samo w sobie nie wystarczy, gdy ustawionoplugins.allow.tools.alsoAllow: ["browser"]nie ładuje dołączonego pluginu Browser. Zmienia jedynie politykę narzędzi po tym, jak plugin został już załadowany.- Jeśli nie potrzebujesz restrykcyjnej listy dozwolonych pluginów, usunięcie
plugins.allowtakże przywraca domyślne działanie dołączonego Browser.
openclaw browserjest nieznanym poleceniem.- brakuje
browser.request. - agent zgłasza, że narzędzie browser jest niedostępne lub brakuje go.
Profile: openclaw kontra user
openclaw: zarządzana, izolowana przeglądarka (nie wymaga rozszerzenia).user: wbudowany profil podłączania Chrome MCP do Twojej prawdziwej zalogowanej sesji Chrome.
- Domyślnie: używaj izolowanej przeglądarki
openclaw. - Preferuj
profile="user", gdy znaczenie mają istniejące zalogowane sesje i użytkownik siedzi przy komputerze, aby kliknąć/zatwierdzić ewentualny prompt podłączenia. profileto jawne nadpisanie, gdy chcesz określony tryb przeglądarki.
browser.defaultProfile: "openclaw", jeśli domyślnie chcesz tryb zarządzany.
Konfiguracja
Ustawienia Browser znajdują się w~/.openclaw/openclaw.json.
- Usługa sterowania Browser wiąże się z loopback na porcie wyprowadzonym z
gateway.port(domyślnie:18791, czyli gateway + 2). - Jeśli nadpiszesz port Gateway (
gateway.portlubOPENCLAW_GATEWAY_PORT), wyprowadzone porty Browser przesuwają się, aby pozostać w tej samej „rodzinie”. cdpUrldomyślnie wskazuje zarządzany lokalny port CDP, jeśli nie jest ustawiony.remoteCdpTimeoutMsdotyczy kontroli osiągalności zdalnego (nie-loopback) CDP.remoteCdpHandshakeTimeoutMsdotyczy kontroli osiągalności handshake WebSocket zdalnego CDP.- Nawigacja Browser/otwieranie kart jest chronione przed SSRF przed nawigacją i ponownie sprawdzane w trybie best-effort na końcowym URL
http(s)po nawigacji. - W ścisłym trybie SSRF sprawdzane są także wykrywanie/sondy zdalnych endpointów CDP (
cdpUrl, w tym lookupi/json/version). browser.ssrfPolicy.dangerouslyAllowPrivateNetworkdomyślnie ma wartośćtrue(model zaufanej sieci). Ustawfalse, aby wymusić ścisłe przeglądanie wyłącznie publiczne.browser.ssrfPolicy.allowPrivateNetworkpozostaje obsługiwane jako starszy alias zgodności.attachOnly: trueoznacza „nigdy nie uruchamiaj lokalnej przeglądarki; tylko podłączaj się, jeśli już działa”.colori per-profilcolorzabarwiają UI Browser, aby było widać, który profil jest aktywny.- Profil domyślny to
openclaw(samodzielna przeglądarka zarządzana przez OpenClaw). UżyjdefaultProfile: "user", aby przejść do zalogowanej przeglądarki użytkownika. - Kolejność automatycznego wykrywania: domyślna systemowa przeglądarka, jeśli jest oparta na Chromium; w przeciwnym razie Chrome → Brave → Edge → Chromium → Chrome Canary.
- Lokalne profile
openclawautomatycznie przypisującdpPort/cdpUrl— ustawiaj je tylko dla zdalnego CDP. driver: "existing-session"używa Chrome DevTools MCP zamiast surowego CDP. Nie ustawiajcdpUrldla tego sterownika.- Ustaw
browser.profiles.<name>.userDataDir, gdy profil existing-session ma podłączać się do niestandardowego profilu użytkownika Chromium, takiego jak Brave lub Edge.
Używanie Brave (lub innej przeglądarki opartej na Chromium)
Jeśli Twoją domyślną systemową przeglądarką jest przeglądarka oparta na Chromium (Chrome/Brave/Edge itd.), OpenClaw użyje jej automatycznie. Ustawbrowser.executablePath, aby nadpisać
autowykrywanie:
Przykład CLI:
Sterowanie lokalne a zdalne
- Sterowanie lokalne (domyślne): Gateway uruchamia usługę sterowania loopback i może uruchomić lokalną przeglądarkę.
- Sterowanie zdalne (host węzła): uruchom hosta węzła na komputerze, który ma przeglądarkę; Gateway będzie proxy’ować do niego akcje Browser.
- Zdalne CDP: ustaw
browser.profiles.<name>.cdpUrl(lubbrowser.cdpUrl), aby podłączyć się do zdalnej przeglądarki opartej na Chromium. W takim przypadku OpenClaw nie uruchomi lokalnej przeglądarki.
- lokalne profile zarządzane:
openclaw browser stopzatrzymuje proces przeglądarki, który uruchomił OpenClaw - profile attach-only i zdalnego CDP:
openclaw browser stopzamyka aktywną sesję sterowania i usuwa nadpisania emulacji Playwright/CDP (viewport, schemat kolorów, locale, timezone, tryb offline i podobny stan), mimo że OpenClaw nie uruchomił żadnego procesu Browser
- tokeny query (np.
https://provider.example?token=<token>) - auth HTTP Basic (np.
https://user:pass@provider.example)
/json/* i przy łączeniu
z WebSocket CDP. Preferuj zmienne środowiskowe lub menedżery sekretów dla
tokenów zamiast commitować je do plików konfiguracji.
Proxy Browser dla węzłów (domyślnie zero konfiguracji)
Jeśli uruchamiasz hosta węzła na komputerze, który ma Browser, OpenClaw może automatycznie kierować wywołania narzędzia Browser do tego węzła bez żadnej dodatkowej konfiguracji Browser. To domyślna ścieżka dla zdalnych gateway. Uwagi:- Host węzła udostępnia swoją lokalną usługę sterowania Browser przez polecenie proxy.
- Profile pochodzą z własnej konfiguracji węzła
browser.profiles(takiej samej jak lokalnie). nodeHost.browserProxy.allowProfilesjest opcjonalne. Pozostaw puste dla starszego/domyslnego zachowania: wszystkie skonfigurowane profile pozostają osiągalne przez proxy, w tym trasy tworzenia/usuwania profili.- Jeśli ustawisz
nodeHost.browserProxy.allowProfiles, OpenClaw potraktuje to jako granicę minimalnych uprawnień: można kierować tylko do profili z listy dozwolonych, a trwałe trasy tworzenia/usuwania profili są blokowane na powierzchni proxy. - Wyłącz, jeśli tego nie chcesz:
- Na węźle:
nodeHost.browserProxy.enabled=false - Na gateway:
gateway.nodes.browser.mode="off"
- Na węźle:
Browserless (hostowany zdalny CDP)
Browserless to hostowana usługa Chromium, która udostępnia URL-e połączeń CDP przez HTTPS i WebSocket. OpenClaw może używać obu form, ale dla zdalnego profilu Browser najprostszą opcją jest bezpośredni URL WebSocket z dokumentacji połączeń Browserless. Przykład:- Zastąp
<BROWSERLESS_API_KEY>swoim prawdziwym tokenem Browserless. - Wybierz endpoint regionu odpowiadający Twojemu kontu Browserless (zobacz ich dokumentację).
- Jeśli Browserless daje Ci bazowy URL HTTPS, możesz albo przekształcić go do
wss://dla bezpośredniego połączenia CDP, albo pozostawić URL HTTPS i pozwolić OpenClaw wykryć/json/version.
Dostawcy bezpośredniego WebSocket CDP
Niektóre hostowane usługi Browser udostępniają bezpośredni endpoint WebSocket zamiast standardowego wykrywania CDP opartego na HTTP (/json/version). OpenClaw obsługuje oba warianty:
- Endpointy HTTP(S) — OpenClaw wywołuje
/json/version, aby wykryć URL WebSocket debuggera, a następnie się łączy. - Endpointy WebSocket (
ws:///wss://) — OpenClaw łączy się bezpośrednio, pomijając/json/version. Użyj tego dla usług takich jak Browserless, Browserbase albo dowolnego dostawcy, który przekazuje Ci URL WebSocket.
Browserbase
Browserbase to chmurowa platforma do uruchamiania bezgłowych przeglądarek z wbudowanym rozwiązywaniem CAPTCHA, trybem stealth i proxy rezydencyjnymi.- Zarejestruj się i skopiuj swój API Key z dashboardu Overview.
- Zastąp
<BROWSERBASE_API_KEY>swoim prawdziwym kluczem API Browserbase. - Browserbase automatycznie tworzy sesję Browser przy połączeniu WebSocket, więc nie jest potrzebny ręczny krok tworzenia sesji.
- Darmowa warstwa pozwala na jedną sesję współbieżną i jedną godzinę Browser miesięcznie. Limity płatnych planów znajdziesz w cenniku.
- Pełne API reference, przewodniki SDK i przykłady integracji znajdziesz w dokumentacji Browserbase.
Bezpieczeństwo
Kluczowe założenia:- Sterowanie Browser działa tylko na loopback; dostęp przechodzi przez auth Gateway lub parowanie węzłów.
- Samodzielne loopback HTTP API Browser używa wyłącznie auth współdzielonym sekretem:
bearer auth tokenem gateway,
x-openclaw-passwordalbo HTTP Basic auth ze skonfigurowanym hasłem gateway. - Nagłówki tożsamości Tailscale Serve i
gateway.auth.mode: "trusted-proxy"nie uwierzytelniają tego samodzielnego loopback API Browser. - Jeśli sterowanie Browser jest włączone i nie skonfigurowano auth współdzielonym sekretem, OpenClaw
automatycznie generuje
gateway.auth.tokenprzy starcie i utrwala go w konfiguracji. - OpenClaw nie generuje automatycznie tego tokena, gdy
gateway.auth.modema już wartośćpassword,nonelubtrusted-proxy. - Utrzymuj Gateway i wszystkie hosty węzłów w prywatnej sieci (Tailscale); unikaj wystawiania publicznego.
- Traktuj zdalne URL-e/tokeny CDP jako sekrety; preferuj zmienne env albo menedżer sekretów.
- Jeśli to możliwe, preferuj szyfrowane endpointy (HTTPS lub WSS) i tokeny krótkotrwałe.
- Unikaj osadzania długowiecznych tokenów bezpośrednio w plikach konfiguracji.
Profile (wiele przeglądarek)
OpenClaw obsługuje wiele nazwanych profili (konfiguracji routingu). Profile mogą być:- zarządzane przez openclaw: dedykowana przeglądarka oparta na Chromium z własnym katalogiem danych użytkownika + portem CDP
- zdalne: jawny URL CDP (przeglądarka oparta na Chromium uruchomiona gdzie indziej)
- istniejąca sesja: Twój istniejący profil Chrome przez automatyczne połączenie Chrome DevTools MCP
- Profil
openclawjest tworzony automatycznie, jeśli go brakuje. - Profil
userjest wbudowany dla podłączania existing-session Chrome MCP. - Profile existing-session poza
usersą opt-in; twórz je przy użyciu--driver existing-session. - Lokalne porty CDP są domyślnie przydzielane z zakresu 18800–18899.
- Usunięcie profilu przenosi jego lokalny katalog danych do Kosza.
?profile=<name>; CLI używa --browser-profile.
Existing-session przez Chrome DevTools MCP
OpenClaw może także podłączyć się do uruchomionego profilu przeglądarki opartej na Chromium przez oficjalny serwer Chrome DevTools MCP. Pozwala to ponownie używać kart i stanu logowania już otwartych w tym profilu Browser. Oficjalne tło i dokumentacja konfiguracji: Wbudowany profil:user
- Wbudowany profil
userużywa automatycznego połączenia Chrome MCP, które kieruje do domyślnego lokalnego profilu Google Chrome.
userDataDir dla Brave, Edge, Chromium lub niestandardowego profilu Chrome:
- Otwórz stronę inspect tej przeglądarki dla zdalnego debugowania.
- Włącz zdalne debugowanie.
- Utrzymuj Browser uruchomioną i zatwierdź prompt połączenia, gdy OpenClaw się podłączy.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statuspokazujedriver: existing-sessionstatuspokazujetransport: chrome-mcpstatuspokazujerunning: truetabswyświetla już otwarte karty Browsersnapshotzwraca refs z wybranej aktywnej karty
- docelowa przeglądarka oparta na Chromium ma wersję
144+ - zdalne debugowanie jest włączone na stronie inspect tej przeglądarki
- Browser wyświetliła prompt zgody na podłączenie i został on zaakceptowany
openclaw doctormigruje stare konfiguracje Browser oparte na rozszerzeniach i sprawdza, czy Chrome jest lokalnie zainstalowane dla domyślnych profili auto-connect, ale nie może włączyć po Twojej stronie zdalnego debugowania w Browser
- Używaj
profile="user", gdy potrzebujesz zalogowanego stanu Browser użytkownika. - Jeśli używasz niestandardowego profilu existing-session, przekaż jego jawną nazwę.
- Wybieraj ten tryb tylko wtedy, gdy użytkownik siedzi przy komputerze, aby zatwierdzić prompt podłączenia.
- Gateway lub host węzła może uruchomić
npx chrome-devtools-mcp@latest --autoConnect
- Ta ścieżka jest bardziej ryzykowna niż izolowany profil
openclaw, ponieważ może działać wewnątrz Twojej zalogowanej sesji Browser. - OpenClaw nie uruchamia Browser dla tego sterownika; podłącza się tylko do istniejącej sesji.
- OpenClaw używa tu oficjalnego przepływu Chrome DevTools MCP
--autoConnect. Jeśli ustawionouserDataDir, OpenClaw przekaże je dalej, aby wskazać ten jawny katalog danych użytkownika Chromium. - Zrzuty ekranu existing-session obsługują przechwytywanie całych stron i przechwytywanie elementów
--refze snapshotów, ale nie selektory CSS--element. - Zrzuty ekranu stron existing-session działają bez Playwright przez Chrome MCP.
Oparte na ref zrzuty ekranów elementów (
--ref) także tam działają, ale--full-pagenie może być łączone z--refani--element. - Akcje existing-session są nadal bardziej ograniczone niż ścieżka
zarządzanej Browser:
click,type,hover,scrollIntoView,dragiselectwymagają refów snapshotu zamiast selektorów CSSclickobsługuje tylko lewy przycisk (bez nadpisywania przycisku i modyfikatorów)typenie obsługujeslowly=true; używajfillalbopresspressnie obsługujedelayMshover,scrollIntoView,drag,select,fillievaluatenie obsługują nadpisań timeout per wywołanieselectobecnie obsługuje tylko pojedynczą wartość
- Existing-session
wait --urlobsługuje wzorce exact, substring i glob tak jak inne sterowniki Browser.wait --load networkidlenie jest jeszcze obsługiwane. - Hooki upload existing-session wymagają
reflubinputRef, obsługują jeden plik na raz i nie obsługują kierowania doelementprzez CSS. - Hooki dialog existing-session nie obsługują nadpisań timeout.
- Niektóre funkcje nadal wymagają ścieżki zarządzanej Browser, w tym batch
actions, eksport PDF, przechwytywanie pobrań i
responsebody. - Existing-session jest lokalne względem hosta. Jeśli Chrome znajduje się na innym komputerze lub w innej przestrzeni nazw sieci, użyj zdalnego CDP albo hosta węzła.
Gwarancje izolacji
- Dedykowany katalog danych użytkownika: nigdy nie dotyka Twojego osobistego profilu Browser.
- Dedykowane porty: unika
9222, aby zapobiec kolizjom z przepływami deweloperskimi. - Deterministyczne sterowanie kartami: karty są wskazywane przez
targetId, a nie „ostatnia karta”.
Wybór Browser
Przy lokalnym uruchamianiu OpenClaw wybiera pierwszą dostępną:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Platformy:
- macOS: sprawdza
/Applicationsi~/Applications. - Linux: szuka
google-chrome,brave,microsoft-edge,chromiumitd. - Windows: sprawdza typowe lokalizacje instalacji.
API sterowania (opcjonalne)
Tylko dla 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 - Pobrania:
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 auth gateway współdzielonym sekretem, trasy HTTP Browser także wymagają auth:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>albo HTTP Basic auth z tym hasłem
- To samodzielne loopback API Browser nie korzysta z trusted-proxy ani nagłówków tożsamości Tailscale Serve.
- Jeśli
gateway.auth.modema wartośćnonealbotrusted-proxy, te loopbackowe trasy Browser nie dziedziczą tych trybów opartych na tożsamości; utrzymuj je tylko na loopback.
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 ekranów całych stron dla zarządzanej przeglądarki
openclaw, gdy dostępny jest WebSocket CDP per karta - zrzuty ekranów całych stron dla profili
existing-session/ Chrome MCP - zrzuty ekranów
--refdla existing-session na podstawie wyjścia snapshotu
navigateact- snapshoty AI / snapshoty ról
- zrzuty ekranów elementów przez selektory CSS (
--element) - pełny eksport PDF Browser
--full-page; trasa zwraca fullPage is not supported for element screenshots.
Jeśli widzisz Playwright is not available in this gateway build, zainstaluj pełny
pakiet Playwright (nie playwright-core) i uruchom ponownie gateway albo ponownie zainstaluj
OpenClaw z obsługą Browser.
Instalacja Playwright w Dockerze
Jeśli Twój Gateway działa w Dockerze, unikajnpx playwright (konflikty z nadpisaniami npm).
Użyj dołączonego CLI:
PLAYWRIGHT_BROWSERS_PATH (na przykład,
/home/node/.cache/ms-playwright) i upewnij się, że /home/node jest utrwalane przez
OPENCLAW_HOME_VOLUME albo bind mount. Zobacz Docker.
Jak to działa (wewnętrznie)
Przepływ na wysokim poziomie:- Mały serwer sterowania akceptuje żądania HTTP.
- Łączy się z przeglądarkami opartymi na Chromium (Chrome/Brave/Edge/Chromium) przez CDP.
- Dla bardziej zaawansowanych akcji (click/type/snapshot/PDF) używa Playwright na warstwie CDP.
- Gdy brakuje Playwright, dostępne są tylko operacje niezależne od Playwright.
Krótka dokumentacja CLI
Wszystkie polecenia akceptują--browser-profile <name>, aby wskazać konkretny profil.
Wszystkie polecenia akceptują też --json dla maszynowo czytelnego wyjścia (stabilne ładunki).
Podstawy:
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 error
- Dla profili attach-only i zdalnego CDP
openclaw browser stopnadal jest poprawnym poleceniem czyszczenia po testach. Zamknie aktywną sesję sterowania i wyczyści tymczasowe nadpisania emulacji zamiast zabijać właściwą przeglądarkę. openclaw 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 --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"
uploadidialogto wywołania uzbrajające; uruchamiaj je przed kliknięciem/naciśnięciem, które wyzwala wybór pliku/dialog.- Ścieżki wyjściowe pobrań i śladów są ograniczone do katalogów tymczasowych OpenClaw:
- ślady:
/tmp/openclaw(fallback:${os.tmpdir()}/openclaw) - pobrania:
/tmp/openclaw/downloads(fallback:${os.tmpdir()}/openclaw/downloads)
- ślady:
- Ścieżki uploadów są ograniczone do katalogu tymczasowego uploadów OpenClaw:
- uploady:
/tmp/openclaw/uploads(fallback:${os.tmpdir()}/openclaw/uploads)
- uploady:
uploadmoże także ustawiać wejścia plików bezpośrednio przez--input-reflub--element.snapshot:--format ai(domyślnie, gdy Playwright jest zainstalowany): zwraca snapshot AI z liczbowymi refami (aria-ref="<n>").--format aria: zwraca drzewo dostępności (bez refów; tylko do inspekcji).--efficient(lub--mode efficient): kompaktowy preset snapshotu ról (interactive + compact + depth + niższe maxChars).- Domyślna konfiguracja (tylko narzędzie/CLI): ustaw
browser.snapshotDefaults.mode: "efficient", aby używać wydajnych snapshotów, gdy wywołujący nie przekazuje trybu (zobacz Gateway configuration). - Opcje snapshotu ról (
--interactive,--compact,--depth,--selector) wymuszają snapshot oparty na rolach z refami takimi jakref=e12. --frame "<iframe selector>"ogranicza snapshoty ról do iframe (łączy się z refami ról takimi jake12).--interactivewypisuje płaską, łatwą do wyboru listę elementów interaktywnych (najlepszą do wykonywania akcji).--labelsdodaje zrzut ekranu tylko aktualnego viewportu z nałożonymi etykietami refów (wypisujeMEDIA:<path>).
click/type/itd. wymagająrefzesnapshot(albo liczbowego12, albo refu rolie12). Selektory CSS są celowo nieobsługiwane dla akcji.
Snapshoty i refy
OpenClaw obsługuje dwa style „snapshotów”:-
AI snapshot (liczbowe refy):
openclaw browser snapshot(domyślnie;--format ai)- Wyjście: tekstowy snapshot zawierający liczbowe refy.
- Akcje:
openclaw browser click 12,openclaw browser type 23 "hello". - Wewnętrznie ref jest rozwiązywany przez
aria-refPlaywright.
-
Snapshot ról (refy ról jak
e12):openclaw browser snapshot --interactive(albo--compact,--depth,--selector,--frame)- Wyjście: lista/drzewo oparte na rolach z
[ref=e12](oraz opcjonalnie[nth=1]). - Akcje:
openclaw browser click e12,openclaw browser highlight e12. - Wewnętrznie ref jest rozwiązywany przez
getByRole(...)(plusnth()dla duplikatów). - Dodaj
--labels, aby dołączyć zrzut ekranu viewportu z nałożonymi etykietamie12.
- Wyjście: lista/drzewo oparte na rolach z
- Refy nie są stabilne między nawigacjami; jeśli coś się nie powiedzie, uruchom ponownie
snapshoti użyj świeżego refu. - Jeśli snapshot ról został wykonany z
--frame, refy ról są ograniczone do tego iframe do czasu następnego snapshotu ról.
Rozszerzenia wait
Możesz czekać na coś więcej niż tylko czas/tekst:- Czekanie na URL (obsługiwane globy przez Playwright):
openclaw browser wait --url "**/dash"
- Czekanie na stan ładowania:
openclaw browser wait --load networkidle
- Czekanie na predykat JS:
openclaw browser wait --fn "window.ready===true"
- Czekanie, aż selektor stanie się widoczny:
openclaw browser wait "#main"
Przepływy debugowania
Gdy akcja się nie powiedzie (np. „not visible”, „strict mode violation”, „covered”):openclaw browser snapshot --interactive- Użyj
click <ref>/type <ref>(preferuj refy ról w trybie interactive) - Jeśli nadal się nie powiedzie:
openclaw browser highlight <ref>, aby zobaczyć, w co celuje Playwright - Jeśli strona zachowuje się dziwnie:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Do głębokiego debugowania: nagraj ślad:
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 strukturalnych.
Przykłady:
refs oraz mały blok stats (lines/chars/refs/interactive), dzięki czemu narzędzia mogą analizować rozmiar i gęstość ładunku.
Ustawienia stanu i środowiska
Są przydatne w przepływach 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 - Headers:
set headers --headers-json '{"X-Debug":"1"}'(starszeset headers --json '{"X-Debug":"1"}'nadal jest obsługiwane) - Auth HTTP Basic:
set credentials user pass(lub--clear) - Geolokalizacja:
set geo <lat> <lon> --origin "https://example.com"(lub--clear) - Media:
set media dark|light|no-preference|none - Timezone / locale:
set timezone ...,set locale ... - Device / viewport:
set device "iPhone 14"(presety urządzeń Playwright)set viewport 1280 720
Bezpieczeństwo i prywatność
- Profil Browser 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.- W przypadku logowania i uwag dotyczących antybotów (X/Twitter itd.) zobacz Browser login + X/Twitter posting.
- Utrzymuj Gateway/hosta węzła jako prywatne (tylko loopback lub tailnet).
- Endpointy zdalnego CDP są potężne; tuneluj je i chroń.
Rozwiązywanie problemów
W przypadku problemów specyficznych dla Linuxa (szczególnie snap Chromium) zobacz Browser troubleshooting. Dla konfiguracji split-host WSL2 Gateway + Windows Chrome zobacz WSL2 + Windows + remote Chrome CDP troubleshooting.Narzędzia agenta + jak działa sterowanie
Agent otrzymuje jedno narzędzie do automatyzacji Browser:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotzwraca stabilne drzewo UI (AI lub ARIA).browser actużywa identyfikatorówrefze snapshotów do click/type/drag/select.browser screenshotprzechwytuje piksele (całą stronę albo element).browserakceptuje:profile, aby wybrać nazwany profil Browser (openclaw,chromealbo zdalny CDP).target(sandbox|host|node), aby wybrać miejsce działania Browser.- W sesjach sandboxowanych
target: "host"wymagaagents.defaults.sandbox.browser.allowHostControl=true. - Jeśli pominięto
target: sesje sandboxowane domyślnie używająsandbox, a sesje niesandboxowane —host. - Jeśli połączony jest węzeł obsługujący Browser, narzędzie może automatycznie kierować ruch do niego, chyba że przypniesz
target="host"lubtarget="node".
Powiązane
- Tools Overview — wszystkie dostępne narzędzia agenta
- Sandboxing — sterowanie Browser w środowiskach sandboxowanych
- Security — ryzyka sterowania Browser i utwardzanie