⚙️Backend

봇 트래픽에 무너진 방문자 분석, 교차 확인으로 실제 사용자 8% 잡아낸 백엔드 이야기

봇 트래픽 때문에 방문자 분석이 엉망이었던 경험, 교차 확인 기능으로 실제 사용자 8%를 잡아낸 백엔드 이야기.

📅 2026년 7월 29일·📖 4분 읽기·👁 1

봇 트래픽 때문에 방문자 분석이 엉망진창이었던 경험을 공유하려고 한다. 기존 시스템은 실제 사용자인지 봇인지 구분하는 데 한계가 있었고, 덕분에 분석 결과가 왜곡되는 일이 잦았다. 이 글에서 어떻게 이 문제를 해결했는지 이야기해보겠다.

시도와 함정

처음에는 간단하게 생각했다. 기존 분석 시스템에서 원시/참고 섹션을 제거하고 '실방문자' 기준으로만 통일하면 봇 트래픽을 걸러낼 수 있을 줄 알았다. 하지만 결과는 예상과 달랐다. 봇들은 여전히 시스템을 통과했고, 분석 결과는 여전히 부정확했다.

'dwell' 시간, 즉 사용자가 페이지에 머무는 시간만으로는 봇을 완벽하게 탐지하기 어렵다는 것을 깨달았다. 봇들도 일정 시간 동안 페이지에 머무르는 것처럼 보이게 만들 수 있었기 때문이다. 이 부분에서 3시간 정도를 삽질했던 것 같다.

# 기존 분석 로직 (가상)
def is_real_user(session_data):
    if session_data['bot_score'] > 0.8:
        return False
    if session_data['dwell_time'] < 10: # 10초 미만은 봇으로 간주
        return False
    return True

위와 같은 단순한 로직으로는 봇을 걸러내기 역부족이었다. 봇들은 dwell_time을 조작하거나, 의도적으로 10초 이상 머무르는 것처럼 보이게 할 수 있었다.

원인

결국 문제는 봇 트래픽을 탐지하는 로직이 너무 단일 지표에 의존하고 있었다는 점이었다. 'dwell' 시간만으로는 봇의 행동 패턴을 충분히 파악할 수 없었다. 봇은 실제 사용자와는 다른 방식으로 웹사이트를 탐색하기 때문이다.

해결

이 문제를 해결하기 위해 '교차 확인 방문자'라는 새로운 기능을 신설했다. 이 기능은 단순히 'dwell' 시간뿐만 아니라, 사용자가 한 세션 동안 얼마나 많은 페이지를 보는지(page_views)도 함께 분석에 반영한다. 'dwell' 시간과 page_views 간의 매칭률을 계산하여 봇 트래픽을 더 정교하게 탐지하도록 로직을 개선했다.

# 개선된 분석 로직
def is_real_user_enhanced(session_data):
    dwell_time = session_data['dwell_time']
    page_views = session_data['page_views']
    bot_score = session_data['bot_score'] # 기존 봇 스코어
# 봇 스코어가 높으면 일단 제외
if bot_score &gt; 0.7:
    return False

# dwell 시간과 page_views 간의 매칭률 계산
# 예: 10초당 1페이지 뷰 정도가 일반적이라고 가정
expected_page_views = dwell_time / 10
match_ratio = 1 - abs(page_views - expected_page_views) / max(1, expected_page_views)

# 매칭률이 일정 수준 이하이면 봇으로 간주
if match_ratio &lt; 0.5: # 50% 이하 매칭률은 봇으로 의심
    return False

return True

이 새로운 로직을 적용한 결과, 실제 사용자 비율이 분석에 반영되는 비율이 8% 증가했다. 이는 봇 트래픽 탐지 로직이 훨씬 강화되었음을 의미한다.

결과

  • 봇 트래픽 탐지 정확도가 향상되었습니다.
  • 실제 사용자 방문자 수치가 8% 증가했습니다.
  • 분석 결과의 신뢰도가 높아졌습니다.

정리 — 같은 함정 안 빠지려면

  • [ ] 방문자 분석 시 'dwell' 시간만으로 봇을 판단하지 말 것.
  • [ ] 'dwell' 시간과 페이지 뷰 수 간의 상관관계를 분석에 포함시킬 것.
  • [ ] 봇 트래픽 탐지 로직은 여러 지표를 교차 검증하는 방식으로 설계할 것.
  • [ ] 새로운 기능 추가 시, 기존 데이터와 비교하여 실제 효과를 검증할 것.

태그

#봇 트래픽#방문자 분석#백엔드 개발#데이터 분석#교차 확인#로그인#세션 관리