Webhook是某件事发生时,一个应用立即发给另一个应用的消息。了解Webhook是什么、如何验证,以及sona.to会发送哪些内容。
Webhook是什么?它是某件事发生的那一刻,一个应用发给另一个应用的消息,这样第二个应用就不用反复询问。你给第一个应用一个地址,每当事件发生,它就立即把详情发到那里。本指南介绍Webhook如何运作、如何确认一个Webhook是真实的,以及sona.to会发送什么,Webhooks页面也有简要介绍。
Webhook是什么?
大多数应用用两种方式共享数据。用API时,是你的系统去问:“帖子发出去了吗?”如果还没有,过一会儿再问。用Webhook时,是应用来告诉你:帖子一发布,它就向你选定的地址发送一个请求,附带帖子的详情。
所以Webhook就是发往你所控制的URL的一个HTTP请求,通常是带JSON正文的POST。这个URL可以是你自己的服务器,也可以是n8n、Zapier、Make、Slack或其他服务提供的Webhook地址,请求一到就会启动工作流。
Webhook和API的区别
API用来询问和修改:列出帖子、创建帖子、读取数据。Webhook用来接收通知。大多数集成两者都用:用API创建帖子,用Webhook得知它是发布成功还是失败。反复询问API既浪费请求,得知结果也还是晚,而Webhook会在事件发生时立即到达。
如何验证Webhook
任何知道你Webhook地址的人都可能向它发送伪造请求,所以设计良好的Webhook都带签名。发送方用正文和共享密钥计算签名,通常使用HMAC SHA-256,并放进请求头。你这边用同一个密钥算出同样的签名,再用恒定时间比较来对比两者。不一致就忽略该请求。
在签名数据中加入时间戳还能防止重放:一个被截获的请求无法在之后再次发送,因为它的时间戳已经太旧。
sona.to的Webhook
sona.to会针对四种事件发送Webhook:帖子已发布、帖子发布失败、网站检测完成、网站检测失败。你可以为每个Webhook选择接收哪些事件,比如聊天通知只接收失败事件,而报表接收全部事件。推送的数据使用与sona.to API相同的字段名。
设置方法。在后台的API页面粘贴地址,勾选事件并保存。签名密钥只在那一刻显示一次,所以要当场复制。
签名。每次投递都带有一个请求头,包含时间戳,以及用你的密钥对时间戳和正文计算出的HMAC SHA-256。拒绝时间戳超过几分钟的请求。
重试。如果你的地址宕机或返回错误,会在60秒、5分钟和30分钟后重新投递。每次尝试都会记录状态码和耗时。持续失败的地址会被停用,修好后可以重新启用。
安全。地址必须使用https并指向公网服务器。私有网络上的地址在保存时和投递时都会被拒绝,也不会跟随重定向。
在n8n、Zapier和Make中使用Webhook
sona.to在n8n、Zapier和Make上的应用为同样的四种事件提供了现成的触发器,所以你不用自己粘贴地址:添加触发器,应用就会设置好Webhook。参见用n8n、Zapier和Make实现社交媒体自动化。
完整说明以及签名校验示例见API文档。
常见问题
Webhook和API是一回事吗?
不是。API在你询问时回答。Webhook在某件事发生时给你发消息。
sona.to的Webhook免费吗?
Webhook和API一样,所有套餐都包含。
如果我的服务器宕机了会怎样?
sona.to会在大约半小时内重试三次。如果投递一直失败,Webhook会被停用,直到你重新启用。
准备好试试了吗?
免费开始,无需信用卡。