사이드바 영역으로 건너뛰기

나는 네가 어디에서 왔는지 알고 있다 - 리퍼러(Referer)

블로그 같은 1인 미디어를 갖고 계신 분들은 자신의 블로그에 들어갔을 때 어디를 제일 먼저 볼까요? 물론 사람마다 다르겠지만, 저 같은 경우 새로 쓴 포스트에 달린 댓글을 먼저 살펴봅니다. 그 다음에는 방명록에 새 글이 올라왔나 살펴보구요. 그런 다음 확인하는 것이 "접속 통계"입니다.

대부분의 1인 미디어 서비스들은 사용자의 페이지에 접속 통계를 제공합니다. 얼마나 많은 사람들이 자신의 페이지를 찾았는지, 그 사람들은 어떤 경로를 통해 내 페이지에 들어오게 되었는지 등의 정보를 요약해서 보여주는 것이 접속 통계 서비스입니다. 제 블로그는 하루에 100명도 채 안되는 방문자가 오고 있으며, 대부분 구글, 네이버, 다음 등의 검색 엔진을 통해 찾아오고 있다는 사실을 알 수 있는 것도 접속 통계 서비스 덕분이죠.

그럼 접속 통계는 어떤 데이터를 근거로 산출되는 것일까요? 이 중 일일 접속자 수 같은 통계는 구하기 쉽습니다. 가장 단순하게 생각하면 사용자가 페이지에 접속하는 순간 로그를 남기고 나중에 그 로그의 개수를 합치면 접속자 수가 나오게 되지요. 물론 블로그 주인이 접속했을 때에는 통계를 잡지 않는다던지, UV(Unique Visitor, 순방문자)를 측정한다던지 하는 것은 좀 더 고려해 봐야 할 문제이긴 하지만, 기본적으로 접속자 수 자체를 구하는 것은 특별한 정보가 없어도 접속하는 순간의 기록만 있으면 계산 가능합니다.

문제는 방문 경로를 구하는 것입니다. 블로그 사이트에서는 어떻게 방문자가 바로 이전에 어떤 사이트에 있었는지를 알 수 있을까요? 바로 리퍼러referer라는 정보가 있기 때문입니다. 방문자가 A 사이트에서 링크를 클릭하여 B 사이트로 이동하는 경우, 웹브라우저는 B 사이트에 페이지에 대한 요청을 보내면서 HTTP 헤더에 A사이트의 URL을 같이 실어 보냅니다. 이 URL을 리퍼러라고 부르며, 특정 사이트에서 사용자의 접속 경로를 추적하기 위해 심는 악성 코드 등과는 다른, HTTP 규약에 따른 정보입니다. B 사이트는 페이지 요청을 받음과 동시에 방문자가 있었던 이전 사이트를 좋건 싫건 자연스럽게 알 수밖에 없는데, 이 리퍼러 정보를 버리지 않고 적극적으로 활용하는 예가 바로 접속 통계 서비스라고 할 수 있겠습니다.

그럼 방문자는 방문하는 사이트마다 이전의 방문지를 남기게 되는 것일까요? 정확히 말하면 방문한 모든 사이트에 리퍼러가 남지는 않습니다. 리퍼러가 전송되기 위해서는 몇 가지 조건이 충족되어야 하는데, 이 중 가장 기본적인 조건은 링크를 클릭해서 이동한 경우에만 리퍼러가 남는다는 것입니다. 즉, 브라우저의 주소창에 직접 URL을 치고 들어간 사이트에는 이전에 특정 사이트에서 넘어갔다고 하더라도 리퍼러가 남지 않습니다. 같은 이유로 북마크(책갈피)를 클릭하고 들어간 사이트나 브라우저의 뒤로 가기 버튼이나 앞으로 가기 버튼을 누르고 이동한 경우에도 리퍼러가 제대로 남지를 않죠. 접속 통계에 리퍼러를 알 수 없다는 통계가 잡히는 경우가 많은데, 바로 리퍼러가 남지 않는 경우가 많기 때문입니다.

리퍼러가 남는 조건은 브라우저마다 차이를 보이기도 합니다. 예를 들면, 특정 버튼이나 링크를 클릭해서 팝업 창을 띄우는 경우, 인터넷 익스플로러 6의 경우 리퍼러가 남지 않는 반면 파이어폭스는 리퍼러를 남겨줍니다. 이는 리퍼러 정보를 서버에 보낼지 말지는 요청을 보내는 브라우저의 몫이기 때문에, 브라우저마다 경우에 따라 리퍼러를 넘기는 방식의 차이를 보이는 것이죠.

리퍼러를 사용하는 또 다른 예는 어뷰징abusing 체크 로직입니다. 어떤 게시판에 글을 쓰는 경우를 생각해 봅시다. 게시판에 글을 남기기 위해서 일단 편집기에 글을 쓴 다음, 이 글을 요청 파라미터에 넣어 서버에 저장하는 URL로 보내게 됩니다. 그런데 만약 글을 최종적으로 저장하는 URL을 어떤 방법으로 알게 되면, 편집기에 글을 쓰지 않고도 요청 파라미터에만 글 내용을 넣은 다음 그 URL로 요청을 보낼 수도 있습니다. 이 방법을 사용하면 편집기에서 글을 작성하는 과정 없이 단시간 내에 많은 양의 글을 쓸 수가 있습니다. 게시판이나 댓글 도배가 이런 방식으로 많이 이뤄지는데, 이는 시스템을 악용하는 행위라 하여 어뷰징이라 합니다. 이런 경우 이전 페이지가 편집기의 URL인 경우에만 글을 저장하도록 체크하는 로적을 넣는다면, 글을 저장하는 URL로 바로 요청을 보내는 경우를 차단할 수 있습니다. 이를 리퍼러 체크라고 하는데, 가장 기초적인 어뷰징 방지법으로 많이 사용되고 있죠.

리퍼러는 사용자에게 도움이 되는 정보로 집계될 수도 있고, 어뷰징을 방지함으로써 시스템의 안정성을 향상시키는 데 사용되기도 합니다. 하지만 이를 악용하는 사례도 많이 볼 수 있는데요, 대표적인 것이 리퍼러 스팸입니다. 블로거들이 자신의 블로그를 찾아온 경로에 관심이 많단 사실을 알게된 스패머들은 블로그를 방문하면서 홍보할 사이트를 리퍼러로 남겨 놓습니다. 블로거는 호기심에 그 사이트에 들어가 보면 스패머들은 소기의 목적을 달성하게 되는 셈이죠. 나날이 진보하는 스팸 방식을 보면, 참 광고쟁이들의 상상력은 정말 끝이 없는 것 같단 생각이 드네요~
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크