SereneReader Bot

我们的抓取器做什么、如何标识自身,以及如何将其拒之门外。

SereneReader 是什么

SereneReader 是一款 Feed 阅读器。当有人订阅您的 RSS 或 Atom Feed 时,我们的服务器会代其抓取内容,并向其展示新文章。

当订阅源条目没有图片时,我们会抓取一次文章页面,读取其 og:image 标签作为预览图。我们也会获取您网站的图标用于侧边栏显示。

User-Agent

我们服务器的每次请求均以如下字符串标识自身:

SereneReader/1.0 (+https://serenereader.com/bot)

我们抓取的内容

  • 用户已订阅的 Feed 地址。
  • 用于无图片条目的文章页面,通常每篇抓取一次,最多读取 1 MB 的 HTML 以查找 og:image 标签。
  • 您网站的图标:来自订阅源声明的图标、/favicon.ico、/apple-touch-icon.png 或 /apple-touch-icon-precomposed.png。

我们不爬取网站,也不跟踪文章页面中的链接。除已订阅的订阅源外,仅在已登录的读者预览发现目录中的订阅源且我们尚无其文章存档时,以及在将订阅源添加到目录前进行检查时,才会抓取相应内容。

抓取频率

订阅源按计划定时刷新。若您的服务器返回 ETag 或 Last-Modified 响应头,下次刷新时将携带 If-None-Match 或 If-Modified-Since,内容未变则仅返回 304,无需传输正文。

我们通常对每篇文章页面只抓取一次以获取预览图。404 等永久性失败会被记录 30 天。超时或 500 错误等临时性失败会重试最多三次,间隔约 30 秒、1 分钟和 2 分钟,之后该页面至少搁置一小时。

收到 429 或 503 时,我们会主动降低频率。对于订阅源,每次刷新失败都会推迟下次尝试,从 15 分钟起步,逐倍延长至最多一天;收到 429 时还会参照您的 Retry-After 标头等待相应时长(或更长)。对于文章页面,429 或 503 视为临时失败,可能在约三分半钟内重试最多三次,之后按 Retry-After 指定的时长等待(最长七天),若无该标头则等待七天。

robots.txt

在我们的定时抓取程序请求文章页面或网站图标之前,会读取您的 robots.txt,并遵循 User-agent: SereneReader 的 Disallow 规则和 crawl-delay,缺省时回退到 * 分组。首次添加订阅源时的图标请求不检查 robots.txt。

订阅源 URL 的处理方式有所不同。抓取订阅源是代表已订阅的读者进行的,因此我们与 Google Feedfetcher 的处理方式相同:* 分组的 Disallow 规则不适用于订阅源。若 User-agent: SereneReader 分组明确禁止了订阅源路径,则仍会遵守,包括首次添加订阅源时。我们的定时抓取程序也会遵守订阅源的 crawl-delay,每次请求之间最多等待 60 秒(超过此值的延迟视为 60 秒)。首次添加订阅源时的一次性抓取,以及将订阅源添加到发现目录前的检查,不受 crawl-delay 约束。

若因服务器错误导致 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 地址

定时订阅源刷新、发现目录预览及预览图抓取均来自以下固定地址。部分请求来自其他地址:首次添加订阅源时的订阅源检查和图标获取来自我们的 Web 服务器,将订阅源添加到发现目录前的检查来自我们的管理工具,我们的预发布环境也会发送使用相同 User-Agent 的请求。仅凭 IP 白名单将拒绝这些请求。

162.220.234.241
152.55.180.242
152.55.180.243

机器可读列表/bot/ips.json

联系我们

对我们的流量有疑问,或希望我们修复某些问题? 联系我们。