SereneReader 봇
피드 페처가 하는 일, 자신을 식별하는 방법, 그리고 차단하는 방법.
SereneReader란
SereneReader는 피드 리더입니다. 누군가 RSS 또는 Atom 피드를 구독하면, 저희 서버가 대신 피드를 가져와 새 글을 보여줍니다.
미리보기 이미지를 표시하기 위해 각 글 페이지를 한 번씩 불러와 og:image 태그를 읽고, 사이드바에 사이트 파비콘도 가져옵니다.
User-Agent
저희 서버의 모든 요청은 다음 문자열로 자신을 식별합니다:
SereneReader/1.0 (+https://serenereader.com/bot)가져오는 항목
- 사람들이 구독한 피드 URL.
- 각 글 페이지를 한 번씩, 최대 1MB의 HTML을 읽어 og:image 태그를 찾습니다.
- 사이트 파비콘.
저희는 사이트를 크롤링하거나, 글 페이지의 링크를 따라가거나, 아무도 구독하지 않은 항목을 가져오지 않습니다.
갱신 빈도
피드는 일정에 따라 갱신됩니다. 서버가 ETag 또는 Last-Modified 헤더를 보내면, 다음 갱신 시 If-None-Match 또는 If-Modified-Since를 전송합니다. 변경이 없는 피드는 304 응답만 반환되며 본문은 전송되지 않습니다.
각 아티클 페이지는 미리보기 이미지를 위해 한 번만 가져옵니다. 페이지를 가져올 수 없는 경우 중단됩니다. 404와 같은 영구적인 오류는 30일간 기억되며, 타임아웃이나 서버 오류 같은 일시적인 오류는 백오프 방식으로 최대 세 번 재시도한 후 최소 한 시간 동안 요청하지 않습니다.
429 또는 503 응답은 요청을 줄이라는 신호입니다. 피드의 경우 다음 새로고침을 점진적으로 지연시키며, 429 응답 시에는 최소한 Retry-After 값만큼 대기합니다. 아티클 페이지의 경우 약 10분에 걸쳐 최대 세 번 재시도한 후, 최소 1시간 또는 Retry-After에서 요청한 시간(최대 7일)만큼 대기합니다.
robots.txt
기사 페이지나 파비콘을 가져오기 전에 robots.txt를 읽고, User-agent: SereneReader에 대한 Disallow 규칙과 crawl-delay를 따르며, 해당 항목이 없을 경우 * 그룹으로 대체합니다.
피드 URL은 다릅니다. 피드는 구독한 독자를 대신하여 가져오므로, Google의 Feedfetcher 방식과 동일하게 처리합니다. * 그룹의 Disallow 규칙은 피드에 적용되지 않습니다. 단, User-agent: SereneReader 그룹에서 피드 경로를 차단한 경우에는 그 규칙이 적용되며, 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 주소
예약된 피드 새로고침 및 미리보기 이미지 요청은 아래 정적 IP 주소에서 발생합니다. 누군가 처음 피드를 추가할 때 발생하는 일회성 요청은 웹 서버에서 이루어지므로 이 목록에 포함되지 않으며, IP 기반 허용 목록만으로는 해당 요청이 차단될 수 있습니다.
162.220.234.241
152.55.180.242
152.55.180.243기계 판독 가능 목록/bot/ips.json
문의
트래픽에 대한 질문이나 수정을 요청하고 싶은 사항이 있으신가요? 문의하기.