# Webhook 接收

为了从爬虫接收推送的数据,您需要在服务器中创建一个 webhook 端点。

您的服务器 webhook 应该...

  • 可从 Crawlbase 服务器公开访问
  • 准备好接收 POST 200毫秒内呼叫和响应
  • 在 200 毫秒内响应状态码 200, 201 or 204 没有内容

数据的结构方式将取决于您在使用 format 参数推送 url 时指定的格式, &format=html (这是默认设置)或 &format=json.

爬虫引擎将通过以下方式将数据发送回您的回调端点 POST 方法与 gzip 压缩。

请注意: 确保您的回拨随时可用。 每次我们交付给您的回调并且您的服务器未能返回成功的响应时,我们都会重试抓取该页面,然后再次重试交付。 这些重试被认为是成功的请求,因此需要付费。

请注意: 如果您使用的是 Zapier webhook,则 Crawler 不会发送压缩的数据。 Zapier 钩子不适用于 Gzip 压缩。

# 请求示例

在此处查找您可以期望从 Crawlbase Crawler 接收到服务器 webhook 的内容的示例。

# 格式化 HTML

当您使用 &format=html.

Headers:
  "Content-Type" => "text/plain"
  "Content-Encoding" => "gzip"
  "Original-Status" => 200
  "PC-Status" => 200
  "rid" => "The RID you received in the push call"
  "url" => "The URL which was crawled"

Body:
  The HTML of the page

# 格式 JSON

当您使用 &format=json.

Headers:
  "Content-Type" => "gzip/json"
  "Content-Encoding" => "gzip"

Body:
{
  pc_status: 200,
  original_status: 200,
  rid: "The RID you received in the push call",
  url: "The URL which was crawled",
  body: "The HTML of the page"
}

请注意: pc_statusoriginal_status 必须检查。 你可以阅读更多关于他们的信息 [这里]/zh-cn/crawling-api/response/#pc-status) 和 这里

# 测试集成

创建 webhook 时,查看特定 url 的确切响应会很有帮助。

为了帮助测试,您可以在爬虫中配置 Crawlbase 存储以进行测试。 你可以 看到它在这里 (打开新窗口) (opens new window).

# 监控机器人

Crawler 将监视您的 webhook url 以了解其状态,如果 webhook 关闭,Crawler 将暂停,当您的 webhook 再次启动时,它将自动恢复。

我们的监控机器人将继续向您的 webhook 端点发送请求。 确保忽略这些请求 200 状态码。

  • 监控请求以带有 json 正文的 POST 请求的形式出现,因为您将收到非监控调用。
  • 监控请求随用户代理一起提供 Crawlbase Monitoring Bot 1.0 所以你可以很容易地用状态忽略它们 200.

# 保护您的网络钩子

如果您使用一些随机端点,例如 yourdomain.com/2340JOiow43djoqe21rjosi 它不太可能被发现,但无论如何,您可以使用以下方法(或其中几种方法组合)保护 webhook 端点:

  • 寄一个 [根据您的请求自定义标头]/zh-cn/crawler/pushing/#sending-additional-data) 使用一些令牌,您可以在 webhook 中检查它是否存在。
  • 在您的 url 中使用一些 url 参数并在 webhook 请求中检查其是否存在,例如: yourdomain.com/2340JOiow43djoqe21rjosi?token=1234
  • 只接受 POST 请求。
  • 检查一些预期的标题(例如 Pc-Status, Original-Status, rid等)。

我们不建议将 IP 列入白名单,因为我们的爬虫可以从许多不同的 IP 推送,并且 IP 可能会在没有事先通知的情况下更改。