Why>
무분별한 크롤링을 막기위한 방식이 필요하다.

인터넷은 브라우저를 이용해 문서를 열람하는 구조로 출발했지만, 점차 검색 엔진이 정보를 수집하는 자동 순회 프로그램이 많이 운용되게 됐다. 자동 순회 프로그램은 '크롤러', '로봇', '봇' 과 같은 이름으로 불린다. 정확히 자동 순회 프로그램은 봇이지만, 대부분 검색 엔진에서 정보를 수집(크롤)하는 용도로 운용되므로 거의 같은 뜻으로 사용된다. 

 

크롤러의 접근을 제어하는 방법으로 주로 아래와 같이 두 가지가 사용된다.

  • robots.txt
  • 사이트맵

1. robots.txt

서버 콘텐츠 제공자가 크롤러에게 접근 허가 여부를 전하기 위한 프로토콜

크롤러 개발자가 멤버로 참여한 메일링 리스트 내에서 논의되어 1994년 무렵네 정해졌다. 이 규칙을 읽고 해석해 실제로 접근을 중단하는 것은 크롤러 쪽이므로, 크롤러 개발자들의 신사협정이라 할 수 있다. 현재는 구글, 네이버, 빙 등 많은 검색 엔진의 크롤러가 이 텍스트를 해석할 수 있다.

 

robots.txt는 아래와 같은 형식으로 읽기를 금지할 크롤러의 이름과 장소를 지정한다.

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/

여기서 모든 크롤러에 대해 /cgi-bin 폴더와 /tmp 폴더 접근을 금지했다. User-agent에 구글 봇처럼 개별적으로 지정할 수도 있다.

 

robots.txt와 비슷한 내용을 HTML의 메타 태그로도 기술할 수 있다. robots.txt가 우선하지만, 메타 태그로 더 자세히 지정할 수 있다. 아래는 메타 태그로 크롤러를 거부한다는 의미이다.

<meta name="robots" content="noindex" />

 

content 속성에는 다양한 디렉티브를 기술할 수 있다. 구글 봇이 해석하는 디렉티브에 관한 자세한 내용은 구글 사이트(https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)에 기재되어 있다. 대표적으로는 아래와 같다.

구글 디렉티브

같은 디렉티브는 HTTP의 X-Robots-Tag 헤더에도 쓸 수 있다. 아래는 그 예시이다.

X-Robots-Tag: noindex, nofollow

 

 

2. robots.txt와 재판 결과

robots.txt는 1997년 RFC 드래프트 단계까지 도달했지만, 현 시즘에서 정식 RFC는 아니다. 그러나 사실상 표준으로 널리 인지되고 있고 HTML4 사양에서도 설명되고 있다. 게다가 법적으로 효력이 있는 판례가 나오고 있고, 2014년 개정된 일본 저작권법 시행 규칙에도 'robots.txt'라고 명시되어 있다.

 

2006년에는 구글의 캐시가 저작권을 침해한다는 이유로 열린 유명한 소송 '필드 대 구글 사건'이 있다. 이는 작가이자 변호사였던 블레이크 필드가 구글에 낸 소송이었는데, 결과적으로 구글의 주장이 인정되었다. 판결에 결정적인 것이 robots.txt였다. 원고인 필드는 robots.txt로 크롤러의 접속을 금지하는 방법을 알고 있었지만 그 방법을 쓰지 않았기 때문에 재판에서 저작권 침해를 주장할 수 없었다. 

 

robots.txt 웹사이트에서는 관련 판례를 몇 가지 소개하고 있다. 웹 서비스 제공자와 크롤러 제작자 사이에 계약서를 쓰지 않지만, robots.txt를 설치하면 웹 서비스 제공자가 명확히 의사를 표명한 것으로 봐야 하므로 크롤러는 이를 지켜야 한다. 또한, robots.txt를 설치해 거부하지 않는 콘텐츠를 크롤러가 이용하는 것은 '금반언원칙'을 어기는 것으로 필드 대 구글사건처럼 소송이 기각된다.

 

찾아보니 웹 서비스를 제공하는 유명한 회사들은 robots.txt를 제공한다.

네이버 robots.txt

위 robots.txt 파일의 의미는 사이트의 루트 페이지만 수집 허용으로 설정한다는 것이다. 이전 프로젝트를 진행하며 Indeed라는 공고 사이트에서 크롤링을 하려한 적이 있었는데, 크롤링을 하지 못하도록 막혀있었던 경험이 있다. http://www.indeed.com/robots.txt를 확인해보니 경로를 Disallow 해놓은 것을 확인할 수 있다.

 

3. 사이트맵

사이트맵은 웹사이트에 포함된 페이지 목록과 메타데이터를 제공하는 XML 파일로, 2005년에 구글이 개발해 야후나 마이크로소프트에서도 이용하게 됐다. robots.txt가 블랙리스트처럼 사용된다면, 사이트맵은 화이트리스트처럼 사용된다. 사이트맵은 구글, 야후, 마이크로소프트가 공동으로 운용하는 다음 사이트에 사양이 공개되어 있다.

사이트맵 사이트에는 기본 설정 항목이 정의되어 있지만, 해석하는 검색 엔진마다 다른 기능이 추가되기도 한다. 아래 예제처럼 XML 형식으로 기술한다.

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      <loc>http://www.example.com/</loc>

      <lastmod>2005-01-01</lastmod>

      <changefreq>monthly</changefreq>

      <priority>0.8</priority>

   </url>

</urlset>

 

이 <url> 태그를 등록하고 싶은 페이지 수만큼 작성한다. <loc>는 절대 URL이다. xml 형식이 가장 많이 사용되지만 단순히 URL이 나열된 txt 파일이나 Rss 등의 형식도 사이트맵으로 사용할 수 있다.

 

사이트맵은 robots.txt에 쓸 수도 있다. 또한, 각 검색 엔진에 XML 파일을 업로드하는 방법도 있다. 아래는 robots.txt에 작성한 예시이다.

Sitemap: http://www.example.org/sitemap.xml

 

구글의 경우는 사이트맵을 사용해 웹 사이트의 메타데이터를 검색 엔진에 전달할 수 있다.

 

 

 

 

Reference

  • 리얼월드 HTTP : 역사와 코드로 배우는 인터넷과 웹 기술

 

+ Recent posts