2009.02.04 20:10

웹 로봇에 대한 질문 및 대답 (FAQ)

원저자: Martijn Koster
위치: http://aistar.kotel.co.kr/~hiongun/robots/faq.html

목차

  1. 웹 로봇에 대해서
  2. 색인화 로봇
  3. 서버 운영자를 위해서
  4. 로봇 배제하는 표준적인 방법
  5. 사용가능성

웹로봇에 대해서

웹 로봇이란 무엇인가?

로봇이란 자동적으로 웹의 하이퍼텍스트 구조를 따라 다니며 문서를 추출하고, 재귀적으로 그 문서에서 참조되는 다른 문서들을 추출하는 식으로 동작하는 프로그램이다.

여기서 "재귀적"으로 동작한다는 것이 따라다니는 알고리듬이 재귀적이라는 뜻이 아니다. 약간의 휴리스틱으로 문서를 선택하는 순서가 달라질 수 있지만 그래도 그것 역시 로봇이라 할 수 있다.

보통 웹브라우져는 로봇이 아니다. 왜냐하면 그것들은 매번 링크를 따라 다닐 때마다 사람이 작동시키기 때문이다. 로봇은 자동으로 링크를 따라다니는 프로그램을 말한다.

웹 로봅은 보통 웹 방랑자(Wanderer), 기어다니는 것(Crawler), 혹은 스파이더(Spider, 거미)로 불리기도 한다. 이 이름 때문에 소프트웨어 자체가 바이러스처럼 돌아다니는 것으로 오해를 사는 경우가 있는데, 그렇지 않다. 로봇 프로그램 자체는 한곳에 머물러 있고, 단지 서로 다른 사이트로부터 문서를 읽으올 따름이다.


에이전트란 무엇인가?

최근 전산학에서는 "에이전트"라는 말이 여러가지 의미로 쓰인다. 예를 들면:
자동 에이전트
는 사이트들 사이를 돌아다니며 자신이 언제 다른 데로 옮겨다닐지, 무엇을 해야할 지를 결정한다. (예를 들면, General Magic's Telescript). 이것들은 단지 특수한 서버들 (아직 인터넷에 널리 퍼지지는 않은) 사이에만 옮겨다닐 수 있다.
지능화된 에이전트
란 사용자가 물건을 고를 때나, 문서 서식을 채워 넣어야 할 때나, 혹은 뭔가를 발견할 때에 사용자에게 도움을 주는 프로그램을 말한다. 보통 네트웍과는 별로 관계가 없다.
User-agent (사용자 에이전트)
이것은 사용자에게 특정한 네트워킹 작업을 해주는 프로그램에 붙이는 기술적인 용어이다. 예를 들어서 Netscape Explorer는 웹 User-agent이고 Qualcomm의 Eudora는 email User-agent이다.

검색 엔진이란 무엇인가?

검색엔진이란 어떤 자료집합에서 검색을 수행해주는 프로그램으로서 웹분야에서는 "검색엔진"이라는 말이 흔히들 로봇에 의해 모아진 HTML문서들의 데이타베이스 로부터 검색을 해주는 것을 말한다.

다른 종류의 로봇도 있나?

로봇은 다양한 용도를 위해서 쓰인다:
  • 색인만들기
  • HTML 체크하기
  • Link 체크하기
  • "What's New" 감시하기
  • 미러링(Mirroring):똑 같은 복사본(거울상) 만들기
현재 활동중인 로봇들의 리스트를 참조하여 로봇들이 뭘 하는지 알아보라. 필자에게 묻지 말라 -- 필자가 아는 것은 리스트에 있는 것이 전부이다....

로봇, 스파이더, 웹크로울러, 벌레, 개미??

거의 같은 종류의 것을 말하는 것이지만 굳이 차이를 말하자면...
로봇
일반적인 이름. 로봇이란 참조.
스파이더
로봇과 같다. 단 언론에서는 더 신선하게 들린다.
벌레
로봇과 같다. 기술적으로는 벌레는 로봇과는 달리 복제하는 프로그램을 뜻한다.
웹 크로울러
로봇과 같다. 하지만 WebCrawler라고 하면 특정한 로봇을 가리킨다.
웹개미
분산되어서 서로 협동하는 로봇들을 말한다.

로봇이 웹에 해로운 존재인가?

사람들이 로봇을 웹공간에서 해로운 존재라고 믿는 이유가 몇가지 있다:
  • 어떤 로봇들은 잘못 구현하여 (과거에는) 네트웍이나 서버에 과부하를 거는 경우가 있었다. 이것은 보통 이제 막 로봇을 제작하기 시작한 사람들 의 실수로 기인하는데, 요즘에는 이런 실수를 막을 충분한 정보가 있다.
  • 때로는 로봇이 설치를 잘 못하는 사람이나, 그들의 행동에 파급효과를 모르는 사람들에 의해 동작되기도 한다. 따라서 로봇 제작자는 매우매우 조심하여 실수나 잘못된 결과가 나기 힘들도록 유념해야 한다.
  • 웹에 걸쳐서 색인을 만드는 로봇들은 중앙집중식 문서 데이타 베이스를 구축하는데 수백만 사이트에 걸쳐서 분산되어 있는 수백만 페이지를 잘 다루지 못하는 경우가 있다.
그러나 동시에 수많은 로봇들이 잘 설계되어서 전문가에 의해 동작되므로 아무런 문제도 야기하지 않는다. 그 로봇이 있기에 몇몇 가치있는 서비스들이 가능해졌다.

따라서 로봇은 근본적으로 해로운 것도, 근본적으로 똑똑한 것도 아니다. 단지 세심한 주의가 필요한 대상일 따름이다.


로봇에 대해 더 자세히 보려면?

웹로봇 홈 페이지가 있다.
http://info.webcrawler.com/mak/projects/robots/robots.html

많은 로봇 사이트 중에서 하나를 가리키고 있지만, 치우치지 않은 정보를 충분히 많이 가지고 있다.

물론 FAQ의 가장 최근 버전도 거기에 가면 구할 수 있다.

메일링 리스트에 가입하면 더 세밀한 정보와 로봇들이 축적되어 있는 곳을 찾을 수 있고 거기에서는 로봇에 대한 기술적인 토론이 이뤄지고 있다.


색인 로봇


로봇이 방문할 곳을 결정하는 방법?

로봇에 따라 다르다. 각각의 로봇은 서로 다른 전략을 사용하기 때문이다. 일반적으로는 어떤 URL리스트로 부터 시작하는데, 특히 서버리스트나 "What's New"페이지같이 외부로 나가는 링크들이 많은 페이지에서 시작한다. 그리고 가장 유명한 페이지에서 시작한다.

색인 서비스의 경우 대부분 사용자 URL을 수동으로 등록하는 방법이 있으므로 자신의 URL을 등록하여 로봇으로 하여금 방문하도록 만들 수 있다.

다른 URL들도 이용하는데, 예를 들어 유즈넷 뉴스그룹에 올라온 글들을 훑어봐서 나타나는 URL을 사용하거나, 메일링 리스트의 문서저장된 곳을 이용하여 새로운 URL들을 찾기도 한다.

출발점이 되는 URL이 주어지면 로봇은 그 링크를 따라 가서 방문하고 색인을 만들고 또 그 문서를 읽어서 새로운 URL을 찾아낸다.

로봇이 뭘 색인해야 할지 아는 방법?

로봇이 어떤 문서를 가지고 오면 그 문서를 해석하고, 그 결과를 데이타베이스에 넣을 것이다. 그러나 이 과정이 어떻게 진행되는지는 로봇마다 다르다: 어떤 로봇은 HTML제목만, 혹은 몇 문단만, 혹은 전체 HTML을 해석하여 모든 단어를, 가중치 정도에 따라서 색인화한다. 어떤 로봇은 메타(META)태그나 특별한 숨겨진 태그를 이용하기도 한다.

원컨대 웹이 진화함에 따라서 메타 데이타를 관련지을 만한 효율적인 방안이 더 많아지기를 바란다. 예를 들어 문서들의 색인정보 같은 것들이. 이에 관한한 진행되고 있다...


로봇에 내 페이지를 등록시키는 방법?

추측해보라. 서비스마다 다르다. 대부분의 서비스에서는 페이지 등록하는 서식이 있는 페이지를 제공하고 있다.

다행스럽게도 모든 서비스에 일일이 손으로 등록할 필요가 없다: 한꺼번에 등록시키기 <URL: http://www.submit-it.com/>를 사용하면 한꺼번에 등록시킬 수가 있다.


서버 운영자를 위해서


로봇이 내 호스트를 방문했는지 아는 방법?

서버의 로그파일을 살펴봐서 짧은 시간에 많은 문서를 읽어간 것을 찾아내면 된다.

만약 당신의 서버가 User-agent로깅을 지원하면 좀 이상한 User-agent를 찾으면 될 것이다.

만약 누군가가 /robots.txt를 반복적으로 접근하면, 아마 로봇일 가능성이 크다.


로봇이 내 호스트를 접근한다! 자 이제?

음... 아무것도 할 일이 없다. 기본적으로 그것들은 자동으로 동작하니까. 아무일도 할 필요가 없다.

만약 새로운 로봇을 발견했다고 생각하면 (그리고 로봇 리스트에 없으면) 활동중인 로봇 리스트, 만약 그것이 "가끔씩"이라고 하기에는 너무 자주 들르는 경향이 있으면 필자에게 알려주기 바란다. 나중에 참조할 수 있게. 그렇다고 해서 당신의 호스트에 들르는 모든 호스트를 알려주지는 말라!


로봇이 내 사이트전체를 너무 빠르게 읽고있다!

그런 현상을 보고 "rapid-fire"(과접속)이라고 부르는데, 감시를 하고 있다면 혹은 로그 파일을 분석하고 있다면 발견할 수 있다.

먼저 서버의 부하를 체크하고, 서버의 에러로그 파일을 감시하고, 현재의 연결상태들을 체크한다. 만약 중상위 파워를 가진 서버라면, 초당 몇건의 접속도 충분히 감당할 수 있다. 특히 접근이 재빠를 때에는.

그러나 성능이 낮은 사이트에서는 많은 문제가 생길 수 있는데, 예를 들어 개인용 컴퓨터나 매킨토시같은 경우에는 성능이 낮은 서버소프트웨어가 깔려 있을 수도 있고, 또한 CGI스크립트나 커다란 문서를 읽기 위해 약간 장기간의 접속이 있을 수도 있다. 이런 문제들은 그 자체로도 접속을 거절하는데만 높은 부하, 성능저하같은 것을 야기한다. 최악의 경우 시스템이 크래시되는 경우도 있다.

이런 경우에 해야할 일이 몇가지 있는데, 가장 중요한 것은 먼저 기록을 시작하는 것이다. 언제 알아차렸고, 무슨 일이 일어났고, 로그파일에 뭐라고 쓰여 있고, 그 대응으로 당신이 뭘 했는지 등등을 기록한다. 이렇게 해야 나중에 문제가 무엇인지를 조사하는데 도움이 된다. 두번째로 로봇이 어디에서 왔는지를 알아낸다. IP주소는 어디고, DNS도메인은 어디고, 만약 그것들이 활동중인 로봇리스트 에 들어 있는지를 점검한다. 만약 이런 식으로 상대편 사이트를 알아낼 수 있다면 책임자에게 e-mail을 보낼 수 있을 것이다. 도대체 무슨 일인지 물어보라. 아니면 그 사이트의 전화번호나 메일 매니저같은 사람들에게 연락해보라.

그 로봇이 리스트에 없으면 얻을 수 있는 모든 정보를 모아서 필자에게 메일을 보내주면, 필자는 적어도 다른 사람들에게 주의시킬 수는 있다.


로봇을 내 서버에 접근 못하게 막는 방법은?

다음 섹션을 읽어보라.

로봇 배제 표준


내 로그파일에서 /robots.txt를 찾아야 하는 이유.

아마도 당신의 호스트가 로봇 배제 표준에서 지정한 방법대로 어떤 규칙을 정해놓고 있는지 로봇이 알아내려고 하는 시도이다. 또한 아래를 참조할 것.

만약 로봇들에 대해 별로 관심이 없으면 단지 robots.txt라는 파일을 당신 서버의 root레벨에 비어있는 채로 만들 두라. 그러면 에러 로그파일에 /robots.txt를 찾다가 실패한 에러메시지를 없앨 수 있다.

/robots.txt파일에는 "너 누구야?"하는 식의 메시지나, HTML태그를 넣지는 말라. 그 텍스트 파일은 로봇이 읽는 것이므로 아마 아무도 읽지 않을 것이다.


로봇이 내 사이트를 훑어 읽는 것을 방지하려면?

가장 쉬운 방법은, 다음의 두줄을 /robots.txt파일에 넣어두는 것이다.
User-agent: *
Disallow: /
하지만 그것보다는 좀더 선택적으로 지시하는 것도 어려운 일이 아니다.

/robots.txt라는 파일이 어떻게 동작하나?

전체 로봇 배제 표준을 읽어볼 수도 있지만, 개념은 단순하다: 간단한 구조적인 파일을 만드는 것인데, 그 파일에는 당신의 서버의 어떤 부분에 대한 접근을 어떻게 로봇들 일부 혹은 전체에게 허락하거나 불허하는 것을 지시할 수 있다. 예를 들면...
# http://webcrawler.com/에 있는 /robots.txt 파일의 경우
# 건설적인 비평을 주실려면 webmaster@webcrawler.com로 메일을 주십시요.

User-agent: webcrawler
Disallow:

User-agent: lycra
Disallow: /

User-agent: *
Disallow: /tmp
Disallow: /logs
처음 두라인은 '#'로 시작하는 데, 이것들은 코멘트이므로 로봇들이 무시한다.

첫 문단에서는 webcrawler라는 로봇에 대해 아무것도 불허하지 않는다는 것을 얘기한다. 다시말해 어디에나 갈 수 있다고 허락하는 것이다.

두번째 문단에서는 lycra라는 로봇에 대해, '/'에 상대적으로 아래 있는 모든 URL에 대해 접근을 제한하겠다는 뜻이다. 모든 URL은 '/'로부터 시작되므로 이것은 이 로봇에 이 사이트 전체를 불허하겠다는 뜻이다.

세번째 문단은 모든 로봇들에 대해 /tmp나 /logs로 시작하는 URL을 읽어가지 못하도록 막는 것을 얘기한다. 여기서 주의할 점은 '*'라는 글자가 어떤 토큰이므로, Regular Expression의 *와는 다른 의미이다.

흔히 저지르는 에러 두가지를 지적하면:

  • Regular expression은 지원하지 _않는다_.: 따라서 Disallow: /tmp/*는 틀린 것이고 그 대신 Disallow: /tmp라고 써야 한다.
  • 하나의 Disallow라인에 두개 이상 넣지 말라. (이것은 다음 버젼에서는 바뀔 수 있기는 하지만 현지는 한줄에 하나만 넣는 것이 원칙이다.)

/robots.txt 표준은 확장될 것인가?

거의... 몇몇 아이디어들이 떠오르기는 하지만, 그 아이디어들을 일목요연하게 충돌없이 정리하여 만들지 못했다. 시간이 없어서... 또한 압력도 크지 않아서... 제안이 있으면 메일링 리스트로 메일을 보내주기 바란다. 또한 로봇 홈페이지에 현재 진행중인 일이 반영되므로 체크해주기 바란다.

가용성, 어떤 로봇을 쓸 있나?

로봇을 사용할 수 있는 곳

로봇을 사용한다는 것은 로봇이 동작한 결과를 사용한다는 뜻이라면, 다양한 검색 서비스나 디렉토리 서비스를 볼 수 있을 것이다. 예를 들면 넷스케이프사의 Exploring the Web 혹은 메타검색 서비스를 원하면 MetaSearch에서 로봇이 모아놓은 자료로부터 검색 서비스가 이뤄지고 있다.

로봇을 구하기 위해서는?

리스트에서 로봇의 리스트는 볼 수 있지만... 로봇을 공개하는 것을 좀 늦추라고 필자는 권하고 있다.

그동안 두개의 로봇이 공개되었는데, Harvest(공짜)와 Verity의 로봇이 그것이다.


로봇의 소스프로그램을 구할 수 있을까?

위의 내용을 참조 -- 누군가는 로봇을 제공할 의사가 있을 지도 모른다.

내가 지금 로봇을 만들고 있는데, 주의할 점은?

매우 많다. 먼저 로봇 페이지를 읽어보고, 그리고 나서 WWW Conference의 프로시딩들을 읽어보라. 그리고 나서 HTTP, HTML의 표준을 살펴보라. 물론 무척 많은 일임에는 틀림없다.

로봇이 하나 만들어 졌는데, 어떻게 리스트에 올리나?

간단하다. 로봇 등록 서식 을 채워서 보내주면 된다.


끝: 웹 로봇에 대한 질문 및 대답(FAQ) [Homepage]
Contact to Micky...


http://coffeenix.net/doc/misc/robot_ksfaq.html#get
Posted by 스노우볼^^

댓글을 달아 주세요