Cloudflare Bot Fight가 AdsBot을 막던 날
seominhyuk.com은 workers.dev와 달리 Managed Challenge만 보이던 문제. Bot Fight Mode를 끄고 AdsBot 200을 확인하기까지의 기록입니다.

증상은 단순했습니다. https://warpsense-blog.…workers.dev는 글이 잘 보이는데, https://seominhyuk.com만 열면 Just a moment...가 뜹니다. 브라우저에서는 잠깐 기다리면 넘어갈 수도 있지만, Googlebot·AdsBot은 그대로 403입니다.
처음엔 배포 실패인 줄 알았습니다. 그런데 ads.txt와 robots.txt는 AdsBot으로도 200이 나오고, 홈 HTML과 sitemap만 챌린지였습니다. Worker 설정(html_handling, assets) 문제가 아니라 존 보안 쪽이었습니다.
원인
Cloudflare API로 존 bot_management를 보면 대략 이런 값이었습니다.
fight_mode: trueenable_js: true
이게 무료 플랜의 Bot Fight Mode입니다. Managed Challenge(cf-mitigated: challenge)를 붙입니다. security_level이 medium이어도 HTML은 막힐 수 있고, 반대로 security_level만 essentially_off로 낮춰도 fight_mode가 켜져 있으면 챌린지가 남았습니다.
WAF Custom Rule로 Googlebot UA를 skip 하는 규칙을 넣어 봤습니다. Super Bot Fight 단계(http_request_sbfm) skip은 되지만, 무료 Bot Fight의 Managed Challenge는 그대로인 경우가 있었습니다. 결국 fight_mode를 false로 끄는 쪽이 확실했습니다.
한 일
- Zone Settings에서
security_level→essentially_off,browser_check→off PUT /zones/.../bot_management로fight_mode: false,enable_js: false- 캐시 purge
- 다시 curl
curl -sI -A "AdsBot-Google (+http://www.google.com/adsbot.html)" \
https://seominhyuk.com/
이후 홈, /about, /privacy, sitemap, 샘플 글이 200이 됐습니다. cf-mitigated 헤더도 사라졌습니다.
대시보드에서는 Security → Bots 에서 Bot Fight Mode를 끄면 같은 효과입니다. API 토큰에 Zone Settings / Bot Management 권한이 있어야 자동화할 수 있습니다. Workers만 배포 가능한 토큰으로는 안 바뀝니다.
검수 전에 남기는 습관
도메인만 붙이고 AdSense·Search Console로 바로 가지 않습니다. 최소한:
- AdsBot으로
/와/ads.txt - Googlebot으로
/sitemap-index.xml
을 봅니다. 텍스트 파일만 통과하고 HTML이 막히면, SEO 파일보다 챌린지를 의심합니다.
광고·검색 승인을 노리는 동안에는 Bot Fight를 다시 켜지 않는 편이 낫습니다. 나중에 켜야 한다면 Google 크롤러를 예외로 두는 규칙이 실제로 먹히는지, 끄기 전에 반드시 봇 UA로 재확인하세요.
이 장애를 겪고 나서야 Search Console 색인 요청 글의 “요청 버튼보다 접근성” 문장이 실감 났습니다. 배포 성공과 크롤 가능은 다른 문제입니다.