控制完整流程
在页面之间导航、填写表单,并等待需要的元素出现后读取内容。相关操作在同一浏览器会话中执行。
01 / 产品介绍
AdsCrawl 通过 Chrome DevTools Protocol(CDP)为 Playwright 提供临时远程浏览器会话。调用 POST /cdp/sessions 创建会话,将返回的 webSocketDebuggerUrl 传给 chromium.connectOverCDP,并在流程结束后显式释放会话。
02 / 适用场景
在页面之间导航、填写表单,并等待需要的元素出现后读取内容。相关操作在同一浏览器会话中执行。
在 Node.js 服务中运行 Playwright 客户端,由 AdsCrawl 运行远程浏览器。该连接无需在应用服务中启动本地 Chromium 进程。
在 finally 中调用 DELETE /cdp/sessions/:sessionId,将清理作为任务的一部分,避免页面操作失败后留下运行中的会话。
03 / 快速开始
示例环境:Node.js 与 Playwright(npm install playwright)。 先在服务端设置 ADSCRAWL_API_KEY 环境变量。
完整参数与响应说明 →import { chromium } from "playwright";
const base = "https://api.adscrawl.net";
const headers = {
"x-api-key": process.env.ADSCRAWL_API_KEY,
"content-type": "application/json",
};
const res = await fetch(base + "/cdp/sessions", {
method: "POST", headers,
body: JSON.stringify({ idleTimeoutMs: 600000 }),
});
if (!res.ok) throw new Error(await res.text());
const session = await res.json();
try {
const browser = await chromium.connectOverCDP(
session.cdpBaseUrl
);
const page = await browser.contexts()[0].newPage();
await page.goto("https://www.adscrawl.net");
console.log(await page.title());
} finally {
const stopped = await fetch(
base + "/cdp/sessions/" + session.sessionId,
{ method: "DELETE", headers }
);
if (!stopped.ok) throw new Error(await stopped.text());
}API Key 仅保存在服务端。遇到 HTTP 402 请检查额度,遇到 429 请降低并发并退避重试。
05 / FAQ
不同。示例通过 chromium.connectOverCDP 使用 CDP,应遵循文档中的 CDP 会话接口,不能假设它是 Playwright browser-server 端点。
不会。这是临时会话,可复用云浏览器配置由另一组接口管理。
客户端连接的是远程浏览器,不会启动本地浏览器。应用需安装所使用的 Playwright 客户端包。