본문 바로가기

Computer

우리의 블로그를 방문하는 인간이 아닌 종족..?

인터넷


  우리 인류는 나를 포함한 다른 사람들의 블로그를 방문하여 글을 읽고 느끼며 또 때로는 댓글도 남기며 트랙백도 걸기도 한다. 하지만, 우리의 블로그를 방문하는 것들은 우리 인류만이 아니다. 원숭이? 아니다. 외계인? 물론 아니다. 더욱 놀라운 사실은 이들은 실재(實在) 하는 것들이 아니라는 사실이다. 이런 유령 같은 이들은 바로, '스파이더(spider)' , 혹은 '웹 크롤러(Web Crawler)',  혹은 '봇(bot)' 라고 하는 이들이다.


  우리가 흔히 인터넷을 사용하면 주로 이용하는 기능이 바로 '검색' 이다. 우리가 인터넷을 검색을 하도록 지원해 주는 사이트에 들어가 어떠한 키워드를 입력하면, 그 사이트에서 그 키워드에 알맞는 사이트를 찾아 주는 것이 바로 '검색' 인 것이다.

  그런데, 곰곰히 생각해 보면 그 사이트들이 검색된 결과의 사이트들을 어떻게 알 것이냐 이다. 그 사이트의 관리자들이 내 사이트를 직접 방문해 색인 목록에 추가시켜도 되지만, 문제는 이러한 사이트들이 수만~수억개가 넘기 때문이 이러한 사이트들을 인간이 직접 방문한다는 것은 불가능한 일이기 때문이다.

  게다가 더욱 중요한 문제는 인간이 어떠한 웹 페이지를 방문하였을 때, 그 사이트의 전체 내용을 읽어 보지 않는 이상 그 사이트가 어떠한 정보를 가지고 있는지 알기 힘들기 때문이다. 예를 들어, '빅뱅' 이라는 페이지가 있을 때 그 페이지가 정말 우주의 탄생인 '빅뱅(Big Bang)' 을 뜻하는 것인지, 아니면 가수 '빅뱅' 을 뜻하는 것인지 그 사이트의 내용을 읽어 보기 전 까지 전혀 알 수 없다.

  따라서, 이 모든 작업을 해주는 사람 대신에, 어떠한 프로그램이 필요할 텐데 이 것들이 바로 앞에서 말한 스파이더, 흔히 봇 이라 하는 것들이다. 이들은 어떠한 특정한 페이지를 방문하여 그 사이트에 대한 정보를 수집한다. 보통 봇들은 처음에 시드(seed) 라고 불리는 일련의 URL 을 선정한다. 이 때, 그러한 URL 에 들어가서 그 URL 에 걸린 모든 링크들을 찾는데 이러한 링크된 URL 을 URL 리스트에 추가해 준다. 이제 다시 새롭게 추가된 URL 에 들어가 위의 과정을 반복한다. 이러한 작업을 반복하여 웹사이트 URL 을 수집하는 것이다.

  그러나, 스파이더에게는 엄청난 난관이 있다.

  첫 번째로는, 인터넷이 엄청나게 방대하다는 사실에 있다. 스파이더들이 제아무리 빠르게 웹사이트를 훓고 지나가도 일단 웹사이트를 훓기 위해서는 그 사이트를 서버로 부터 다운 받아야할 필요성이 있다. 따라서, 그 사이트를 다운 받기 위해서는 '시간' 이 소요되므로 무엇을 먼저 받을 지 결정해야 한다. 예를들어서 어떤 사이트에 여행에 관한 글이 올라왔는데, 사진은 수십장 있지만 정작 중요한 내용은 몇 줄에 불과하다면 그 많은 사진들을 다운받기 위해 시간을 소비할 필요가 없다는 것이다.

  두 번째로는 웹 자체가 빠르게 변화하고 있다. 예를들어서 뉴스 전문 사이트의 경우 매 시간 새로운 결과가 등록된다. 때로는 사이트상에서 페이지가 삭제 되기도 한다. 따라서, 스파이더는 이를 파악하기 위해 사이트를 한 번만 방문할 것이 아니라 주기적으로 방문할 필요성이 있다. 그러나, 스파이더가 특정한 웹사이트를 너무나 많이 방문하게 되면 서버에 부하가 생기므로 이를 적당히 조절해 주는 것도 중요하다.

  대다수의 검색 엔진들은 자신 만의 크롤러를 가지고 있는데 대표적으로 Google Crawler 가 있다. Google Crawler 의 초기 버전의 구조는 상당히 잘 알려져 있다. Google Crawler 은 파이썬과 C++ 로 만들어졌다.

  네이버도 마찬가지로 NaverBot 이라는 봇을 돌리고 있으나 국제 표준을 따르지 않는다고 지적되어 일부 사이트들은 NaverBot 의 접근을 막고 있다. (참고로, 웹 크롤러의 접근은 홈페이지의 robot.txt 파일을 수정함으로써 가능하다. ) 뿐만 아니라 NaverBot 은 지나치게 방문을 많이 하여 서버에 부하를 준다는 이유로 지적을 받기도 하였다.

  각 크롤러들은 고유의 이름을 가지고 있는데, 이는 아래와 같다 (참조 : http://jcas.co.kr/zbxe/?mid=free&document_srl=187023&sort_index=readed_count&order_type=desc )

구글: Googlebot
구글 이미지 : googlebot-image
네이버 : cowbot
야후 : Slurp
야후 이미지 : Yahoo-MMCrawler
엠파스봇 : empas

MSN : MSNBot

위와 같이 상용적으로 이용되는 크롤러 말고도 무료로 배포되는 크롤러들이 일부 있는데 대표적으로는 ASPseek 이나, DataparkSerach 등이 있다.

참고자료
http://en.wikipedia.org/wiki/Web_crawler