Sky Archive

프로그래밍

[robots.txt] 검색 엔진 봇, robots.txt 적용 하는 법 및 가이드

Anchovy ʕ-᷅ᴥ-᷄ʔ 2022. 11. 22. 13:54

 

 
robots.txt는 무엇인가?

 

robots.txt 파일은 사이트의 루트에 위치하며 사이트에서 검색 엔진 크롤러가 액세스 하지 않기를 바라는 부분을 표시합니다. 파일에서는 로봇 배제 표준 프로토콜의 명령을 사용하여 섹션별, 웹 크롤러 종류별 (모바일 크롤러, 데스크톱 크롤러 등)로 사이트에 대한 액세스 권한을 표시합니다.

로봇 배제 표준은 웹 사이트에 로봇이 접근하는 것을 방지하기 위한 규약으로, 일반적으로 접근 제한에 대한 설명을 robots.txt에 기술한다. 이 규약은 1994년 6월에 처음 만들어졌고, 아직 이 규약에 대한 RFC는 없다. 이 규약은 권고안이며, 로봇이 robots.txt 파일을 읽고 접근을 중지하는 것을 목적으로 한다.
따라서, 접근 방지 설정을 하였다고 해도, 다른 사람들이 그 파일에 접근할 수 있다. robots.txt 파일은 항상 사이트의 루트 디렉토리에 위치해야 한다.

 

웹상에서 다양한 목적으로 크롤링(crawling, 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위)이 이루어지며 검색 엔진 또한 사용자에게 원하는 데이터를 제공하기 위하여 정보들을 끊임없이 검색하여 색인하는 작업을 반복합니다. robots.txt를 사용해 검색 크롤러에 의한 페이지의 과부하를 방지할 수 있습니다. 대다수의 봇들은 해당 robots.txt를 참조하여 정보를 검색합니다.

그렇기 때문에 robots.txt로 크롤링 트래픽을 관리하기 위해 페이지의 크롤링을 방지하기 위해 작성합니다.

그러나 robots.txt는 접근 제한에 대한 참조 문서일 뿐이지 크롤러가 접근하고자 한다면 할 수 있어요.

 

작성 시 참고할 지시어

user-agent: 규칙이 적용되는 크롤러의 이름
disallow: 디렉토리 또는 페이지 크롤링을 차단
allow: 디렉토리 또는 페이지 크롤링을 허용 (구글 봇에만 적용 가능)
sitemap: 웹사이트의 모든 리소스를 나열한 목록 파일
* 크롤링 봇 이름: Googlebot (구글), Yeti (네이버), Bingbot (빙), Slurp (야후)

 

Spring에서 robots.txt 적용 방법

1. robots.txt 파일 생성

일반 텍스트 파일로 작성해야 하고 루트 디렉토리에 위치

폴더명 맨 뒤에는 / 를 붙여야 정상적으로 작동

 

robots.txt 예시

User-agent: *
Disallow: /

※ 모든 봇의 모든 경로 접근 불허

 

 

2. @RequestMapping

@RequestMapping(value = "/robots.txt")
@ResponseBody
public void robotsBlock(HttpServletRequest request, HttpServletResponse response) {
	try {
		response.getWriter().write("User-agent: *\nDisallow: /\n");
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

따로 txt 파일을 만들지 않고도 RequestMapping에 robots.txt를 맵핑해주고 이후 response 객체를 통해 텍스트를 적어주면 적용할 수 있다.

 

3. 예시

- 크롤링 차단

User-agent: *
Disallow: /

 

- 크롤링 허용

User-agent: *
Disallow:

 

- 특정 크롤러 차단

User-agent: GoogleBot
Disallow: /

 

- 크롤러 차단, 특정 위치

User-agent: *
Disallow: /tmp/
Disallow: /junk/

 

- 특정 크롤러 차단, 특정 웹페이지

User-agent: Yeti
Disallow: /subfolder/blocked-page.html

 

- 하나의 크롤러만 허용

User-agent: Googlebot-news
Allow: /

User-agent: *
Disallow: /

 

- 이미지 크롤링 차단

User-agent: Googlebot-image
Disallow: /images/dogs.jpg

 

- 특정 문자열로 끝나는 URL 크롤링 차단

User-agent: Googlebot
Disallow: /*.gif$

User-agent: Googlebot
Disallow: /*.xls$

(.xls는 엑셀 링크, .gif는 GIF 파일, 크롤러의 해당 URL 액세스를 차단하고 싶으면 뒤에 $ 표기)

 

 

 

 

 

 

 

 

 

* robots.txt 테스터 : google search bot