안녕하세요. 대디동동 동코딩동 시간입니다.
이번 시간에는 초보(주니어) 웹 개발자님이 꼭 알아야 할 노하우 중에서
검색 원리를 이해할 수 있는 robots.txt에 대해서 설명해 드리겠습니다.
우선 검색 엔진에 대한 이해가 필요한데, 내용이 복잡해질 수 있으니 자세한 설명은 별도의 게시물을 통해서
알려드리도록 하겠습니다.
이번 시간에서는 간단하게 구글(google.com), 네이버(naver.com), 다음(daum.net), 빙(bing.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 ====> 적용 안됨
- disallow: /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 |
Googlebot | |
Google Image | Googlebot-image |
Msn | MSNBot |
Naver | Yeti |
정리
이번 시간에는 robots.txt 파일에 대한 설명을 드렸습니다.
서두에 말씀드린 것 같이 robots.txt 는 권고안이라서 이를 지키기도 하고 안 지키기도 하며,
어떤 옵션은 무시하기도 합니다.
따라서, 설정하셨더라도 불량 bot을 통해서 검색 엔진에 노출되기도 하니,
보안이 필요한 사이트는 외부망(인터넷)에 노출시키지 않는 것이 좋습니다.
그럼, 다음 시간에도 주니어 개발자 분들에게 도움이 될 만한 내용을 준비해서 올리겠습니다.
'코딩강좌 > 코딩상식' 카테고리의 다른 글
인터넷 네트워크 BPS 통신 속도 제대로 해석하기 (0) | 2023.09.18 |
---|---|
파일 용량 단위 기가, 테라 바이트만 알고 계시나요? (0) | 2023.09.16 |
초보 프로그램 개발자가 알아야 할 시간 단위 s, ms, μs, ns (0) | 2023.09.14 |
알고리즘 (Algorithm), 상식으로 알아 두세요. (0) | 2023.09.13 |
어떻게 전 세계 사람들과 인터넷이 연결되어 있을까? (0) | 2023.09.12 |