SereneReader 봇

피드 페처가 하는 일, 자신을 식별하는 방법, 그리고 차단하는 방법.

SereneReader란

SereneReader는 피드 리더입니다. 누군가 RSS 또는 Atom 피드를 구독하면, 저희 서버가 대신 피드를 가져와 새 글을 보여줍니다.

피드 항목에 이미지가 없을 경우, 미리보기 이미지를 위해 og:image 태그를 읽으러 해당 기사 페이지를 한 번 불러옵니다. 또한 사이드바용 사이트 아이콘도 가져옵니다.

User-Agent

저희 서버의 모든 요청은 다음 문자열로 자신을 식별합니다:

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

가져오는 항목

  • 사람들이 구독한 피드 URL.
  • 이미지가 없는 항목의 기사 페이지. 보통 각 페이지당 한 번씩, og:image 태그를 찾기 위해 최대 1MB의 HTML을 읽습니다.
  • 사이트 아이콘: 피드에 선언된 아이콘, /favicon.ico, /apple-touch-icon.png, 또는 /apple-touch-icon-precomposed.png.

저희는 사이트를 크롤링하거나 기사 페이지의 링크를 따라가지 않습니다. 구독 중인 피드 외에는, 로그인한 사용자가 Discover 카탈로그의 피드를 미리볼 때 저장된 기사가 없는 경우와 카탈로그에 피드를 추가하기 전 확인할 때만 피드를 가져옵니다.

갱신 빈도

피드는 일정에 따라 갱신됩니다. 서버가 ETag 또는 Last-Modified 헤더를 보내면, 다음 갱신 시 If-None-Match 또는 If-Modified-Since를 전송합니다. 변경이 없는 피드는 304 응답만 반환되며 본문은 전송되지 않습니다.

기사 페이지는 보통 미리보기 이미지를 위해 한 번만 가져옵니다. 404와 같은 영구 오류는 30일간 기억됩니다. 타임아웃이나 500 오류 같은 일시적 오류는 약 30초, 1분, 2분 간격으로 최대 세 번 재시도한 후, 최소 1시간 동안 해당 페이지를 건드리지 않습니다.

429 또는 503 응답은 요청을 늦추라는 신호입니다. 피드의 경우, 갱신에 실패할 때마다 다음 시도를 더 늦추며 15분부터 시작해 최대 하루까지 두 배씩 늘어납니다. 429의 경우 Retry-After 헤더가 요청한 시간 이상 대기합니다. 기사 페이지에서 429 또는 503은 일시적 오류로 처리되어 약 3분 30초 동안 최대 세 번 재시도합니다. 이후에는 Retry-After에서 지정한 시간(최대 7일)만큼 대기하며, 헤더가 없으면 7일간 대기합니다.

robots.txt

예약된 페처가 기사 페이지나 사이트 아이콘을 요청하기 전에 robots.txt를 읽고 User-agent: SereneReader 그룹의 Disallow 규칙과 crawl-delay를 따르며, 없을 경우 * 그룹으로 대체합니다. 누군가 피드를 처음 추가할 때 발생하는 아이콘 요청은 robots.txt를 확인하지 않습니다.

피드 URL은 다릅니다. 피드는 구독한 사용자를 대신해 가져오므로 Google의 Feedfetcher와 동일하게 처리합니다. * 그룹의 Disallow 규칙은 피드에 적용되지 않습니다. 피드 경로를 차단하는 User-agent: SereneReader 그룹은 누군가 피드를 처음 추가할 때도 포함해 계속 적용됩니다. 예약된 페처는 피드에 대해서도 crawl-delay를 따르며 요청 간격은 최대 60초입니다(더 긴 지연은 60초로 처리). 피드를 처음 추가할 때의 일회성 요청과 Discover 카탈로그 추가 전 확인은 crawl-delay를 기다리지 않습니다.

서버 오류로 robots.txt에 접근할 수 없는 경우, 가져오기를 허용하는 것으로 간주합니다. 구독은 독자의 명시적 동의이며, 불안정한 robots 파일이 피드를 차단해서는 안 됩니다.

차단하는 방법

서버나 방화벽에서 위의 User-Agent를 차단하거나 속도를 제한하거나, robots.txt에 해당 봇을 명시한 그룹으로 거부할 수 있습니다. 모든 봇에 적용되는 규칙은 피드 요청을 막지 않지만, 아래 규칙은 막습니다:

User-agent: SereneReader
Disallow: /

피드 URL을 차단하면 특정 독자뿐 아니라 해당 피드를 구독한 모든 사람의 갱신이 중단됩니다.

요청 서명

요청은 Web Bot Auth(HTTP 메시지 서명, RFC 9421)로 서명되어 있어 저희로부터 온 것임을 확인할 수 있습니다. 공개 키는 다음 주소에 게시되어 있습니다:

https://serenereader.com/.well-known/http-message-signatures-directory

발신 IP 주소

예약된 피드 갱신, Discover 미리보기, 미리보기 이미지 요청은 이 고정 주소에서 발생합니다. 일부 요청은 다른 주소에서 옵니다. 누군가 피드를 처음 추가할 때의 피드 확인 및 아이콘 요청은 웹 서버에서, Discover 카탈로그 추가 전 확인은 관리 도구에서 옵니다. 스테이징 환경도 동일한 User-Agent로 요청을 보냅니다. IP 주소만으로 허용 목록을 구성하면 이러한 요청이 차단됩니다.

162.220.234.241
152.55.180.242
152.55.180.243

기계 판독 가능 목록/bot/ips.json

문의

트래픽에 대한 질문이나 수정을 요청하고 싶은 사항이 있으신가요? 문의하기.