SereneReader Bot
我们的抓取器做什么、如何标识自身,以及如何将其拒之门外。
SereneReader 是什么
SereneReader 是一款 Feed 阅读器。当有人订阅您的 RSS 或 Atom Feed 时,我们的服务器会代其抓取内容,并向其展示新文章。
为显示预览图,我们还会对每篇文章页面抓取一次,读取其 og:image 标签,并抓取您网站的 favicon 用于侧边栏。
User-Agent
我们服务器的每次请求均以如下字符串标识自身:
SereneReader/1.0 (+https://serenereader.com/bot)我们抓取的内容
- 用户已订阅的 Feed 地址。
- 每篇文章页面仅抓取一次,最多读取 1 MB 的 HTML 以查找 og:image 标签。
- 您网站的 favicon。
我们从不爬取整个网站,从不跟随文章页面中的链接,也不抓取任何无人订阅的内容。
抓取频率
订阅源按计划定时刷新。若您的服务器返回 ETag 或 Last-Modified 响应头,下次刷新时将携带 If-None-Match 或 If-Modified-Since,内容未变则仅返回 304,无需传输正文。
每篇文章页面仅抓取一次,用于生成预览图。若页面无法访问,我们会停止重试:404 等永久性错误将记录 30 天;超时或服务器错误等临时性问题最多退避重试三次,之后至少搁置一小时。
收到 429 或 503 时,我们会主动降频。对于订阅源,我们会以递增的退避策略推迟下次刷新;若为 429,则至少遵循您的 Retry-After 值。对于文章页面,我们最多在接下来约十分钟内重试三次,之后至少等待一小时,或按您的 Retry-After 要求等待,最长不超过七天。
robots.txt
在抓取文章页面或网站图标之前,我们会读取您的 robots.txt,并遵循 User-agent: SereneReader 的 Disallow 规则和抓取延迟,若无匹配则回退至 * 组。
Feed 网址有所不同。抓取 Feed 是代表订阅它的读者进行的,因此我们采用与 Google Feedfetcher 相同的处理方式:* 分组的 Disallow 规则不适用于 Feed。若 User-agent: SereneReader 分组禁止了 Feed 路径,该规则仍会被遵守,crawl-delay 对 Feed 的约束与对其他内容完全一致。
若因服务器错误导致 robots.txt 无法访问,我们将视为允许抓取。订阅是读者的主动行为,不稳定的 robots 文件不应阻断他们的订阅源。
如何屏蔽我们
您可在服务器或防火墙层面屏蔽或限速上方的 User-Agent,也可在 robots.txt 中添加一个包含我们名称的组来拒绝访问。针对所有爬虫的规则不会阻止订阅源抓取,以下规则才有效:
User-agent: SereneReader
Disallow: /屏蔽您的 Feed 地址会停止所有订阅者的刷新,而非仅针对某一位读者。
请求签名
请求使用 Web Bot Auth(HTTP 消息签名,RFC 9421)进行签名,您可以验证其确实来自我们。我们的公钥发布于:
https://serenereader.com/.well-known/http-message-signatures-directory出站 IP 地址
定时订阅源刷新和预览图片获取来自以下固定地址。当有人首次添加订阅源时发起的一次性请求来自我们的网页服务器,不在此列表中,因此仅凭 IP 白名单将会拒绝该请求。
162.220.234.241
152.55.180.242
152.55.180.243机器可读列表/bot/ips.json
联系我们
对我们的流量有疑问,或希望我们修复某些问题? 联系我们。