방문 숫자가 무엇을 세는지부터 확인하기
초기 운영 때 글이 많지 않은데도 하루 방문 수가 100을 넘는 날이 있었다. 실제 독자인지 자동 수집 요청인지 구분하고 싶어 관리자 통계 화면을 만들고 Chart.js로 날짜별 변화를 표시했다. 당시 숫자는 운영 중 느낀 의문을 기록한 것이며, 현재 방문 규모나 개선 성과를 뜻하지 않는다.
처음에는 유입 주소와 기기 분류를 표시하는 데 집중했고 봇 필터를 후속 과제로 남겼다. 현재는 방문자 식별값·짧은 시간 중복 제거·봇 표시가 들어가 있어 초기 설명만으로 집계 기준을 이해하기 어렵다. 아래는 2026년 9월 21일 저장소의 처리 기준이다.
요청 한 건이 방문자 한 명은 아니다
VisitorLog는 요청 기록이고, 관리자 대시보드의 오늘·어제·전체 방문자 수는 그중 봇으로 표시되지 않은 기록에서 식별값 중복을 제거한 수치다. 브라우저 쿠키의 winj_visitor_id를 우선 사용하므로 IP가 같은 두 브라우저도 식별값이 다르면 별개로 셀 수 있다.
같은 방문자가 같은 경로를 30초 안에 다시 요청하면 로그를 중복 저장하지 않는다. 따라서 로그 건수도 모든 새로고침을 센 원시 페이지뷰와 같지 않다. 쿠키 삭제·다른 브라우저·다른 기기 사용은 새로운 방문자로 잡힐 수 있어 “실제 사람 수”라고 단정할 수 없다.
다음은 운영 통계가 아닌 집계 규칙을 이해하기 위한 가상 예시다. A와 B는 서로 다른 쿠키 식별값이다.
| 요청 | 저장 로그 변화 | 고유 방문자 변화 |
|---|---|---|
| A가 글 1 방문 | 1개 추가 | A 1명 |
| A가 10초 뒤 글 1 재방문 | 중복으로 추가 없음 | 그대로 1명 |
| A가 글 2 방문 | 다른 경로이므로 추가 | 그대로 1명 |
| 같은 IP의 B가 글 1 방문 | 다른 식별값이므로 추가 | 총 2명 |
날짜별 고유 방문자를 더한 값과 기간 전체의 고유 방문자도 다르다. A가 월요일과 화요일 모두 왔다면 일별 합계는 2지만 이틀 전체에서는 1이다. 그래프 합계와 전체 숫자가 다르다는 이유만으로 오류라고 판단해서는 안 된다.
어떤 요청을 빼고, 어떤 요청을 봇으로 표시하는가
현재 기록 대상은 GET·HEAD 요청이다. 관리자·정적 파일·미디어 등 제외 경로, 400 이상 오류 응답, 로그인한 staff의 요청은 제외한다. 최근 같은 IP의 로그가 많이 쌓인 경우에도 별도 제외 조건이 있다.
봇 여부는 User-Agent 문자열에서 bot, crawler, curl, python-requests 등의 표식을 찾는 방식이며, User-Agent가 비어 있어도 봇으로 분류한다. 봇 표시는 로그에 남길 수 있지만 일반 방문자 집계에서는 제외한다. 자동 요청이 일반 브라우저 문자열을 보내면 통과할 수 있고 정상 요청이 필터에 걸릴 수도 있다. 이 값은 분석 보조 분류이지 사람임을 증명하는 장치가 아니다.
통계가 갑자기 바뀌었을 때는 실제 유입 증가뿐 아니라 제외 경로·봇 규칙·쿠키 설정이 바뀌었는지도 함께 확인해야 한다. 필터 변경 전후의 숫자를 같은 조건으로 비교하지 않으면 성과를 과장하기 쉽다.
유입 경로와 기기는 추정 정보다
유입 분류 함수는 Referer의 호스트에서 Google·Naver 같은 검색엔진, 일부 AI 서비스와 SNS 문자열을 찾는다. 값이 없으면 직접 유입으로 묶는다. 하지만 링크를 클릭했더라도 정책에 따라 Referer가 생략되거나 일부만 전달될 수 있다. 그러므로 “직접”을 주소창 입력만으로 해석하지 않는다. MDN Referer 설명
현재 기기 분류는 iPad·tablet을 먼저 확인하고 iPhone·Android·mobile을 다음에 확인한다. 나머지는 Desktop, 빈 문자열은 알 수 없음으로 둔다. 태블릿이 모바일 문자열도 포함할 수 있어 검사 순서가 결과에 영향을 준다. 실제 기기 모델이나 화면 폭을 확인한 결과는 아니다.
유입 호스트의 부분 문자열 비교 역시 완전한 도메인 검증은 아니다. 이 결과를 로그인 허용·차단 같은 보안 판단에 사용하지 않는다. 통계 본문에는 실제 방문자의 IP·원문 로그를 공개할 필요도 없다.
과거 로그와 비교할 때 남아 있는 한계
식별값이 없는 이전 로그는 대체 기준으로 집계한다. 현재 전체 집계는 IP와 User-Agent 조합을 사용하지만 날짜별 집계의 대체 기준은 IP다. 이 차이 때문에 옛 데이터에서는 같은 날 같은 IP의 서로 다른 브라우저가 두 화면에서 다르게 계산될 수 있다. 과거 수치를 비교할 때 이 구간을 별도로 표시해야 하며, 이번 글 보강에서 실제 로그를 재집계하거나 삭제하지는 않았다.
통계 화면을 읽을 때는 기간, 중복 제거 단위, 봇 제외 여부, 옛 로그 포함 여부를 먼저 맞춘다. 이를 기록하면 단순 방문 숫자보다 해석 가능한 운영 자료가 된다. 관리자 화면의 접근 제한은 글쓰기 권한 기록에서 함께 다룬다.
댓글 0
로그인 없이 궁금한 점이나 의견을 남겨주세요.
아직 댓글이 없습니다. 첫 의견을 남겨주세요.