# Webhook 接收
为了从爬虫接收推送的数据,您需要在服务器中创建一个 webhook 端点。
您的服务器 webhook 应该...
- 可从 Crawlbase 服务器公开访问
- 准备好接收
POST
200毫秒内呼叫和响应 - 在 200 毫秒内响应状态码
200
,201
or204
没有内容
数据的结构方式将取决于您在使用 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_status
和 original_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 可能会在没有事先通知的情况下更改。