Skip to main content
AdsCrawl JavaScript SDK 适用于 Node.js 20 及更高版本,同时支持 ESM 和 CommonJS,并附带完整的 TypeScript 类型和编辑器自动补全。它使用原生 fetch,零运行时依赖。
请将 API 密钥保留在服务端代码中。该 SDK 不适用于浏览器打包环境。

安装

当你需要使用 Playwright 或 Puppeteer 连接远程浏览器时,请单独安装自动化库:

adscrawl-js on GitHub

查看源代码、可运行示例和版本发布。

认证并发起第一次请求

在控制台中创建 API 密钥,并在服务器环境中设置 ADSCRAWL_API_KEY。你也可以通过 new AdsCrawl({ apiKey: '...' }) 显式传入密钥。
CommonJS:

渲染内容和截图

html() 在 contentMode 为 'html'(默认值)或 'markdown' 时返回字符串,在 'json' 时返回 Article。markdown() 和 article() 是这些模式的便捷方法。screenshot() 返回包含 PNG 的 Uint8Array。

代理和指纹

通过自定义代理路由,或使用托管的 countryCode 路由。两者不能同时使用。
AdsCrawl 使用真实浏览器,支持可配置的路由和浏览器指纹。随机化设置会在操作系统、GPU、硬件、字体和相关信号之间生成一致的配置。该浏览器工作流已通过验证,可以访问并渲染 BrowserScan、Pixelscan 和 IPhey,并返回截图。 以下完整示例打开 BrowserScan 并将返回的 PNG 保存为 browserscan.png:

结构化提取

列出可用的模板及其参数:
对于你自己的页面,可以指定 DOM 或网络字段。泛型描述了预期的输出,但不会在运行时验证你的自定义数据。请务必检查 missingFields。
使用 actions 进行点击、输入、滚动和等待,使用 waitFor 等待可见的 CSS 选择器或文本出现。有关模板特定的要求,请参阅 API 参考。

远程 CDP 浏览器

通过 CDP 将 Playwright 浏览器连接到 AdsCrawl 远程会话:
创建响应包含 sessionId、expiresAt 和 cdpBaseUrl,不包含 WebSocket URL。对于 Puppeteer,请使用发现模式:
cdp.list() 返回 { ok, data }。cdp.liveToken(sessionId) 返回一个有效期为 30 秒的单次使用实时控制 URL。将所有连接 URL 视为机密,不要记录它们。

持久化云浏览器

云浏览器配置在停止后保留其配置。使用 API 密钥启动时,每次启动都需要显式提供顶层自定义代理,即使配置文件中已保存了代理。 将 ADSCRAWL_PROXY_SERVER 设置为你的 HTTP 或 SOCKS5 代理 URL,并带上明确的端口。如果需要认证,还需设置 ADSCRAWL_PROXY_USERNAME 和 ADSCRAWL_PROXY_PASSWORD。
cloudBrowsers.launch({ proxy, tabs?, cookies?, fingerprint? }) 在单个请求中创建持久化配置文件并启动它。失败的启动可能在 AdsCrawlAPIError.id 中返回一个配置文件 ID,请检查并停止该配置文件。如果未收到 ID,请在重复启动前检查 cloudBrowsers.list()。 cloudBrowsers.list({ page?, pageSize? }) 包含分页和已保存/运行配额信息。停止响应中的 runtime.status: 'stopping' 表示关闭正在进行中,配额仍被保留。关闭查看器不会停止计费。SDK 涵盖 API 密钥端点,配置文件的 PATCH/DELETE 和查看器认证需要仪表盘会话。

配置、超时和取消

API 密钥默认取自 ADSCRAWL_API_KEY。API 源地址默认依次使用 ADSCRAWL_BASE_URL、ADSCRAWL_API_URL,然后是 https://api.adscrawl.net。HTTP 超时覆盖请求及其响应读取。普通调用默认 90 秒,cloudBrowsers.launch() 默认 195 秒以允许启动和服务器清理。对于长时间任务,请将 HTTP 超时设置为大于服务端任务超时。
取消或超时并不代表远端工作已停止。

错误处理

API 错误保留 HTTP status、稳定的 code、已脱敏的 body、traceId,以及可用的 requestId。网络失败使用 AdsCrawlConnectionError;无效或空响应用 AdsCrawlResponseError。调用方取消保留 AbortSignal 的原因。请求不会自动重试。