Loading...
Loading...
Control a browser via Chrome DevTools Protocol (CDP) proxy. Use when: (1) navigating to URLs and reading page content, (2) taking screenshots, (3) executing JavaScript in the browser, (4) clicking elements or filling forms, (5) searching and installing Chrome Web Store extensions, (6) interacting with web APIs that require a real browser. NOT for: simple HTTP requests (use curl), local file operations, or when no CDP proxy is available.
npx skill4agent add linuxhsj/openclaw-zero-token browser-cdppip install psutilhttp://localhost:3456python3 skills/browser-cdp/scripts/cdp_proxy.pycurlcurl -Opython3http://localhost:3456curl -s http://localhost:3456/targets | python3 -m json.tool[
{ "id": "ABC123", "title": "Google", "url": "https://google.com" }
]?target=<targetId>curl -s "http://localhost:3456/navigate?url=https://example.com"# Save to file
curl -s -o screenshot.png http://localhost:3456/screenshotContent-Type: text/plaincurl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "document.title"curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "JSON.stringify(Array.from(document.querySelectorAll('a')).map(a => ({text: a.innerText, href: a.href})))"curl -s "http://localhost:3456/click?selector=%23submit-btn"curl -s http://localhost:3456/new{ "id": "NEW_TAB_ID", "title": "about:blank", "url": "about:blank" }# Open a page
curl -s "http://localhost:3456/navigate?url=https://example.com"
# Extract all text content
curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "document.body.innerText"
# Extract all links
curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "JSON.stringify([...document.querySelectorAll('a')].map(a => ({text: a.textContent.trim(), href: a.href})))"curl -s "http://localhost:3456/navigate?url=https://example.com"
curl -s -o page.png http://localhost:3456/screenshot# Search the Chrome Web Store (no login required for search)
curl -s "http://localhost:3456/navigate?url=https://chromewebstore.google.com/search/example%20extension"
# Extract extension IDs from search results
curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "JSON.stringify([...document.querySelectorAll('a[data-id]')].map(a => ({id: a.dataset.id, title: a.textContent.trim()})))"
# Install an extension (requires the extension ID)
curl -s "http://localhost:3456/navigate?url=https://chromewebstore.google.com/detail/<extension-id>"
# Then click the "Add to Chrome" button
curl -s "http://localhost:3456/click?selector=%5Bdata-id%3Dinstall-button%5D"# Navigate to the form
curl -s "http://localhost:3456/navigate?url=https://example.com/login"
# Fill in fields
curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "document.querySelector('#username').value = 'myuser'"
curl -s -X POST http://localhost:3456/eval \
-H "Content-Type: text/plain" \
-d "document.querySelector('#password').value = 'mypass'"
# Submit
curl -s "http://localhost:3456/click?selector=%23login-form+%3E+button"python3 skills/browser-cdp/scripts/cdp_proxy.py/eval/eval/click?target=<targetId>