웹 사이트에 외부 검색엔진이 못 들어오게 하려면?
저자: Rich Bowen | 날짜: 2000년11월29일


웹 서버 로그 목록을 조사하다 보면 매일같이 누군가가 robots.txt란 파일을 찾는다는 사실을 알게 될 것이다. 하지만 robots.txt란 파일은 가지고 있지도 않은데 이걸 찾는 사람은 도대체 누구인가?

robots.txt은 뭐고, 이 안에 뭐가 들어있길래?

이번 기사에서는 이 로봇(robot)의 정체와, 그와 함께 빠지지 않고 등장하는 스파이더(spider)의 실체에 대해서도 알아보자. 그리고 이들이 어떤 장점과 단점을 갖고 있는지 알아보고, 이들을 어떻게 제대로 이용할 수 있는지를 파악해 보도록 하자.

로봇(Robot)과 스파이더(Spider)는 무엇인가?

로봇은 짧게 줄여 밧(bot)이라고 하거나, 스파이더, 웹 크롤러(web crawler) 등 여러 다양한 이름으로 불려진다. 로봇은, 간단히 설명해, 자동으로 웹 페이지의 내용을 다운로드 받는 ‘프로그램’이다. 로봇은 다양한 목적에 의해 웹 페이지들의 내용을 끌어와 로봇 사용자가 그 페이지들의 내용을 정리할 수 있게 해준다.

로봇은 일단 웹 페이지 하나를 다운로드 받으면 그 페이지와 관련된 또 다른 페이지를 계속 연결해 찾아내기 때문에 사람들은 이 모습을 보고 거미가 거미줄을 치는 것을 연상했다고 한다. 그래서 이 프로그램의 이름을 거미란 뜻의 ‘스파이더’로 지었던 것이다.

대부분의 스파이더는 웹 페이지를 탐색한 뒤에 그 탐색 결과를 남겨 두게 되고, 사용자는 다음 번에 인터넷에 연결되지 않은 상태에서 웹 페이지들에 연결할 수 있게 된다. 그리고 검색된 콘텐츠를 캐쉬에 저장했다가 사용자가 다음 번 접속 시 더욱 빠르게 웹을 검색할 수 있게 하는 스파이더 종류도 있다.

거미는 좋은 놈이다

스파이더가 없다면 야후나 구글, 알타비스타 등의 검색 엔진들은 존재하지 않았을 것이다. 이 검색 사이트들은 스파이더를 이용해 수많은 웹 사이트들을 인덱스 해 놓는다. 그리곤 사용자들이 원하는 웹 페이지를 키워드를 이용해 찾을 수 있게 한다. 야후 같은 경우 현재 스파이더를 통해 인덱스 된 웹 페이지가 수십억에 이를 것으로 추정되고 있다.

스파이더는 또한 사용자들이 원하는 정보만 골라 받을 수 있는 맞춤 서비스를 가능하게 해 준다. 예를 들어, 뉴스 사이트로부터 사용자가 원하는 뉴스의 종류를 골라낼 때 이 스파이더가 이용되는 것이다. 만일 스파이더 없이 사람이 직접 사용자들이 선택한 뉴스를 일일이 골라 보내려고 한다면 그 작업량은 상상할 수 없을 만큼 늘어나게 된다.

거미는 나쁜 놈이기도 하다

스파이더는 웹 사이트에 매우 심각한 문제를 일으키기도 한다. 제대로 관리되지 않은, 혹은 잘못 프로그래밍 된 스파이더는 사이트 주인이 원하지 않는 내용을 허락도 없이 다운로드 받아버리거나, 원래의 페이지 정보를 보존하지 못하고 업데이트 된 다른 내용으로 변경시켜 버릴 수도 있다. 게다가 짧은 시간에 사용자들이 검색하는 수많은 페이지를 한꺼번에 요구하는 바람에 서버가 작동 불능의 상태를 보이기도 한다.

그러나 일반적으로 이것은 스파이더를 제대로 통제할 수 있는 기술이 뒷받침 되지 않아서 발생하는 문제다. 스파이더를 올바르게 프로그래밍 할 수 있는 사람만 있다면 서버의 과부하 같은 문제는 사전에 막을 수 있다.

거미로부터 서버를 보호하자

분명히 자신의 사이트에는 스파이더가 접근하지 말았으면 하는 부분이 있을 것이다. 자신이 보유하고 있는 콘텐츠 중에는 검색 엔진에 공개되면 안 되는 것이 있거나, 매번 자동으로 갱신되거나 다시 만들어지는 페이지도 있을 것이다. 이런 경우는 사용자들이 방문할 때마다 콘텐츠가 달라지기 때문에 검색 엔진에 인덱스를 걸어놓을 수 없는 상황이 된다.

최악의 경우, 스파이더가 자동 업데이트 되는 페이지를 또 다른 자동 업데이트 페이지에 링크를 시켜 로봇이 페이지 사이의 링크를 영원히 반복하게 되는 수도 있다.

이런 나쁜 상황들을 미연에 방지하기 위해 ‘로봇 제한 기준(standard for robot exclusion)’이라는 것이 만들어졌다. 여기에는 로봇이 특정 콘텐츠에 접근하는 것을 막아 주는 robots.txt 파일이 포함돼 있다. 사람들은 이 파일을 조작해 자신의 사이트를 찾아오는 로봇에게 어떤 것을 다운로드 받지 말아야 하는지 알려 줄 수 있다.

이 파일은 대개 다음과 같은 형식을 가진다.

    UserAgent: 스파이더의 이름
    Disallow: /cgi-bin/dynamicstuff/

여기에 이름이 들어간 스파이더는 아래 명시된 디렉터리에 접근이 불가하게 된다.

그리고 스파이더 이름에 별표(*) 모양을 입력해 모든 스파이더들의 특정 디렉터리로의 접근을 막을 수 있다.

    UserAgent: *
    Disallow: /cgi-bin/

문제는 robots.txt 파일이 강제성을 띠지 않는다는 것이다. 이 파일이 로봇에 제대로 작용하기 위해서는 처음 로봇 프로그램을 짜는 사람이 로봇에게 robots.txt 파일을 먼저 읽고 허락되지 않은 디렉터리에 접근하지 말라는 명령을 집어 넣어야 한다. 그러나 로봇을 프로그래밍 하는 사람이 이런 명령을 고의적으로 삭제하거나, 모르고 빼먹는다면 로봇은 허가되지 않은 페이지들을 모두 다운로드 받게 된다. 어떤 종류의 서버를 사용하든지 아파치는 스파이더와 일반 사용자를 구분할 수가 없기 때문에 이런 문제가 발생할 수 밖에 없다.

만일 로봇이 robots.txt 파일을 무시한 채 제멋대로 금지된 페이지를 읽어 갔다면, 취할 수 있는 몇 가지 방법이 있다.

먼저, 이 로봇을 ‘부리고 있는’ 사람과 연락을 취하도록 한다. 액세스 로그를 살펴보고 이 로봇이 어느 주소로 들어왔는지 확인한다. 그리고 그 주소 서버의 책임자가 누구인지 알아낸다. 정체가 확인되면 그 사람에게, 자신의 사이트 탐색을 중단하고, 로봇 제한 기준을 지켜달라는 내용의 정중한 노트나 이메일을 보내도록 한다.

만일 이런 정중한 요구가 지켜지지 않을 경우 아예 콘텐츠를 기술적으로 막아버려 외부로부터의 침입을 봉쇄하도록 한다. 외부로부터의 접근을 모두 차단할 수도 있지만 그 문제의 로봇이 들어오는 주소를 기준으로, 혹은 사용자 에이전트를 기준으로 접근을 제한할 수 있다.

로봇 만들기

자기 자신만의 로봇을 만들고 싶다면, 먼저 웹 사이트에 돌아다니고 있는 수백 종류의 로봇들 중에 자신이 원하는 것을 골라보도록 하라. 그 로봇들의 종류와 정보는 다음의 웹 사이트에서 살펴볼 수 있다. info.webcrawler.com

하지만 정말 자기 자신만의 로봇을 ‘직접’ 만들어 보고 싶다면 로봇에게 원하는 기능을 자유자재로 부여할 수 있는 LWP 패키지에 펄(Perl) 모듈을 이용하면 된다. 이 모듈은 매우 간단한 방법으로 여러 복잡한 기능들을 짜 넣을 수 있다.

그리고 이때, 반드시 로봇 제한 기준을 준수하도록 하자. 로봇을 만드는 일은 너무너무 쉽다. 하지만 자신의 로봇으로 다른 사이트들에 피해를 입히지 않기 위해서는 로봇 사용자의 세심한 주의가 필요한 것이다.
Posted by 퓨전마법사
,