openclaw browser
oraz wzorców skryptowania (migawki, referencje, oczekiwania, przepływy debugowania).
Kontrolny interfejs API (opcjonalny)
Tylko na potrzeby lokalnych integracji Gateway udostępnia niewielki interfejs HTTP API przez loopback. Ten samodzielny serwer jest opcjonalny — ustaw zmienną środowiskowąOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 w środowisku usługi Gateway
i zrestartuj Gateway, zanim punkty końcowe HTTP staną się dostępne. Bez
tej zmiennej środowisko wykonawcze sterowania przeglądarką nadal działa przez CLI i
narzędzia agenta, ale nic nie nasłuchuje na kontrolnym porcie loopback.
- Stan/uruchomienie/zatrzymanie:
GET /,POST /start,POST /stop - Karty:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Migawka/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 - Uprawnienia:
POST /permissions/grant - 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>. POST /start?headless=true żąda
jednorazowego uruchomienia bez interfejsu graficznego dla lokalnych zarządzanych profili bez zmieniania utrwalonej
konfiguracji przeglądarki; profile attach-only, zdalnego CDP i istniejącej sesji odrzucają
to nadpisanie, ponieważ OpenClaw nie uruchamia tych procesów przeglądarki.
Dla punktów końcowych kart targetId jest nazwą pola zgodności. Preferuj przekazywanie
suggestedTargetId z GET /tabs lub POST /tabs/open; etykiety i uchwyty tabId
takie jak t1 też są akceptowane. Surowe identyfikatory celu CDP i unikatowe surowe
prefiksy identyfikatorów celu nadal działają, ale są ulotnymi uchwytami diagnostycznymi.
Jeśli skonfigurowano uwierzytelnianie Gateway ze współdzielonym sekretem, trasy HTTP przeglądarki również wymagają uwierzytelnienia:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>lub uwierzytelnianie HTTP Basic z tym hasłem
- Ten samodzielny interfejs API przeglądarki przez loopback nie używa nagłówków tożsamości trusted-proxy ani Tailscale Serve.
- Jeśli
gateway.auth.modetononelubtrusted-proxy, te trasy przeglądarki przez loopback nie dziedziczą tych trybów niosących tożsamość; pozostaw je wyłącznie na loopback.
Kontrakt błędów /act
POST /act używa ustrukturyzowanej odpowiedzi błędu dla walidacji na poziomie trasy i
niepowodzeń zasad:
code:
ACT_KIND_REQUIRED(HTTP 400): brakujekindalbo jest nierozpoznane.ACT_INVALID_REQUEST(HTTP 400): ładunek akcji nie przeszedł normalizacji lub walidacji.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorzostał użyty z nieobsługiwanym rodzajem akcji.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(lubwait --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 istniejącej sesji.
{ "error": "<message>" } bez pola
code.
Wymaganie Playwright
Niektóre funkcje (navigate/act/migawka AI/migawka roli, zrzuty ekranu elementów, PDF) wymagają Playwright. Jeśli Playwright nie jest zainstalowany, te punkty końcowe zwracają czytelny błąd 501. Co nadal działa bez Playwright:- Migawki ARIA
- Migawki dostępności w stylu ról (
--interactive,--compact,--depth,--efficient), gdy dostępny jest WebSocket CDP dla danej karty. To mechanizm awaryjny do inspekcji i odkrywania referencji; Playwright pozostaje podstawowym silnikiem akcji. - Zrzuty ekranu strony dla zarządzanej przeglądarki
openclaw, gdy dostępny jest WebSocket CDP dla danej karty - Zrzuty ekranu strony dla profili
existing-session/ Chrome MCP - Zrzuty ekranu oparte na referencjach
existing-session(--ref) z wyjścia migawki
navigateact- Migawki AI zależne od natywnego formatu migawek AI Playwright
- Zrzuty ekranu elementów przez selektor CSS (
--element) - pełny eksport przeglądarki do PDF
--full-page; trasa zwraca fullPage is not supported for element screenshots.
Jeśli widzisz Playwright is not available in this gateway build, spakowany
Gateway nie ma podstawowej zależności środowiska wykonawczego przeglądarki. Zainstaluj ponownie lub zaktualizuj
OpenClaw, a następnie zrestartuj Gateway. Dla Docker zainstaluj też binaria przeglądarki
Chromium zgodnie z przykładem poniżej.
Instalacja Docker Playwright
Jeśli Twój Gateway działa w Docker, unikajnpx playwright (konflikty nadpisań npm).
Dla niestandardowych obrazów wbuduj Chromium w obraz:
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. OpenClaw automatycznie wykrywa utrwalone
Chromium w Linux. Zobacz Docker.
Jak to działa (wewnętrznie)
Niewielki kontrolny serwer loopback przyjmuje żą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 brakuje Playwright, dostępne są tylko operacje niezależne od Playwright. Agent widzi jeden stabilny interfejs, podczas gdy lokalne/zdalne przeglądarki i profile mogą być swobodnie podmieniane pod spodem.Szybka dokumentacja CLI
Wszystkie polecenia akceptują--browser-profile <name>, aby wskazać konkretny profil, oraz --json dla wyjścia czytelnego maszynowo.
Basics: status, tabs, open/focus/close
Basics: status, tabs, open/focus/close
Inspection: screenshot, snapshot, console, errors, requests
Inspection: screenshot, snapshot, console, errors, requests
uploadidialogto wywołania uzbrajające; uruchom je przed kliknięciem/naciśnięciem, które wyzwala wybierak/okno dialogowe. Jeśli akcja otwiera modal, odpowiedź akcji zawierablockedByDialogibrowserState.dialogs.pending; przekaż todialogId, aby odpowiedzieć bezpośrednio. Okna dialogowe obsłużone poza OpenClaw pojawiają się podbrowserState.dialogs.recent.click/type/itd. wymagająrefzsnapshot(numeryczne12, referencja rolie12lub używalna referencja ARIAax12). Selektory CSS celowo nie są obsługiwane dla akcji. Użyjclick-coords, gdy widoczna pozycja w obszarze widoku jest jedynym niezawodnym celem.- Ścieżki pobierania i śledzenia są ograniczone do tymczasowych katalogów głównych OpenClaw:
/tmp/openclaw{,/downloads}(mechanizm awaryjny:${os.tmpdir()}/openclaw/...). uploadakceptuje pliki z tymczasowego katalogu głównego przesyłania OpenClaw i zarządzane przez OpenClaw media przychodzące. Do zarządzanych mediów przychodzących można odwoływać się jakomedia://inbound/<id>, względnie wobec piaskownicymedia/inbound/<id>albo przez rozwiązaną ścieżkę wewnątrz zarządzanego katalogu mediów przychodzących. Zagnieżdżone referencje mediów, traversal, symlinki, hardlinki i dowolne ścieżki lokalne nadal są odrzucane.uploadmoże też ustawiać wejścia plików bezpośrednio przez--input-reflub--element.
suggestedTargetId z tabs.
Skrót flag migawek:
--format ai(domyślne z Playwright): migawka AI z liczbowymi odwołaniami (aria-ref="<n>").--format aria: drzewo dostępności z odwołaniamiaxN. Gdy Playwright jest dostępny, OpenClaw wiąże odwołania z backendowymi identyfikatorami DOM z aktywną stroną, aby kolejne akcje mogły ich używać; w przeciwnym razie traktuj wynik wyłącznie jako inspekcyjny.--efficient(lub--mode efficient): kompaktowy preset migawki ról. Ustawbrowser.snapshotDefaults.mode: "efficient", aby stał się domyślny (zobacz konfiguracja Gateway).--interactive,--compact,--depth,--selectorwymuszają migawkę ról z odwołaniamiref=e12.--frame "<iframe>"ogranicza migawki ról do elementu iframe.- Z Playwright opcja
--labelsdodaje zrzut ekranu z nałożonymi etykietami odwołań (wypisujeMEDIA:<path>) oraz tablicęannotationsz ramką ograniczającą każdego odwołania. Przyscreenshotetykiety oparte na Playwright działają z--full-page,--refi--element; przysnapshotdołączony zrzut ekranu pozostaje ograniczony do widoku. Profile existing-session/chrome-mcp renderują etykiety nakładki na zrzutach ekranu strony, ale nie zwracająannotationsani nie używają pomocnika projekcji pełnej strony/odwołania/elementu z Playwright. Bez Playwright lub chrome-mcp etykietowane zrzuty ekranu nie są dostępne. --urlsdołącza wykryte miejsca docelowe linków do migawek AI.
Migawki i odwołania
OpenClaw obsługuje dwa style „migawek”:-
Migawka AI (liczbowe odwołania):
openclaw browser snapshot(domyślne;--format ai)- Wynik: tekstowa migawka zawierająca liczbowe odwołania.
- Akcje:
openclaw browser click 12,openclaw browser type 23 "hello". - Wewnętrznie odwołanie jest rozwiązywane przez
aria-refPlaywright.
-
Migawka ról (odwołania ról, takie jak
e12):openclaw browser snapshot --interactive(lub--compact,--depth,--selector,--frame)- Wynik: lista/drzewo oparte na rolach z
[ref=e12](i opcjonalnie[nth=1]). - Akcje:
openclaw browser click e12,openclaw browser highlight e12. - Wewnętrznie odwołanie jest rozwiązywane przez
getByRole(...)(oraznth()dla duplikatów). - Dodaj
--labels, aby dołączyć zrzut ekranu z nałożonymi etykietamie12. W profilach opartych na Playwright zwraca to także metadane ramek ograniczających dla każdego odwołania (annotations[]). - Dodaj
--urls, gdy tekst linku jest niejednoznaczny, a agent potrzebuje konkretnych celów nawigacji.
- Wynik: lista/drzewo oparte na rolach z
-
Migawka ARIA (odwołania ARIA, takie jak
ax12):openclaw browser snapshot --format aria- Wynik: drzewo dostępności jako ustrukturyzowane węzły.
- Akcje:
openclaw browser click ax12działa, gdy ścieżka migawki może powiązać odwołanie przez Playwright i backendowe identyfikatory DOM Chrome.
-
Jeśli Playwright jest niedostępny, migawki ARIA nadal mogą być przydatne do
inspekcji, ale odwołania mogą nie nadawać się do akcji. Wykonaj ponownie migawkę
z
--format ailub--interactive, gdy potrzebujesz odwołań do akcji. -
Dowód Docker dla ścieżki awaryjnej raw-CDP:
pnpm test:docker:browser-cdp-snapshoturuchamia Chromium z CDP, wykonujebrowser doctor --deepi weryfikuje, że migawki ról zawierają adresy URL linków, elementy klikalne promowane przez kursor oraz metadane iframe.
- Odwołania nie są stabilne między nawigacjami; jeśli coś się nie powiedzie, uruchom ponownie
snapshoti użyj świeżego odwołania. /actzwraca bieżący surowytargetIdpo zastąpieniu wywołanym akcją, gdy może udowodnić kartę zastępczą. W kolejnych poleceniach nadal używaj stabilnych identyfikatorów/etykiet kart.- Jeśli migawka ról została wykonana z
--frame, odwołania ról są ograniczone do tego iframe do następnej migawki ról. - Nieznane lub nieaktualne odwołania
axNkończą się szybko błędem zamiast przechodzić do selektoraaria-refPlaywright. Gdy tak się stanie, uruchom świeżą migawkę na tej samej karcie.
Ulepszenia oczekiwania
Możesz oczekiwać nie tylko na czas/tekst:- Oczekiwanie na URL (glob obsługiwane przez Playwright):
openclaw browser wait --url "**/dash"
- Oczekiwanie na stan ładowania:
openclaw browser wait --load networkidle- Obsługiwane w zarządzanych profilach
openclaworaz surowych/zdalnych profilach CDP. Profileuseriexisting-sessionodrzucająnetworkidle; użyj tam oczekiwań--url,--text, selektora lub--fn.
- Oczekiwanie na predykat JS:
openclaw browser wait --fn "window.ready===true"
- Oczekiwanie, aż selektor stanie się widoczny:
openclaw browser wait "#main"
Przepływy debugowania
Gdy akcja się nie powiedzie (np. „niewidoczny”, „naruszenie trybu strict”, „zakryty”):openclaw browser snapshot --interactive- Użyj
click <ref>/type <ref>(preferuj odwołania ról w trybie interaktywnym) - Jeśli nadal się nie udaje:
openclaw browser highlight <ref>, aby zobaczyć, w co celuje Playwright - Jeśli strona zachowuje się nietypowo:
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>)
Wynik JSON
--json służy do skryptów i narzędzi strukturalnych.
Przykłady:
refs oraz mały blok stats (lines/chars/refs/interactive), aby narzędzia mogły wnioskować o rozmiarze i gęstości ładunku.
Stan i ustawienia środowiska
Są przydatne w przepływach typu „spraw, aby strona zachowywała się jak X”:- Ciasteczka:
cookies,cookies set,cookies clear - Magazyn:
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"}'pozostaje obsługiwane) - Podstawowe uwierzytelnianie HTTP:
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 - Strefa czasowa / locale:
set timezone ...,set locale ... - Urządzenie / widok:
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 za pomocąbrowser.evaluateEnabled=false, jeśli tego nie potrzebujesz.openclaw browser evaluate --fnakceptuje źródło funkcji, wyrażenie lub ciało instrukcji. Ciała instrukcji są opakowywane jako funkcje asynchroniczne, więc użyjreturndla wartości, którą chcesz otrzymać z powrotem. Użyj--timeout-ms <ms>, gdy funkcja po stronie strony może potrzebować więcej czasu niż domyślny limit czasu evaluate.- Informacje o logowaniach i uwagach dotyczących ochrony przed botami (X/Twitter itd.) znajdziesz w logowanie w przeglądarce + publikowanie w X/Twitter.
- Utrzymuj host Gateway/node jako prywatny (loopback lub tylko tailnet).
- Zdalne punkty końcowe CDP są potężne; tuneluj je i chroń.
Powiązane
- Przeglądarka - omówienie, konfiguracja, profile, bezpieczeństwo
- Logowanie w przeglądarce - logowanie do witryn
- Rozwiązywanie problemów z przeglądarką w systemie Linux
- Rozwiązywanie problemów z przeglądarką w WSL2 i zdalnym CDP w Windows