정보 검색을 쉽고 빠르게, 웹 크롤러

이상우 lswoo@itdonga.com

'검색'은 인터넷에서 필요한 정보를 얻기 위해 누구나 한 번쯤 거치는 과정이다. 우리가 검색을 위해 주로 사용하는 구글, 네이버, 다음 등의 검색 서비스를 '검색엔진'이라 부른다. 검색엔진은 인터넷에 있는 정보를 수집해 주기적으로 데이터베이스에 저장한다. 그리고 이를 분류하고 사용자에게 최신 검색 결과를 제공한다. 검색엔진이 작동하는 원리의 첫 단계는 바로 정보 수집 및 저장이다. 그런데 검색엔진은 어떤 방법으로 인터넷에 방대하게 흩어진 자료를 수집할까? 이 일을 자동으로 하는 프로그램이 있다. 바로 '웹 크롤러(web crawler)'다.

웹 크롤러란?

웹 크롤러는 웹 로봇, 웹 스파이더 등의 이름으로 불리기도 하며, 수많은 웹 페이지를 자동으로 돌아다니며 각종 정보를 수집하는 프로그램이다. '크롤러'는 '기어 다니는 것'이라는 의미로, 웹 페이지를 돌아다니며 정보를 수집하는 기능 때문에 이런 이름이 붙었다. 이를 통해 웹 페이지에 있는 URL을 추출하고 텍스트, 그림, 소리, 영상 등 수많은 정보를 수집하고 저장한다.

여러 검색엔진
여러 검색엔진

검색엔진은 이렇게 수집한 정보를 정리해 사용자에게 더 빠르고 정확한 검색 결과를 제공한다. 다시 말하면 구글, 네이버, 다음 등은 검색 서비스를 제공하기 위해 웹 크롤러로 다양한 정보를 수집해 사용자가 검색하기 쉬운 형태로 분류한다. 사용자가 특정 검색어를 입력하면, 검색엔진은 질의(query, 데이터베이스의 자료를 검색하기 위한 명령)를 통해 서버에 있는 정보를 불러와 사용자에게 제공한다.

웹 크롤러는 인터넷 공간 여기저기 돌아다니며 정보를 수집한다는 특징 때문에 사람들에게 피해를 주는 존재라고 생각할 수 있다. 실제로 웹 크롤러는 설계(프로그래밍)를 잘못하면 네트워크에 트래픽을 증가시키고 서버에 과부하를 줄 수 있다. 그러나 모든 것이 장단점이 있듯 웹 크롤러는 검색엔진 외에도 링크 체크, HTML코드 검증, 자동 이메일 수집 등 다양한 형태로 사용된다. 이를 통해 사람이 손으로 하기 귀찮은 수많은 작업을 수행한다.

나는 네가 지난 월요일에 올린 게시물을 알고 있다

방대한 정보를 수집한다는 웹 크롤러의 특징 때문에 사용자가 예기치 못한 피해를 볼 수 있다. 블로그나 카페 등에 게시한 개인정보까지 수집해가기 때문이다. 게시한 글을 지우더라도 웹 크롤러가 수집해 검색엔진 데이터베이스에 저장한 정보는 지워지지 않으며, 나중에 다른 사용자가 검색할 수도 있다. 구글이나 네이버 등에서 검색 시 볼 수 있는 '저장된 페이지'가 바로 그것이다.

구글 검색 시 나타나는 저장된 페이지
구글 검색 시 나타나는 저장된 페이지

이미 웹 크롤러가 수집해간 정보를 데이터베이스에서 지우려면 해당 서비스의 고객센터에 연락해 삭제 요청하는 방법밖에 없다. 그래서 중요한 정보라면 웹 크롤러의 접근을 사전에 차단해야 한다. 가장 쉬운 차단 방법은 해당 게시물을 비공개로 설정하는 것이다. 카페 등의 게시물은 회원만 볼 수 있도록 설정하면 되고 블로그나 게시판 등에 올린 게시물은 비공개로 설정해 등록하면 된다. 웹 크롤러는 해당 웹 페이지의 ID와 비밀번호를 가지고 있지 않기 때문에 원천적으로 접근할 수 없다. 다만 해당 웹페이지를 이용하려는 사람도 ID와 비밀번호를 일일이 입력해야 하는 불편함이 있다.

기업이나 개인 홈페이지를 운영하는 사람이라면 'robots.txt'라는 텍스트 파일을 사용해 웹 크롤러를 배제하는 방법이 있다. robots.txt는 웹 크롤러 접근을 방지하기 위한 규약으로, 텍스트 파일 안에 여러 가지 코드를 넣어 특정 웹 크롤러가 접근하지 못하게 하는 등으로 활용할 수 있다. 해당 텍스트 파일을 서버 최상위 폴더(루트 폴더)에 넣기만 하면 된다(파일 이름은 robots.txt). 더 자세한 내용은 http://www.robotstxt.org/에서 확인할 수 있다.

User-agent: *
Disallow: /

위와 같이 입력하면 모든 웹 크롤러의 접근을 차단한다. 만약 특정 웹 크롤러의 접근을 막고 싶다면 '*'대신 해당 웹 크롤러 이름을 입력하면 된다. 다음은 대표적인 검색엔진의 웹 크롤러 이름이다.

구글로봇: Googlebot
구글 이미지: googlebot-image
구글 모바일: googlebot-mobile
야후로봇: Slurp, yahoo-slurp
야후 이미지: Yahoo-MMCrawler
네이버: cowbot, naverbot, yeti
다음: daumos

다만 robots.txt는 '권고안'이며, 해당 규약을 지키지 않는 웹 크롤러도 있어 접근을 완전히 막을 수는 없다.

글 / IT동아 이상우(lswoo@itdonga.com)

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.