** 본 포스팅은 2009년 3월 19/20일에 있었던 MBC의 100분토론 '공권력과 인권'에서 잠시 다루었던 다음 아고라의 특정게시판/게시물의 조회수 조작에 대한 소고, 및 이런 조회수 조작 어뷰징에 대한 기술적인 이야기만을 다룹니다. 일반 어뷰징, 특히 스팸,에 대한 내용은 아닙니다.
** 본 포스팅에서 제시한 내용들은 특정 업체에서 사용중인 방법에 대한 설명이 아닙니다. 대부분 상식적인 수준에서 추론된 내용이므로, 각 회사에서 실제 운영중인 방법이 아님을 미리 밝힙니다. 단순 참고용 설명이므로 오해가 없으시길 바랍니다.

 서론
 몇 일전에 경찰에서 다음 아고라의 특정 게시물의 조회수를 비정상적으로 높인 네티즌 3명을 인터넷 여론조작 협의로 압수수색을 단행했다는 기사가 나왔다 (관련 기사들). 그리고 어제/오늘 100분토론에서 고 장자연씨와 관련된 연예계의 비리/이면에 대한 충분한 준비가 되지 못한 상태여서, 위의 경찰의 과잉 선재 대응에 대해서 적법한 공권력의 투입인가 아니면 일반 국민들의 표현의 자유를 침해하는 인권유린인가에 대한 토론으로 주제를 급하게 바꾸었다. 토론의 도입부를 제대로 지켜보지 못했지만, 위의 인위적 조회수 조작에 대한 기술적인 내용을 좀 다룬 것같아서, 이와 관련된 몇 가지 이야기를 다루려고 한다.

 조회수 조작 방법
 특정 게시물의 조회수를 높인다는 의미는 일반인들에게 그 게시물이 많은 사람들의 관심을 받고 있는 거구나라는 착각을 일으킬 염려는 충분히 있다. 지난 SURS 포스팅에서 다룬 암묵적 추천의 한 형태로 조회수를 들 수가 있다. 그런 의미에서 조회수를 높인다는 행위는 어떻게 보면 기만행위일 수도 있다. 그렇지만, 본인의 다른 블로그한 포스팅에서 인위적으로 조회수를 높이는 행위는 역으로 글의 품질/랭킹요소를 낮출 수도 있음을 밝혔다. 즉, 게시물의 랭킹 모델에서 추천수, 조회수, 댓글수와 같은 숫자들이 높게 나오면 당연히 좋은/관심있는 게시물로 인정을 받을 수가 있지만, 전체 조회수에 대한 추천수의 비율과 같은 조회수 조작에 따른 상쇄효과도 있음을 밝혔다. 즉, 추천수가 증가하지 않는 단순한 조회수 증가는 글의 신뢰성에 상당한 침해를 받을 수가 있다는 요지이다. 어쨌던, 조회수 조작에 따른 효과 여부 (예, 여론조작여부, 다음에 대한 업무방해여부, 또는 표현의 자유여부) 등에 대해서는 다른 각계각층에서 다양한 의견을 개진할 것으로 보이니, 본 포스팅에서 더 깊이 다룰 필요도 없고 본인은 그런 능력도 없다. 그래서 본론인 어떻게 조회수를 조작하는가로 넘어가겠다.
 조회수 조작의 방법은 간단하고 저렴한 것에서부터 복잡한 것에 이르기까지 다양하다. 가장 간단한 조회수 조작의 방법은 게시판의 글목록에서 해당 글을 계속 클릭해서 들어가는 것이다. 이런 조작에 들어가는 시간과 노력에 비하면 효과가 적을 수가 있는 원시적인 조회수 조작방법이 아닐까 생각한다. 여기에서 조금 진화한 모델이 가족/친구 등의 지인들을 동원해서 게시물을 계속 조회하는 방법이 있겠지만, 이는 단순히 참여 인원을 증가시킨 것 외에 특별할 것은 없는 것같다. 좀 더 진화를 한다면 해당 게시물에 대한 URL을 낚시성으로 메일을 보낸다거나 다른 게시판들에 도배를 해서 일반인들이 접속하도록 유도하는 방법도 있겠다. 두번째로 생각할 수 있는 방법은, 100분토론에서도 언급되었지만 현재 페이지에서 F5키를 눌러서 계속 reloading/refreshing을 시켜서 조회수를 높이는 방법도 있다. 보통 오락기의 버튼을 계속 누르고 있으면 연사기능이 작용하는 것과 같은 원리이다. 손으로 계속 누르고 있거나 동전을 키보드에 끼워넣는다거나 아니면 단순히 무거운 물건을 키보드에 올려놓는다거나 등의 기술적인 방법은 다양할 것이다. 이런 경우 보통 조회수 로그에 일정한 패턴 (시간간격)으로 기록이 남기 때문에 조작여부를 쉽게 판단 및 방어할 수 있을 것이다. (그러나 뒤에서 말하겠지만 개념적으로 쉽게 적발가능하지만, 기술적으로 어려운 점이 있다.) 그리고, 마지막으로 가장 진보된 형태는 조회수 조작 프로그램 또는 로봇을 사용하는 방법이다. 프로그램의 작동원리는 사람들이 해당 게시물을 계속 조회한다거나 리로딩시키는 방법과 특별히 다를 것은 없다. 단지 기계가 해당 페이지를 접속한다는 점만을 제외한다면. 그리고, 이런 프로그램들의 경우 조회 간격 (시간텀)을 임의로 조절할 수 있기 때문에, 수동적인 단순 리로딩보다는 찾아내기가 어렵다. (물론 불가능하다는 것은 아니다.) 이런 조작 프로그램을 이용하는 경우에 특히 문제가 되는 것은 좀비PC와 결합될 때이다. 좀비PC란 일반 컴퓨터들이 바이러스 또는 봇에 감염되어 사용자들이 사용하지 않는 휴면 상태에서 원격컴퓨터에 의해서 제어되어 마치 좀비와 같이 행동한다고 붙여진 이름이다. (나쁜 의미에서 좀비PC로 불리지만, 학계/연구 분야에서는 중앙집중식의 슈퍼컴퓨터를 대체시키는 분산/그리드 컴퓨팅 Distributed/Grid Computing의 한 형태로 많은 연구가 이루어지고 있는 분야이다.) 좀비PC들에 의해서 분산 공격을 받는다면 조회수 조작의 파급력도 커질 뿐만 아니라, 특정 IP에서의 공격이 아니기 때문에 조작을 적발하기가 더 어려워진다. (일반적으로 DDoS로 알려진 기술과 유사점을 보인다.)

 어떻게 조회수 조작을 적발할 것인가?
 조회수 조작이 위와 같이 간단하듯이, 역으로 조회수 조작을 적발하는 것도 간단하다. 즉, 특정 위치 (IP 등으로 추적)에서 특정 게시물을 상식 외로 많이 조회하는 경우를 조회수 조작으로 협의지으면 되는 것이다. 특히 조회의 간격 (시간텀)이 거의 일정하다는 추가적인 정보가 있다면 거의 확실한 물증이다. 또는, 평소와 달리 특정시간대에 특히 많은 조회가 몰렸다면 이런 경우도 조회수 조작으로 의심을 가질 수 있다. 특히 좀비PC와 봇에 의한 조작의 경우 접속IP와 시간텀이 다양하기 때문에 앞서 제시한 방법으로 쉽게 찾아낼 수가 없다. 뿐만 아니라 최근에는 사용자들의 IP 등을 임의로 변경해주는 프로그램 또는 업체들이 있기 때문에 상식선에서 조회수 조작을 찾아내기가 더욱 힘들어진다. 그래서 특정시간대에 비정상적으로 많은 조회가 이루어진다면 이런 경우에 한해서 조회수 조작을 의심할 수가 있다. 그러나 프로그램을 사용하는 경우, 접속/조회시간을 랜덤하게 변경하고 그 간격을 넓게 잡을 수 있기 때문에 이 방법에도 분명 한계가 있다. (그러나, 시간 간격을 넓게 잡는다면 조회수 조작의 효과가 없을테니...) 접속지역 (IP 등)도 속이고 접속방법도 속이고 접속시간간격도 속이는 등의 지능화된 조회수 조작이라면... 쉽게 찾기는 어려울 듯하다. 물론, 지난 몇일, 몇주, 몇달, 심지어 몇년 간의 누적 데이터를 분석한다면 전혀 불가능한 일은 아니지만, 뒤에서도 다루겠지만 실효성이 많이 떨어질 것이다.

 조회수의 기록
 위에서 말한 조회수의 조작을 찾아내기 위해서는 사용자들의 접속/조회에 대한 기록을 남겨둬야지 가능하다. 보통 로그 Log라는 파일의 형태로 사용자들의 행동 패턴이 기록에 남는다. 특히 Apache 웹서버를 사용하는 경우, 기본적으로 apache log가 서버에 남게 된다. 그렇지만 apache log는 가장 기본적인 최소한의 로그만을 남겨놓기 때문에 향후에 활용성이 많이 떨어지는 면이 있다. 이런 파일 형태 뿐만 아니라, 서비스의 시간을 줄이기 위해서 DB에 다양한 정보를 남기는 경우도 많이 있다. 파일형태의 로그의 경우 로그를 파싱해서 유용한 정보 (예, 특정인에 의한 조회수)를 찾아내는데 시간과 비용이 많이 들어가지면, DB형태의 로그는 구조화되어있을 뿐만 아니라 DB에서 제공해주는 다양한 집계 기능으로 유용한 정보를 쉽게, 그리고 빠르게 얻어낼 수 있는 장점이 있다. 그런데, DB라는 것이 모든 정보를 무한정으로 쌓아둘 수는 없다. 파일로그보다 더 많은 디스크 공간을 차지할 뿐만 아니라, 지나치게 큰 정보 (많은 columns)를 많이 (많은 rows) 가지고 있다면 DB의 퍼포먼스를 떨어뜨려서 처음에 가졌던 DB의 장점을 상쇄시키게 된다. 그런 점에서 현재 많은 회사/서비스들에서 실시간 서비스를 위해서 모든 접속/조회 정보를 DB에 누적해서 다시 조회/가공하는 방법은 그리 많이 사용하고 있지 않는다. 대신에, DB에서는 조회에 대한 메타정보만 기록을 하고 상세정보는 파일로그에 남기는 하이브리드 형태로 운영하는 경우가 많다. 예를 들어, 특정 게시물에 누군가가 접속/조회를 하면 view_cnt와 같은 변수의 값을 +1씩 증가시켜서 DB에 기록을 남겨두고, 그 사람의 접속기록 (접속 IP, 접속시간, referer 등)의 상세기록은 파일로 차곡차곡 쌓아두는 방법을 취하게 된다. 이렇게 되면, 실시간 서비스에서는 특정 게시물의 조회수 등을 빠르게 보여주고, 문제가 될 때만 파일로그의 상세 정보를 검사해보면 된다. 이런 하이브리드 형태의 로깅 운영의 부작용으로는, 특히 조회수 조작이라는 측면에서, 누가 언제 몇 번 조회/접속했는지에 대한 정보를 실시간으로 감시하기 어렵다는 점이다. 이런 측면에서 업체들에서 (실시간) 죄회수 조작을 막는 것이 거의 불가능하다고 주장하고 있다. 물론, 또다른 형태의 하이브리드 방법을 도입해서 적발/방어가 충분히 가능하지만 더 많은 비용이 소요되기 때문에 어려움이 있을 따름이다. 즉, 조회메타정보에 대한 DB와 상세한 파일로그와 함께, 상세한 조회정보를 DB에 한시적으로만 저장해두는 방법이 있다. 추측건데, 많은 업체들이 조회수 조작이라는 부작용 때문에 이런 형태로 실시간 대응 전략을 세웠으리라 본다. ... 이 단락을 요약하면, 분석의 용이성 및 신속성의 측면에서 DB를 활용하지만 DB에 저장될 수 있는 데이터의 용량에 한계가 있고 실시간 서비스를 위해서는 최소한의 데이터만을 DB로 남기고 있기 때문에 DB로그가 조회수 조작 대응에 실효성이 많이 떨어진다.

 P.S.
 앞에서 간단히 조회수 조작을 찾는 방법에 대해서는 이미 다루었다. 특정 IP를 사용하는 경우 또는 특정시간대에 활동하는 경우에 대해서 조회수 조작을 충분히 확인할 수가 있다. 그렇지만 이런 기본적인 방법 외에도 조회수 조작 적발 또는 조작된 조회수의 원상복구 등에 대해서도 다양한 전략들이 있을 것이다. 실시간으로 조회수 조작 사용자를 찾아서 해당 IP를 막는다는 등의 실시간 대응 뿐만 아니라, 시간이 경과한 후에 아파치로그 등을 분석해서 불필요한 조작된 조회수를 DB 메타정보에서 제거하는 후속 대응도 현재 운영중인 걸로 알고 있다. 재미있는 것은 후속대응으로 인해서 때로는 조회/추천수가 감소하는 경우도 존재할 수도 있다. 업체 측에 의한 조회/추천수 조작설 등의 다양한 음모론이 펼쳐질 여지가 충분히 있는 것같다. 그리고 또 다른 음모설에 대해서 언급하자면... 현재 다음 아고라 게시판과 같은 경우 여러 대의 컴퓨터를 병렬적으로 연결시킨 분산컴퓨팅을 활용하고 있다 (일반적으로 하나의 서비스를 위해서 최소 두대의 서버가 필요하다. 분산처리 뿐만 아니라, 서비스 백업을 위해서). 그래서 각 서버별로 별도의 로그기록을 남겨두고 있기 때문에, 실시간으로 모든 서버의 로그 데이터를 취합하기란 사실상 불가능하다. 이런 분산 데이터의 싱크 문제로 인해서 조회/추천수가 일시적으로 증가/감소하는 현상이 종종 발생할 수도 있다. (게임에서 잠시 랙이 걸리는 것과 같은 현상)

 P.S.2
 아파치로그에 대한 기술적인 내용은 생략은 생략하겠다. 사용자들의 IP, 접속시간, referer 등의 정보들이 보통 남게 된다. 아파치로그에 대한 자세한 사항은 아파치 홈페이지에서 참조하기 바랍니다.
*** 현재로썬 이 주제에 대해서 시리즈 글을 쓸 계획이 없지만, 본 포스팅에서 관련된 모든 요소/정보를 다룰 수 없기 때문에 추후에 기회가 되면 추가 글을 적을 여지를 남겨두기 위해서 일단 (1)으로 마킹을 해두었습니다.

 지속가능 웹생태계의 구축 및 복원 (Recovery of the Sustainable Web EcoSystem, SubEco)을 다루기 위해서는, 먼저 현재 어떤 요소들에 의해서 웹생태계가 파괴되고 있는지를 다룰 필요가 있다. 파괴자를 바라보는 다양한 측면이 있을 수 있으나, 본 포스팅에서는 글의 속성에 따른 구분에 초점을 맞출 것이다. 그리고, 아래의 구분/카테고리들은 서로 겹치는 부분도 있을 것이고, (웹생태계 파괴 행위) 전체를 완전히 커버할 수도 없을 것이다. 그런 측면에서 본 포스팅에서 빠진 카테고리는 추후에 다시 다룰 기회가 있을 것이다. 그리고 다른 관점에서의 웹생태계 파괴자들을 다룰 기회도 있으리라 본다.

1. Against the Laws
 가장 우선 순위의 웹생태계 파괴자로는 위법적인 글들을 들 수가 있다. 대표적인 사례로는 허위사실/정보를 포함하는 글/행위 (물론, 최근에 '미네르바 구속'사건으로 무엇이 허위사실이며 어느정도까지 허용되어야 하느냐에 대한 논의가 공론화된 점은 불행중 다행이라 생각한다.), 인신공격이나 인격모독의 내용을 담고 있는 글/행위, 그리고 개인정보를 악의적으로 담고 있는 글/행위 등이 대표적인 위법사례로 들 수 있을 것같다. (저작권 등과 관련된 사항은 별도의 카테고리를 마련하였다.)

2. Against the Public Morals/Customs
 우리 사회의 미풍양속을 해치는 정보도 대표적인 웹생태계를 파괴자이다. 대표적인 미풍양속을 해치는 정보로는 낯뜨거운 성인성 글과 도박성 글을 들 수가 있다. 그리고, 댓글문화가 발전하면서 발생한 폐단인 욕설이나 무차별 비난 등도 우리 사회의 미풍양속을 해치는 글들로 볼 수가 있다. 

3. Annoyance
 세번째로 생각할 수 있는 파괴자로는 사용자들을 괴롭히는 글들일 것이다. 대표적인 사례로 낚시성 글들을 이 범주에 포함시킬 수 있다. 특히 낚시성 글은 도박이나 상업성 글들과 함께 동작하는 경향이 강하며, 성인성 글들이 많이 이용되고 있다. 낚시글뿐만 아니라, 의미없는 내용이 대량 & 중복으로 포스팅되는 것, 웹문서 내에 악성코드를 심어두는 것, 그리고 낚시글 이후에 외부의 불건전한 웹페이지로 링크를 걸어두는 것 등도 사용자들의 불편하고 괴롭히는 글들이다.

4. Left to Copy
 앞서 불법/위법적인 글들을 이미 언급했지만, 네번째로 생각할 파괴행위는 여러 저작물들의 저작권이나 초상권과 관련된 문제를 들 수가 있다. 현재 대형포털들을 중심으로 '스크랩'이나 '펌' 등으로 알려진 저작권 침해 행위는 개인 블로그나 미니홈피의 증가로 더욱 만연해있다. 게중에는 지인들끼리 사진을 공유하는 등의 소셜네트워킹이라던가 좋은 저작물들을 널리 알려주는 등의 순기능도 있지만, 원저작권자의 허락이 없는 불법적인 저작물의 유통은 분명 건전한 웹생태계를 파괴하는 행위이다. 그리고, 이런 반복된 행위로 인해서 똑같은 내용의 문서들이 중복으로 존재하는 것 역시, 아무리 좋은 저작물이라 하더라도, 웹생태계에서 쓰레기로 남을 가능성이 있다. 뿐만 아니라, 현재 스크랩을 통해서 유통 전파되고 있는 많은 부분이 야설, 야사, 야동 등으로 불리는 성인물들이라는 점도 문제가 된다. 웹생태계에서 불법적으로 유통되는 정보들은 개인 UCC 자료들 뿐만 아니라, 법적으로 충분히 보호받아야할 뉴스기사, 음악, 영화나 드라마, 사진이나 소설 등 그 종류를 불문하고 있다. 그리고, 디지털 카메라, 디지털 캠코더의 보급과 개인 퍼블리슁이 합쳐져서 불특정 일반 대중들의 사진이나 생활상이 웹생태계에 여과없이 노출되는 점에서 초상권이나 사생활권를 침해할 가능성도 높다. 덧붙여, 개인의 불법적인 저작물 유통에도 문제가 있지만, 저작권자들의 무분별하고 지나친 저작권료를 요구하는 것도 건전한 웹생태계를 파괴할 수도 있다. 특히 많은 불법 유통의 장본인들이 경제권이 거의 없는 청소년들이라는 점에서 적정 수준에서 저작권의 사용을 허하는 문화도 빨리 정착되어야 한다.

 앞서도 잠시 언급했지만 스크랩 행위 자체를 폄하하는 것은 아니고, 그 순기능도 존재함은 분명하다. 그리고, IT 기술이 발전하고 대중화됨에 따라서 GNU나 CopyLeft와 같은 오픈소싱 Open Sourcing 운동도 활발하게 진행되고 있다는 점도 눈여겨 볼 필요가 있다. 이런 오픈소싱 등은 현재의 왜곡된 웹생태계를 복원하는데 한축을 담당할 것이다.

5. Impurity
 다섯번째로 생각할 파괴자는 상업성 광고를 뽑고 싶다. 개인이나 비영리 단체가 아닌, 영리단체에서는 인터넷이라는 매체를 통해서 자신과 그들의 상품을 광고하는 것은 당연하다. 그렇지만, 이런 상업성이 (시발단계에서) 순수한 것으로 가정되었던 개인 블로그에도 넘쳐나고 (물론 그런 블로그들은 처음부터 이런 목적으로 만들어졌지만), 특정 집단의 친목을 도모하는 카페 등의 커뮤니티에도 넘쳐난다는 것은 문제가 있다. 더우기 이런 상업적인 광고는 앞서 언급했던 과대/허위광고 (허위사실 유포와는 조금 다르겠지만), 저작권 및 초상권 침해, 성인물의 유통, 대량 낚시성 저작물의 생성 등의 웹생태계 파괴자의 종합판으로 역할하는 경우가 많다.

6. Misc.
 그 외에도 미풍양속을 해치는 행위에 포함되었던 댓글 등을 통한 욕설이나 무분별한 비난 등도 건전한 웹생태계를 파괴하는 행위이다. 그리고 또... 생각나는 점을 앞으로 다른 포스팅을 통해서 전달하겠습니다.

 다행인 점은 위와 같은 웹생태계 파괴자들은 국내외의 많은 인터넷 회사들이 정화하려고 많은 노력을 기울이고 있다는 점이다. 그러나 불행한 점은 (언제나 그렇듯이) 인터넷 업체에서 이런 글들을 찾아내서 제재하는 속도보다 이런 파괴자들이 생성되고 유통되는 속도가 더 빠르다는 점이다.

 사족으로, 가끔 '내 블로그의 글들이 검색에 노출되지 않아요'라는 포스팅들을 볼 때가 있다. 위의 웹생태계 파괴행위를 역으로 살펴보시면 왜 내 글이 검색에 제대로 노출되지 않았는지 추론이 가능하다.