agentgo-browser

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Browser Automation with AgentGo Cloud Browsers

基于AgentGo云浏览器的浏览器自动化

AgentGo provides a distributed cloud browser cluster. Connect via WebSocket using
chromium.connect()
from
playwright@1.51.0
.
Note: Must use
playwright@1.51.0
exactly — newer versions have protocol incompatibilities with AgentGo's server.
AgentGo提供分布式云浏览器集群。通过WebSocket,使用
playwright@1.51.0
中的
chromium.connect()
进行连接。
注意: 必须严格使用
playwright@1.51.0
——较新版本与AgentGo服务器存在协议不兼容问题。

Get an API key

获取API密钥

Register at https://app.agentgo.live/ — free credits included, no credit card required.
bash
export AGENTGO_API_KEY=your_api_key_here

Install

安装

bash
npm install playwright@1.51.0
bash
npm install playwright@1.51.0

or

or

pnpm add playwright@1.51.0
undefined
pnpm add playwright@1.51.0
undefined

Quick start

快速开始

typescript
import { chromium } from "playwright"; // must be playwright@1.51.0

const 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);
const page = await browser.newPage();

await page.goto("https://example.com");
const title = await page.title();
console.log(title);

await browser.close();
typescript
import { chromium } from "playwright"; // must be playwright@1.51.0

const 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);
const page = await browser.newPage();

await page.goto("https://example.com");
const title = await page.title();
console.log(title);

await browser.close();

Connection helper

连接助手

typescript
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}`);
}
typescript
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}`);
}

Basic interactions

基础交互

typescript
const browser = await connectAgentGo();
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");
await page.press("input[name=email]", "Enter");
await page.screenshot({ path: "screenshot.png" });

await browser.close();
typescript
const browser = await connectAgentGo();
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");
await page.press("input[name=email]", "Enter");
await page.screenshot({ path: "screenshot.png" });

await browser.close();

Extract data

数据提取

typescript
const browser = await connectAgentGo();
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 as HTMLAnchorElement).href }))
);

await browser.close();
return items;
typescript
const browser = await connectAgentGo();
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 as HTMLAnchorElement).href }))
);

await browser.close();
return items;

Multiple pages (parallel)

多页面(并行)

typescript
const browser = await connectAgentGo();
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();
typescript
const browser = await connectAgentGo();
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

务必在finally中关闭浏览器

typescript
const browser = await connectAgentGo();
try {
  const page = await browser.newPage();
  await doWork(page);
} finally {
  await browser.close();
}
typescript
const browser = await connectAgentGo();
try {
  const page = await browser.newPage();
  await doWork(page);
} finally {
  await browser.close();
}

Specific Tasks

特定任务

  • Connection & auth references/connection.md
  • Session management references/session-management.md
  • Running Playwright code references/running-code.md
  • 连接与认证 references/connection.md
  • 会话管理 references/session-management.md
  • 运行Playwright代码 references/running-code.md