크롤러를 오래 운영해본 사람이라면 누구나 눈치챈다. 같은 작업, 같은 사이트, 같은 코드인데도 어떤 날은 실패율이 더 높다. 화요일은 괜찮다. 토요일은 더 나쁘다. 11월 마지막 주는 완전히 다른 세계다. 이를 단순한 잡음으로 치부하고 싶어지지만, 대개는 그렇지 않다.
정직하게 말하자면, 크롤러 차단율을 요일별이나 공휴일별로 측정한 공개 데이터셋은 존재하지 않는다. 봇 차단에 관한 가장 최근의 대규모 연구인 밤베르크 대학교의 2026년 연구는 2026년 초 나흘간 단발성 스캔이었으며, 시간에 따른 차단 변화를 보여주지 않는다. 실제로 존재하는 것은 차단율을 움직이는 요인들에 관한 상당한 양의 데이터다. 인간 트래픽이 변할 때 봇 트래픽 비중이 어떻게 움직이는지, 성수기 이벤트 때 방어 체계에 무슨 일이 일어나는지, 그리고 그 방어 체계를 바꾸는 사람들이 언제 변경을 멈추는지 같은 것들이다. 이를 종합하면 크롤러 운영자들이 목격하는 현상 대부분이 설명된다.
핵심 요약
- 요일별 또는 공휴일별 크롤러 차단율을 측정한 공개 자료는 없다. 누군가 그런 수치를 인용한다면 방법론을 물어봐야 한다.
- 인간 트래픽이 줄어들면 봇 비중은 올라간다. Cloudflare는 주말에 전체 트래픽이 약 4% 감소하는 반면, 검증된 봇 트래픽은 약 1%만 감소한다고 측정했다.
- 성수기 쇼핑 이벤트는 더 많은 봇과 더 강한 방어를 불러온다. Imperva는 연중 평균 22.7%에 비해 성수기 소매 트래픽에서 악성 봇이 26.3%를 차지한다고 측정했다.
- 최악의 봇 발생일이 항상 유명한 날은 아니다. Queue-it의 소매 표본에서는 블랙 프라이데이가 아닌 2024년 12월 11일에 비인간 트래픽이 방문의 83%에 달했다.
- 변경 동결은 성수기와 연말 전후에 문서화된 관행이므로, 방어 체계는 대개 그 기간 중이 아니라 전후에 바뀐다.
달력이 애초에 차단율을 움직이는 이유
요청을 차단할지 도전 과제를 부여할지 결정하는 사이트는, 대부분의 현대적 구성에서 현재 트래픽을 기준으로 판단을 내린다. 달력상의 세 가지 요소가 이 판단을 바꾼다.
- 트래픽 구성. 인간이 빠져나가면 남은 자동화 트래픽이 전체에서 차지하는 비중이 커지고, 이 비중이야말로 방어자와 모델을 경계하게 만드는 요인인 경우가 많다.
- 위험 부담. 세일 당일이나 티켓 발매일에는 사이트가 스캘퍼, 크리덴셜 스터핑, 재고 매점을 훨씬 더 경계하며, 이를 막기 위해 더 많은 마찰을 감수한다.
- 사람. 규칙은 팀이 작성하고 조정하는데, 이 팀들도 가장 중요한 시기에 휴가를 가고 변경을 동결한다.
각각에 근거가 있다.
주말: 인간은 떠나고, 봇은 대체로 남는다
인간의 인터넷 트래픽에는 뚜렷한 주간 리듬이 있다. 영국 통계청(ONS) 데이터 사이언스 캠퍼스가 런던 인터넷 익스체인지의 트래픽을 분석한 결과 “주말에는 트래픽이 낮아지는 경향이 있고 주중일수록 트래픽이 가장 많다”고 나타났으며, 공휴일 주변의 트래픽은 평균적으로 약 7.8% 낮고, 크리스마스 기간은 더욱 낮았다.
자동화된 트래픽은 더 꾸준하다. Cloudflare가 2020년 1월부터 7월까지를 분석한 결과, 평일에는 평균보다 약간 높은 수준을 보이는 반면 주말에는 “전체 트래픽이 약 4% 감소”하는 패턴이 나타났는데, 이는 “검증된 봇에는 완전히 적용되지 않으며, 이 경우 겨우 1% 정도만 감소한다”고 밝혔다. 같은 분석에서 인간 트래픽은 UTC 자정부터 05:00 사이에 약 15% 낮았고, UTC 14:00에서 17:00 사이에는 최대 25% 높았다.
사이트의 자동화 트래픽이 꾸준히 유지되는 동안 인간 트래픽이 줄어들면, 자동화 비중은 올라가고, 개별 자동화 요청이 이례적으로 보일 가능성도 커진다. 이것이 주말과 야간에 차단율이 나빠지는 가장 그럴듯한 메커니즘이며, 스케줄 없이 꾸준히 진행되는 크롤링이 화요일보다 일요일에 더 눈에 띄는 이유이기도 하다.
주목할 만한 반례도 있다. Integral Ad Science가 391일간 광고 노출에서 봇 트래픽을 측정한 결과, 자신들이 추적한 봇에 대해서는 정반대 패턴이 나타났다. 평일 봇 트래픽이 주말보다 약 21.2% 높았던 반면, 인간 트래픽은 이 차이가 6.9%에 불과했다. 모든 자동화가 꾸준한 것은 아니다. 인간의 스케줄을 모방하는 사기 작업은 크롤러와 다르게 움직이며, 사이트의 방어 체계는 이 모든 것을 동시에 마주한다. 자체 차단율에 대한 주간 효과는 대상별로 실증적으로 확인해야 할 문제다.
성수기 이벤트: 더 많은 봇, 더 많은 마찰
쇼핑 시즌 달력은 문제의 양면을 모두 집중시킨다.
| 결과 | 출처 |
|---|---|
| 2023년 성수기 소매 트래픽에서 악성 봇이 26.3%를 차지했으며(연중 평균 22.7%), 계정 탈취 공격은 블랙 프라이데이에 85% 증가 | Imperva, 2023년 11월 |
| 2024년 블랙 프라이데이에는 전자상거래 트래픽 중 봇이 최대 19%, 인간이 81%를 차지했으며, 봇은 로그인 시도의 63%를 차지해 한 달 전보다 소폭 감소(인간 로그인 증가에 따른 것) | Cloudflare, 2024년 12월 |
| 2025년 사이버 파이브 기간 동안 요청의 28%가 봇 또는 데이터센터에서 발생(2024년 36%에서 감소), 의심스러운 방문자의 97%가 챌린지에 실패 | Queue-it, 소매업체 138곳, 2025년 12월 |
| 2024년 시즌 동안 방문의 46%가 봇 또는 데이터센터 트래픽으로 분류됨, 최악의 날은 12월 11일로 83% | Queue-it, 2024년 12월 |
| 2025년 표본의 소매업체들은 787개의 대기실을 배치했으며 시즌 동안 2,000회 이상 활성화 | Queue-it, 2025년 12월 |
두 가지 세부 사항이 주목할 만하다. 첫째, Cloudflare의 수치는 가장 큰 날에는 인간 트래픽 증가가 오히려 봇 비중을 희석시킬 수 있음을 보여준다. 인간이 훨씬 더 많은 수로 몰리기 때문이다. 성수기 정점이 반드시 자동화 비중이 가장 나빠 보이는 날은 아니다. 둘째, Queue-it의 수치는 비인간 트래픽 최악의 날이 블랙 프라이데이가 아니라 12월 중순에 발생했음을 보여준다. 알려진 이벤트를 대비해 방어를 강화한 사이트는 그 강도를 몇 주 동안 유지할 수 있다.
실무적으로는, 소매업, 티켓팅, 여행 분야를 대상으로 하는 크롤러라면 11월 중순부터 12월까지, 자체 행동과 무관하게 더 많은 챌린지, 더 많은 대기실, 더 낮은 허용치를 예상해야 한다.
공휴일: 조용해지고, 때로는 잦아든다
공휴일은 양방향으로 작용한다. 인간 트래픽이 줄어든다. Cloudflare는 2023년 추수감사절의 미국 트래픽이 전주보다 약 10% 낮았다고 측정했다. 그리고 일부 공격 트래픽도 마찬가지로 줄어드는 것으로 보인다. 같은 분석에서 추수감사절은 그 달 중 “미국을 겨냥한 DDoS 공격으로 분류된 트래픽 비율이 가장 낮은” 날이었다.
크롤러 입장에서 대상 국가의 공휴일은 인간 트래픽 감소(자동화 비중 상승)와 방어 측 인력 감소가 결합된 상황이다. 차단율에 미치는 순 효과는 대상에 따라 다르다. 일관된 것은 공휴일이 지역적이라는 점이다. 한 나라의 화요일이 다른 나라에서는 공휴일이며, 이는 전 세계적으로가 아니라 대상별, 시장별로 측정해야 할 또 하나의 이유다.
변경 동결: 방어 체계가 멈추는 시점
규칙은 사람이 바꿀 때 바뀌며, 사람들은 예측 가능한 시점에 변경을 동결한다. 이는 민담이 아니라 문서화된 관행이다.
- Shopify 엔지니어링 팀은 “BFCM 몇 주 전에 시작”하는 기능 동결과, 행사 며칠 전부터 행사 기간까지 “긴급 수정만 배포할 수 있는” 코드 동결에 대해 설명했다.
- GitLab은 프로덕션 변경 잠금을 “주요 공휴일 등 팀 가용성이 줄어드는 기간 동안 프로덕션 변경을 완전히 중단하는 것”으로 정의한다.
- Cloudflare의 WAF 관리형 규칙은 “일반적으로 월요일 또는 화요일(공휴일에 따라 조정)에 이루어지는 7일 배포 주기”를 따른다.
이러한 동결로 인해 성수기는 일단 시작되면 묘하게 안정적이다. 방어는 몇 주 전에 강화된 후 대체로 그대로 유지된다. 그리고 1월은 변화의 계절이 된다. 연휴 동안 미뤄졌던 규칙이 팀이 복귀하면서 배포되는데, 이때가 바로 12월 내내 잘 작동하던 크롤러가 아무런 자체 변화 없이 갑자기 망가지는 시점이다.
자신의 달력을 측정하라
대상에 대한 답을 주는 공개 데이터셋이 없는 이상, 유일하게 믿을 만한 답은 자신의 로그다. 방법은 단순하다. 대상별, 요일 및 시간별(대상의 현지 시간대 기준)로 차단율을 계산하고, 각 구간을 해당 대상의 전체 비율과 비교한다.
from collections import defaultdict
from datetime import datetime
def block_rate_by_slot(rows, tz=None, min_requests=50):
"""rows: (target, iso_timestamp, blocked). Block rate per target, weekday and hour."""
counts = defaultdict(lambda: [0, 0])
for target, ts, blocked in rows:
t = datetime.fromisoformat(ts)
if tz is not None:
t = t.astimezone(tz)
slot = (target, t.strftime("%a"), t.hour)
counts[slot][0] += 1
counts[slot][1] += int(blocked)
return {
slot: round(b / n, 3)
for slot, (n, b) in counts.items()
if n >= min_requests
}
챌린지 페이지가 성공 상태 코드로 제공되더라도 여전히 거부이므로, 소프트 차단도 오류 코드뿐 아니라 차단으로 집계해야 한다. 침묵 실패율에서 이를 탐지하는 방법을 다룬다. 결론을 내리기 전에 최소 몇 주 분량의 이력을 확보하고, 알려진 이벤트와 현지 공휴일을 표시해두어 최악의 블랙 프라이데이 하루가 모든 금요일에 대한 모델이 되지 않도록 해야 한다.
이에 맞춘 스케줄링
대상의 달력을 파악하고 나면, 자연스럽게 몇 가지 조정이 뒤따른다.
- 요일별이 아니라 요일 대비 기준선을 잡아라. 토요일을 평일 평균과 비교하는 상태 점수는 매 주말마다 잘못된 경보를 울릴 것이다. 같은 것끼리 비교하라. 이는 대상 상태 점수 구축하기에서 설명한 방식이다.
- 유연한 작업은 좋은 시간대로 옮겨라. 특정 날짜에 실행할 필요가 없는 새로고침 작업은 대상의 허용치가 가장 높은 시간과 요일로 옮길 수 있다. 비용 인식 크롤링 스케줄링은 이미 각 방문을 비용으로 가중치를 두는데, 예상 차단율이 높아지는 것도 곧 비용 상승이다.
- 대상의 정점 시기에는 속도를 늦춰라. 최대 세일 기간의 소매업체는 실제 부하 아래 실제 고객을 보호하고 있는 것이다. 알려진 이벤트 기간 동안 동시성을 낮추고 간격을 늘리는 것은 예의이자 현명한 판단이며, 백프레셔는 차단율이 상승할 때 이를 자동으로 수행해야 한다.
- 1월을 주시하라. 동결이 풀리면서 방어 체계가 바뀔 것을 예상하고, 몇 주가 아니라 몇 시간 내에 알아챌 수 있도록 카나리아를 계속 운영하라.
- 시장 고유의 시간대와 관점에서 수집하라. 공휴일과 일상 리듬은 지역적이며, 사이트가 제공하는 내용 역시 마찬가지다. Shifter의 게이트웨이에 있는
country-de와 같은 국가 타겟 레지덴셜 출구는 크롤러가 독일 공휴일에 독일 방문자가 보는 것처럼 독일 사이트를 볼 수 있게 해준다.
결론
차단율은 이해할 수 있는 이유로 달력에 따라 움직인다. 자동화 트래픽은 인간 트래픽보다 더 꾸준하기 때문에 사람들이 접속을 끊으면 그 비중이 올라간다. 성수기 이벤트는 몇 주에 걸쳐 더 많은 봇과 더 강한 방어를 불러온다. 그리고 그 방어를 담당하는 팀들은 가장 바쁜 기간 동안 변경을 동결했다가 그 이후에 재개한다. 이 중 어느 것도 공개 데이터셋에서 크롤러에 대해 직접 측정된 바는 없으며, 증거가 균일하지도 않다. 일부 봇 트래픽은 인간의 스케줄을 밀접하게 따르기도 한다.
그렇기에 이 달력 문제는 각 팀이 자신의 데이터로 답해야 하는 질문이 된다. 차단율을 대상별, 요일별, 시간별로 분석하고, 공휴일과 세일 이벤트를 표시한 후 그에 맞춰 스케줄을 조정하라. 발견하게 될 패턴은 대상마다 고유할 것이며, 어떤 전역 평균보다도 훨씬 더 유용할 것이다.
출처 및 참고자료
- Gundelach, Mühlhauser and Herrmann, Detecting Bot Detection, arXiv, 12 June 2026. Scans 27 February to 2 March 2026.
- Cloudflare, Bot Attack trends for Jan-Jul 2020, 20 October 2020.
- Phil Stubbings, ONS Data Science Campus, Detecting collective human behaviour in internet traffic volume data, 18 July 2019.
- Integral Ad Science, How Does Bot Traffic Vary Over Time?, 18 December 2023.
- Imperva, Five Observations from 2023 Black Friday and Cyber Monday, November 2023.
- Adam Martinetti, Cloudflare, Grinch Bots strike again, 23 December 2024.
- Queue-it, 2025 Holiday Shopping Stats, 24 December 2025, and 2024 Holiday Shopping Stats, 24 December 2024.
- João Tomé, Cloudflare, Do hackers eat turkey?, 24 November 2023.
- Camilo Lopez, Shopify Engineering, Preparing Shopify for Black Friday and Cyber Monday, 21 December 2018.
- GitLab, Dedicated maintenance. Production change locks.
- Cloudflare, WAF changelog. Managed rules release cycle.