AgentGo Stealth Browser
by @agentgostealthbrowser
Automate websites using AgentGo’s cloud browser cluster via Playwright (pinned to playwright@1.51.0), with stealth-friendly configuration intended to reduce...
clawhub install official📖 About This Skill
name: agentgo-stealth-browser description: > Automate websites using AgentGo’s cloud browser cluster via Playwright (pinned to playwright@1.51.0), with stealth-friendly configuration intended to reduce automation detection. Use for navigation, form filling, screenshots, testing flows, and data extraction on remote Chromium instead of a local browser. Requires AGENTGO_API_KEY. homepage: https://app.agentgo.live/ metadata: openclaw: emoji: "🧭" os: ["darwin", "linux", "win32"] requires: env: ["AGENTGO_API_KEY"] notes: "Playwright must be exactly playwright@1.51.0 (protocol compatibility)"
AgentGo Stealth Browser: Cloud Playwright Automation
AgentGo provides a distributed cloud browser cluster. You connect via WebSocket using chromium.connect() from playwright@1.51.0.
> “Stealth” refers to configuration intended to reduce automation detection. Results depend on the target site and cannot be guaranteed.
> Important: Pin Playwright to 1.51.0. Newer versions may be protocol-incompatible with AgentGo’s server.
When to use / When not to use
Use this skill when you want:
Don’t use this skill when:
1.51.0Prerequisites
AGENTGO_API_KEYGet an API key
Register at https://app.agentgo.live/
export AGENTGO_API_KEY="your_api_key_here"
Install (must pin Playwright)
npm install playwright@1.51.0
or
pnpm add playwright@1.51.0Optional: for session management
npm install @agentgo-dev/sdk
Minimal example (open → screenshot → save)
This saves a full-page screenshot to example.png in your current working directory.
import { chromium } from "playwright"; // must be playwright@1.51.0const options = { _apikey: process.env.AGENTGO_API_KEY };
const serverUrl = wss://app.browsers.live?launch-options=${encodeURIComponent(
JSON.stringify(options)
)};
const browser = await chromium.connect(serverUrl);
try {
const page = await browser.newPage();
await page.goto("https://example.com", { waitUntil: "domcontentloaded" });
await page.screenshot({ path: "example.png", fullPage: true });
} finally {
await browser.close();
}
Quick start
import { chromium } from "playwright"; // must be playwright@1.51.0const options = { _apikey: process.env.AGENTGO_API_KEY };
const serverUrl = wss://app.browsers.live?launch-options=${encodeURIComponent(
JSON.stringify(options)
)};
const browser = await chromium.connect(serverUrl);
try {
const page = await browser.newPage();
await page.goto("https://example.com");
console.log(await page.title());
} finally {
await browser.close();
}
Browser sessions (recommended)
If you need better control over lifecycle, concurrency, or reuse, use AgentGo browser sessions.
Docs:
Typical flow:
1) Create a browser session using the official SDK (@agentgo-dev/sdk)
2) The SDK returns a connectionUrl (WebSocket)
3) Connect with Playwright using that URL
4) Run automation, then close the browser to end the session
Session connect example using the SDK:
import { AgentGo } from "@agentgo-dev/sdk";
import { chromium } from "playwright"; // must be playwright@1.51.0const client = new AgentGo({ apiKey: process.env.AGENTGO_API_KEY! });
const session = await client.sessions.create({ region: "us" });
const browser = await chromium.connect(session.connectionUrl);
try {
const page = await browser.newPage();
await page.goto("https://example.com", { waitUntil: "domcontentloaded" });
await page.screenshot({ path: "session-example.png", fullPage: true });
} finally {
await browser.close();
}
> Note: Session creation/usage details can change on the AgentGo side. Always follow the two official docs above for the latest parameters and lifecycle steps.
Connection helper (recommended)
> The examples below use this helper. Copy it into your project, or inline the connection logic.
import { chromium } from "playwright";export async function connectAgentGo() {
if (!process.env.AGENTGO_API_KEY) {
throw new Error("AGENTGO_API_KEY is not set");
}
const opts = encodeURIComponent(
JSON.stringify({ _apikey: process.env.AGENTGO_API_KEY })
);
return chromium.connect(wss://app.browsers.live?launch-options=${opts});
}
> Pass _disable_proxy: true in launch options to bypass the default proxy. See session-management.md for all connection options.
Basic interactions
const browser = await connectAgentGo(); // see "Connection helper" section above
const page = await browser.newPage();await page.goto("https://example.com");
await page.click("button#submit");
await page.fill("input[name=email]", "user@example.com"); // for anti-detection, use keyboard.type() instead — see tips-general.md
await page.press("input[name=email]", "Enter");
await page.screenshot({ path: "screenshot.png" });
await browser.close();
Extract data
const browser = await connectAgentGo(); // see "Connection helper" section above
const page = await browser.newPage();
await page.goto("https://news.ycombinator.com");const items = await page.$$eval(".titleline a", els =>
els.map(a => ({
title: a.textContent,
href: a.href,
}))
);
await browser.close();
console.log(items);
Multiple pages (parallel)
const browser = await connectAgentGo(); // see "Connection helper" section above
const [page1, page2] = await Promise.all([browser.newPage(), browser.newPage()]);await Promise.all([
page1.goto("https://site-a.com"),
page2.goto("https://site-b.com"),
]);
await browser.close();
Always close in finally
const browser = await connectAgentGo(); // see "Connection helper" section above
try {
const page = await browser.newPage();
await doWork(page);
} finally {
await browser.close();
}
References (deep dive)
💡 Examples
import { chromium } from "playwright"; // must be playwright@1.51.0const options = { _apikey: process.env.AGENTGO_API_KEY };
const serverUrl = wss://app.browsers.live?launch-options=${encodeURIComponent(
JSON.stringify(options)
)};
const browser = await chromium.connect(serverUrl);
try {
const page = await browser.newPage();
await page.goto("https://example.com");
console.log(await page.title());
} finally {
await browser.close();
}
⚙️ Configuration
AGENTGO_API_KEYGet an API key
Register at https://app.agentgo.live/
export AGENTGO_API_KEY="your_api_key_here"