Cloudflare Bot protection 때문에 발생한 Mastodon 문제 세 가지
Source: Dev.to
Background
내 블로그에서 Mastodon의 세 가지 기능이 작동을 멈춘 것을 발견했습니다. 각각은 별개의 문제처럼 보였지만, 동일한 근본 원인을 공유하고 있었습니다. 아래에서 문제와 간단한 해결 방법을 설명합니다.
Domain verification
Mastodon은 도메인 소유권을 증명할 수 있게 해줍니다. 이 메커니즘은 두 단계가 필요합니다:
- 페이지에 “ 태그를 추가하고, 자신의 Mastodon 프로필을 가리키게 합니다.
- 웹사이트 URL을 Mastodon 프로필에 추가합니다.
Mastodon이 페이지를 크롤링해 백링크를 찾으면, 프로필에 있는 URL 옆에 초록색 체크 표시가 나타납니다.
나는 오래 전에 이 설정을 해두었고, 블로그와 GitHub 모두에서 정상적으로 동작했습니다. 하지만 나중에 블로그 링크는 작동을 멈추고, GitHub 링크는 여전히 정상 작동했습니다.
Link preview cards
Mastodon에 링크를 공유하면, 인스턴스가 페이지를 크롤링해 미리보기 카드를 생성합니다. 이때 페이지의 OpenGraph 태그(제목, 설명, 이미지)를 읽습니다.
내 블로그는 모든 올바른 태그를 가지고 있었지만, 공유한 모든 블로그 포스트는 카드 없이 일반 링크만 표시되었습니다. 흥미롭게도 같은 미리보기 이미지를 사용한 뉴스레터는 정상적으로 작동했습니다.
Author attribution
Mastodon 4.3에서 저자 표시 기능이 도입되었습니다. 페이지에 다음 메타 태그가 포함되어 있으면, 다른 사람이 링크를 공유할 때 Mastodon이 “By @author” 배지를 표시하고, 팔로워가 미리보기에서 바로 팔로우할 수 있게 합니다:
하지만 이 태그를 추가한 뒤로는 내 블로그에서 전혀 작동하지 않았습니다.
Common mechanism
세 가지 기능 모두 Mastodon 서버가 내 페이지를 크롤링해야 합니다. 문제는 각 경우마다 동일한 원인으로 밝혀졌습니다.
Root cause: Cloudflare Bot Fight Mode
내 블로그는 Cloudflare 뒤에서 운영되고 있었고, Bot Fight Mode를 활성화해 두었습니다. 이 기능은 의심스러운 자동 트래픽을 차단합니다. 서비스는 Cloudflare에 도메인을 등록해 좋은 행위자로 인식될 수 있습니다(예: Bluesky, Twitter).
Mastodon의 크롤러는 Hetzner 인프라에서 실행됩니다. Hetzner IP 주소는 Cloudflare 데이터베이스에서 위협 점수가 높게 평가되는데, 이는 봇 운영자들이 많이 사용하기 때문입니다. Mastodon 크롤러가 내 페이지를 가져오려 할 때, Cloudflare는 HTML 대신 JavaScript 챌린지를 반환했습니다. Mastodon의 http.rb 클라이언트는 JavaScript 챌린지를 해결할 수 없으므로 유용한 응답을 받지 못하고, 실패를 캐시한 뒤 진행했습니다.
Fix
Bot Fight Mode를 끄세요:
- Cloudflare 대시보드에 로그인합니다.
- Security > Bots 로 이동합니다.
- Bot Fight Mode를 비활성화합니다.
이를 끄면 세 가지 Mastodon 문제가 한 번에 해결됩니다. 공개 정적 블로그의 경우 Bot Fight Mode는 보호 효과가 거의 없으며, 정상적인 크롤러를 방해하는 문제가 있습니다.
Further reading
- Cloudflare Tunnels and Mastodon
- Bot protection is blocking valid bots
- Understanding Mastodon Preview Card Display Logic
Originally published at A Java Geek on April 26th, 2026.