跳转到主要内容

Puppeteer 云浏览器

Puppeteer 云浏览器,让现有脚本连接远程环境。

通过 Puppeteer 控制云端 Chromium。Node.js 应用负责导航与数据提取,AdsCrawl 承载浏览器会话。

01 / 产品介绍

什么是Puppeteer 云浏览器?

AdsCrawl 通过 Remote CDP API 提供 Puppeteer 云浏览器。创建会话并发现 WebSocket 调试地址后,使用 puppeteer.connect 将现有 Node.js 脚本连接到远程浏览器。

02 / 适用场景

适合哪些任务?

01

迁移浏览器执行环境

使用 puppeteer-core 连接时无需为此流程安装本地 Chromium;应用仍需运行并组织自动化脚本。

02

沿用页面操作

使用 Puppeteer 导航、读取页面和获取结果;迁移前检查本地文件、扩展与浏览器版本等依赖。

03

按任务管理会话

为任务创建临时会话,在 finally 中释放,并保留会话 ID 以便失败后清理。

03 / 快速开始

从一个完整流程开始

  1. 安装 puppeteer-core 并创建服务端 API Key。
  2. 调用 POST /cdp/sessions,保存 sessionId 与 cdpBaseUrl。
  3. 保留地址中的 token,访问 /json/version,将返回的 WebSocket 地址传给 puppeteer.connect。
  4. 执行脚本,断开客户端,并在失败时同样调用 DELETE 删除 AdsCrawl 会话。

需要支持 fetch 的 Node.js 和 puppeteer-core(npm install puppeteer-core),保存为 .mjs 文件。 先在服务端设置 ADSCRAWL_API_KEY 环境变量。

完整参数与响应说明 →
Puppeteer
import puppeteer from "puppeteer-core";

const base = "https://api.adscrawl.net";
const headers = {
  "x-api-key": process.env.ADSCRAWL_API_KEY,
  "content-type": "application/json",
};
const response = await fetch(base + "/cdp/sessions", {
  method: "POST", headers,
  body: JSON.stringify({ idleTimeoutMs: 600000 }),
});
if (!response.ok) throw new Error(await response.text());
const session = await response.json();
try {
  const discovery = new URL(session.cdpBaseUrl);
  discovery.pathname += "/json/version";
  const version = await fetch(discovery);
  if (!version.ok) throw new Error(await version.text());
  const { webSocketDebuggerUrl } = await version.json();
  const browser = await puppeteer.connect({
    browserWSEndpoint: webSocketDebuggerUrl,
  });
  try {
    const page = await browser.newPage();
    await page.goto("https://www.adscrawl.net");
    console.log(await page.title());
  } finally {
    await browser.disconnect();
  }
} finally {
  const stopped = await fetch(base + "/cdp/sessions/" + session.sessionId, {
    method: "DELETE", headers,
  });
  if (!stopped.ok) throw new Error(await stopped.text());
}

04 / 限制与计费

接入前需要了解

比较套餐与额度 →
  • 此集成使用 Chromium CDP,不提供 Firefox 或 WebDriver BiDi 会话。
  • 仅断开 Puppeteer 连接不会删除远程会话。
  • 会话地址包含访问令牌,应保存在服务端,避免写入公开日志。
  • 远程执行存在网络延迟,并受超时及账号并发限制。

API Key 仅保存在服务端。遇到 HTTP 402 请检查额度,遇到 429 请降低并发并退避重试。

05 / FAQ

常见问题

需要调用 puppeteer.launch 吗?

远程浏览器已经启动,应使用 puppeteer.connect;puppeteer.launch 会在自己的环境中启动浏览器进程。

需要下载 Chromium 吗?

示例中的远程连接不需要;puppeteer-core 提供客户端,Chromium 由 AdsCrawl 运行。

已删除的会话可以复用吗?

不能,需要创建新的临时会话。保存浏览器配置属于独立的云浏览器 API 流程。