본문 바로가기
코딩강좌/코딩상식

초보 개발자가 꼭 알아야 할 검색 엔진 노출 원리 - robots.txt

by 대디동동 2023. 9. 6.
728x90

안녕하세요. 대디동동 동코딩동 시간입니다.

 

이번 시간에는 초보(주니어) 웹 개발자님이 꼭 알아야 할 노하우 중에서

검색 원리를 이해할 수 있는 robots.txt에 대해서 설명해 드리겠습니다.

 

우선 검색 엔진에 대한 이해가 필요한데, 내용이 복잡해질 수 있으니 자세한 설명은 별도의 게시물을 통해서

알려드리도록 하겠습니다.

 

이번 시간에서는 간단하게 구글(google.com), 네이버(naver.com), 다음(daum.net), 빙(bing.com) 등의

사이트를 통해서 궁금해 하는 내용을 넣으면 해당 내용에 관련한 전 세계 수많은 문서를 쉽게 볼 수 있도록

만든 프로그램이라고 보시면 됩니다.

 

검색 이미지
출처 : pixabay.com

 


간단 용어 설명

크롤링(crawling), 스크레이핑(scraping)

  • 웹 페이지를 가져와서 데이터를 추출하는 행위
  • 크롤링 : 동적으로 웹 페이지를 돌아다니면서 데이터 수집
  • 스크레이핑 : 하나의 페이지만 수집
  • 방식의 차이가 있으나 비슷한 개념으로 혼용하여 사용됨

크롤러(crawler)

  • 크롤링, 스크레이핑 작업을 하는 소프트웨어

봇(bot), 스파이더(spider), 에이전트(agent) 또는 지능형 에이전트(intelligent agent) 

  • 프로그램화된 방식에 따라 계속해서 새로운 웹 페이지를 찾고, 그 결과를 이용해 색인을 추가하는 작업을 반복 수행
  • 구글, 네이버, 빙 이외에 많은 종류가 만들어져 있음
  • 검색 엔진의 인덱싱 (빨리 찾기 위한) 목적으로 사용

위 용어에 대하여 간단하게 이해를 하시고 계속해서 읽어 보시면 좋겠습니다.


크롤링 방식의 간단한 이해

구글, 네이버, 빙 등 검색 사이트의 검색 엔진에서 크롤링을 하는데,

이때 일일이 사람이 수작업으로 할 수도 없으니 봇(bot)이라는 자동화된 프로그램을 통해

전 세계의 웹 사이트를 하나하나씩 방문하고 거기에 있는 내용을 검색 엔진에 넣어 주면

그 내용을 우리가 검색해서 보게 됩니다.

 

robots.txt 사용 배경

이렇게 크롤링한 자료를 검색 엔진에 넣어 주는데,

이 과정을 해당 웹 사이트를 만든 사람 또는 콘텐츠를 제작한 사용자의 동의를 얻지 않고

무작위적으로, 강제적으로 수집해서 제 3자가 검색해서 볼 수 있는 문제를 해결하고자 등장하였습니다.

 

상업적이거나 홍보용 내용의 경우 많은 사람에게 알려지면 좋겠지만,

개인적이거나 중요한 내용이 알려지면 안 되는 경우도 있기 때문입니다.

 

그래서, 이로한 부분별 한 크롤링을 막기 위해서 등장한 것이 robots.txt입니다.

각 사이트마다 robots.txt 파일을 만들고 그 파일 안에 크롤링 허용, 허용 안 함 등 기록해 놓으면,

해당 봇(bot)이 왔을 경우 제일 먼저 robots.txt 파일을 읽어서 

"이 사이트는 크롤링하면 안 되는구나, 다른 사이트에 가자!"

또는 "이 사이트는 크롤링해도 되는구나"하며 크롤링을 선택적으로 실행합니다.

 

이러한 봇(bot)이 전 세계적으로 많으니 규약화해서 모두 지켜보는 게 어때?라는 권고안입니다.

 

중요한 것은 현재 글 작성 시점으로 아직 권고안이라 꼭 지킬 의무가 없다를 기억하셨으면 합니다.

이로 인해서 규칙을 지키지 않는 크롤링은 막을 수 없습니다.

(단, 방화벽을 이용한 아이피 차단,  Agent  차단 등으로 가능)

 


그럼, 어떻게 설정해야 하는지에 대한 설명을 드리겠습니다.

robots.txt 설정 방법

규칙설명

User-agent: *
Disallow: /guestbook
Disallow: /m/guestbook
Disallow: /manage
Disallow: /owner
Disallow: /admin
Disallow: /search
Disallow: /m/search

User-agent: bingbot
Crawl-delay: 20

위 내용은 https://daddydongdong.tistory.com/robots.txt 파일 내용입니다.

  • User-agent는 허용, 비허용할 agent 이름 기록합니다. (* 표시는 모두 허용)
  • Disallow : 허용하지 않을 폴더, 파일을 기록합니다.
  • Allow : 허용할 폴더, 파일
  • Crawl-delay : 크롤링 지연 시간, 지원하지 않는 경우도 있고, bot 마다 옵션도 상이하여 잘 사용되지 않습니다.
  • Sitemap : 해당 사이트의 사이트맵을 지정해 줄 수도 있습니다만, 구글, 네이버 등 검색 도구에서 별도로 등록을 해야 하기 때문에 설정하지 않아도 됩니다.

따라서, 위 내용은

1) 모든 크롤러에 대해서 허용하되,

    /guestbook, /m/guestbook, /manage, /owner, /admin, /search, /m/search 하위 폴더는 크롤링 금지

2) bingbot 은 delay를 20 준다는 의미입니다.


설정예시

1. 모든 크롤링에 대해서 모든 문서에 대해 접근 허용

User-agent: *
Allow: /

2. 모든 크롤링에 대해서 모든 문서에 대해 접근 차단

User-agent: *
Disallow: /

3. 모든 크롤링에 대해서 특정 디렉터리의 접근 허용

User-agent: *
Allow: /foo/bar/
Allow: /public_data/

4. 모든 크롤링에 대해서 특정 디렉터리의 접근 차단

User-agent: *
Disallow: /foo/bar/
Disallow: /privacy/

5. 특정 크롤러에 대해서 모든 디렉토리 접근 차단

User-agent: bingbot
Disallow: /

7. 하나의 크롤러만 허용

User-agent: Unnecessarybot
Disallow: /

User-agent: *
Allow: /

7. 단일 웹 페이지 클롤링 금지

User-agent: *
Disallow: /useless_file.html
Disallow: /junk/other_useless_file.html

8. 특정 하위 디렉터리를 제외한 전체 사이트 크롤링 금지

User-agent: *
Disallow: /
Allow: /public/

9. 특정 파일만 금지

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

10. 여러 개 적용

User-agent: Daum
User-agent: Googlebot
Allow: /

User-agent: Yeti
User-agent: AdsBot-Google
Disallow: /

주의사항

  • 파일명은 반드시 robots.txt 이어야 함 (주니어 개발자님이 가장 실수를 많이 하는 부분입니다)
    • robots.txt ===> O
    • robot.txt ===> X
  • 규칙은 대소문자를 구분합니다.
    • disallow: /file.asp
      • https://www.example.com/file.asp ====> 적용됨
      • https://www.example.com/FILE.asp ====> 적용 안됨
  • 웹 사이트의 루트 폴더(최상위 폴더)에 위치하고 있어야 함
    • https://daddydondong.tistory.com/robots.txt ===> O
    • https://daddydondong.tistory.com/test/robots.txt ===> X

유명한 Bot User-Agent목록

이름 User-Agent
Alexa ia_archiver
Bing BingBot
Baidu Baiduspider
Daum Daumoa
Google Googlebot
Google Image Googlebot-image
Msn MSNBot
Naver Yeti

정리

이번 시간에는 robots.txt 파일에 대한 설명을 드렸습니다.

 

서두에 말씀드린 것 같이 robots.txt 는 권고안이라서 이를 지키기도 하고 안 지키기도 하며,

어떤 옵션은 무시하기도 합니다.

 

따라서, 설정하셨더라도 불량 bot을 통해서 검색 엔진에 노출되기도 하니,

보안이 필요한 사이트는 외부망(인터넷)에 노출시키지 않는 것이 좋습니다.

 

그럼, 다음 시간에도 주니어 개발자 분들에게 도움이 될 만한 내용을 준비해서 올리겠습니다.

 

 

반응형