9 min

如何将 AdsCrawl 与 Cloudflare 开发者平台配合使用

了解如何将 AdsCrawl 的浏览器自动化 API 与 Cloudflare Workers、Browser Rendering 和 AI Gateway 结合,构建可靠的边缘抓取流水线。

AAnonymous

如何将 AdsCrawl 与 Cloudflare 开发者平台配合使用

AdsCrawl 通过单一 API 为你提供真实的云端浏览器会话:截图、渲染后的 HTML、Markdown 提取以及远程 Chrome DevTools 协议(CDP)控制。Cloudflare 开发者平台则提供在边缘运行这些工作所需的计算、存储和 AI 基础能力。两者结合可以解决一个具体问题:如何将“抓取页面并理解它”变成一条可重复、可观测、全球分布式运行的流水线,而无需维护浏览器集群。

本文将介绍整体架构、设置步骤、一个可运行的示例,以及在将两者连接起来之前你应该了解的权衡取舍。

为什么要把 AdsCrawl 与 Cloudflare 开发者平台结合使用

Cloudflare Developer Docs

Cloudflare Developer Docs.

Cloudflare 开发者文档。

每个产品覆盖不同的层级。

  • AdsCrawl 负责浏览器层。 它运行带有指纹配置文件的真实 Chrome 会话,支持并发执行和 CDP 访问。你请求一个 URL,就能得到截图、HTML 或 Markdown——或者附加到一个实时会话并逐步驱动它。
  • Cloudflare 负责编排和交付层。 Workers 在靠近用户的位置运行你的逻辑,D1 和 KV 存储结果,Queues 吸收突发流量,AI Gateway 通过缓存和成本控制来路由模型调用。

这种组合之所以重要,是因为浏览器自动化是有状态的、缓慢的且容易失败,而边缘函数则是快速的、无状态的且成本低廉。把浏览器工作交给 AdsCrawl,把协调工作交给 Cloudflare,可以让每一方都专注于自己擅长的部分。

架构:每个组件所处的位置

一条典型的流水线如下所示:

  1. Cloudflare Worker 接收触发事件——定时任务、Webhook 或用户请求。
  2. Worker 使用目标 URL 和所需的输出格式调用 AdsCrawl API
  3. AdsCrawl 运行真实的浏览器会话并返回 HTML、Markdown 或截图。
  4. Worker 对结果进行后处理:提取字段、对内容进行哈希以检测变化,或通过 AI Gateway 将文本转发给模型。
  5. 结果根据你需要的是关系查询、快速键查找还是二进制存储,分别存入 D1KVR2
  6. 当你抓取数千个 URL 时,Queues 负责处理重试和背压。

这种分离意味着浏览器崩溃永远不会拖垮你的 API 表面,而 Worker 冷启动也永远不会让你付出浏览器启动的代价。

设置步骤

Radar search results showing Internet outage events associated with locations and autonomous systems

Radar search results showing Internet outage events associated with locations and autonomous systems.

Radar 搜索结果,显示与位置和自治系统相关的互联网中断事件。

1. 获取你的 AdsCrawl API 密钥

创建一个账户,在仪表板中生成密钥,并用一个简单请求确认它可用。AdsCrawl 支持 cURL、Node.js 和 Python,因此你可以在接触任何 Cloudflare 代码之前先验证密钥。

curl -X POST https://api.adscrawl.net/v1/scrape \
  -H "Authorization: Bearer $ADSCRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","formats":["markdown","screenshot"]}'

2. 创建一个 Cloudflare Worker

使用 Wrangler CLI 搭建项目,然后将你的 AdsCrawl 密钥存储为 secret,而不是普通变量。

npm create cloudflare@latest adscrawl-worker
cd adscrawl-worker
npx wrangler secret put ADSCRAWL_API_KEY

3. 绑定存储和 AI 基础能力

wrangler.toml 中绑定你计划使用的资源。一个用于监控任务的最小配置可能包括用于存储结果的 D1 和用于摘要的 AI Gateway。

name = "adscrawl-worker"
main = "src/index.js"
compatibility_date = "2026-01-01"

[[d1_databases]]
binding = "DB"
database_name = "scrape_results"
database_id = "<your-d1-id>"

[vars]
AI_GATEWAY_URL = "https://gateway.ai.cloudflare.com/v1/<account>/<gateway>"

4. 编写抓取逻辑

一个调用 AdsCrawl 并存储 Markdown 输出的 Worker 如下所示:

export default {
  async fetch(request, env) {
    const target = new URL(request.url).searchParams.get("url");
    if (!target) return new Response("Missing url", { status: 400 });

    const res = await fetch("https://api.adscrawl.net/v1/scrape", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${env.ADSCRAWL_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ url: target, formats: ["markdown", "html"] }),
    });

    if (!res.ok) return new Response("AdsCrawl error", { status: 502 });
    const data = await res.json();

    await env.DB.prepare(
      "INSERT INTO pages (url, markdown, fetched_at) VALUES (?, ?, ?)"
    ).bind(target, data.markdown, Date.now()).run();

    return Response.json({ ok: true, url: target });
  },
};

5. 添加调度和重试

使用 Cron Trigger 进行周期性抓取,使用 Queue 进行扇出。当一批 URL 失败时,Queue 会以退避策略重试,而不是反复冲击 AdsCrawl 或目标网站。

实用示例

示例 1:渲染页面变更监控

按计划运行一个 Worker,调用 AdsCrawl 获取每个被跟踪页面的 Markdown,对输出进行哈希,并与 KV 中的上一个哈希进行比较。当哈希发生变化时,将任务加入队列,把差异存储到 D1 并通知你的团队。正是这种模式让隐蔽网页抓取能够大规模落地,因为浏览器指纹相关工作留在 AdsCrawl 内部,而你的 Worker 只负责处理内容。

示例 2:竞品页面的 AI 摘要

通过 AdsCrawl 获取 Markdown,然后通过 AI Gateway 将其发送给模型。AI Gateway 提供缓存、请求日志和成本可见性,当你每天要摘要数百个页面时,这些能力非常重要。如果你正在构建其中的智能体部分,MCP 服务器详解一文介绍了智能体最初如何连接到 AdsCrawl 这类工具。

示例 3:基于截图的视觉 QA

从 AdsCrawl 请求截图,将其存储到 R2,并与基线进行比较。由于 AdsCrawl 将截图作为一等输出而不是副作用返回,你不需要第二个工具来进行视觉检查。

Cloudflare Browser Rendering 适合用在哪里

Changelogs

Changelogs.

更新日志。

Cloudflare 自家的 Browser Rendering 产品在 Cloudflare 基础设施上运行无头浏览器。这与 AdsCrawl 存在重叠,因此这个选择很重要。

需求 更适合的方案
在 Worker 内进行简单的 HTML 或 PDF 渲染 Cloudflare Browser Rendering
远程 CDP 会话、指纹配置文件、并发隔离浏览器 AdsCrawl
将浏览器和应用逻辑保留在同一家供应商内 Cloudflare Browser Rendering
通过一次 API 调用获得 Markdown 提取和截图输出 AdsCrawl

一种常见模式是两者都用:用 Cloudflare Browser Rendering 进行平台内的轻量渲染,用 AdsCrawl 处理需要持久状态或指纹控制的更复杂会话。当你比较托管 API 与自托管框架时,同样的逻辑也适用——参见AdsCrawl 与 ParseHub 对比,了解 API 驱动的自动化与可视化抓取器有何不同。

这种组合解决的问题

  • 基础设施所有权。 你无需自行配置或修补浏览器二进制文件。AdsCrawl 运行它们;Cloudflare 运行你的代码。
  • 全球延迟。 Workers 在用户或数据源附近执行,因此即使浏览器会话在别处运行,编排开销也能保持较低。
  • 突发流量处理。 Queues 和 Durable Objects 可以吸收原本需要预配置服务器才能应对的流量峰值。
  • 可观测性。 Cloudflare 的日志和分析与 AdsCrawl 自身的使用仪表板并存,因此你可以追踪一个请求从触发到结果存储的全过程。
  • 成本控制。 基于额度的 AdsCrawl 用量加上 Cloudflare 的按请求付费模式,意味着你只为实际完成的工作付费,而不是为闲置容量付费。

需要提前规划的局限性

  • 两个供应商,两个故障域。 Worker 可能成功,而 AdsCrawl 超时。构建幂等处理器并存储部分结果。
  • Worker 执行限制。 长时间运行的浏览器会话不应阻塞 Worker。触发 AdsCrawl,快速返回,并异步处理结果。
  • 密钥管理。 将 AdsCrawl 密钥保存在 Wrangler secrets 中,绝不要放在 vars 或源代码管理中。
  • 数据驻留。 如果你的目标或用户受区域限制,请在确定设计之前检查两个平台在何处执行。

相关阅读

来源与延伸阅读

常见问题

Cloudflare Worker 可以直接调用 AdsCrawl API 吗?

可以。AdsCrawl 提供标准 HTTPS API,因此 Worker 可以用 fetch 调用它。保持请求简短,并将繁重处理转移到 Queue 或 Durable Object。

如果使用 AdsCrawl,还需要 Cloudflare Browser Rendering 吗?

不一定。它们存在重叠。当你希望在 Cloudflare 平台内进行渲染时,使用 Cloudflare Browser Rendering;当你需要远程 CDP 会话、指纹配置文件或通过一次调用完成 Markdown 提取时,使用 AdsCrawl。

如何在 Cloudflare 上存储抓取到的页面?

对于需要查询的结构化记录使用 D1,对于内容哈希等快速键值查找使用 KV,对于截图和大块二进制数据使用 R2。

这种组合适合 AI 智能体吗?

适合。AdsCrawl 提供浏览器能力,Cloudflare 提供计算和 AI 路由。当你通过 AI Gateway 路由模型调用时,它还能增加缓存和成本跟踪。

如果 AdsCrawl 返回错误怎么办?

从 Worker 返回非 200 状态码,记录失败,并让你的 Queue 重试策略处理瞬时错误。不要对确实在阻止你的目标无限重试。

结论

AdsCrawl 和 Cloudflare 开发者平台解决的是同一个问题的不同部分。AdsCrawl 负责浏览器:真实会话、CDP 控制、截图和干净的 Markdown。Cloudflare 负责流水线:边缘计算、存储、队列和 AI 路由。将它们连接起来,你就能得到一个可扩展的抓取和监控技术栈,而无需照看浏览器集群。从一个 Worker、一个 AdsCrawl 密钥和一张 D1 表开始——等第一条流水线被证明可靠后再扩展。