티스토리 뷰


웹서버 검색엔진 봇 접근 제한하기 (Robot.txt)



검색봇 이라는것은 스파이더 (spider) 혹은 크롤러 (crawler) 라고 불리우며 웹사이트의 모든 내용을 읽는 역활을 한다.


자신들의 검색능력과 정확한 색인을 업데이트 하여 사용자들에게 정확하고 신뢰할수 있는 검색정보를 제공하고자 함인데


물론 웹사이트 주인 입장에서는 자신의 웹사이트가 검색엔진에 노출이 되고 많은 방문자가 늘어 날 수 있으므로 좋은 기회이며


좋은 현상이라고 할수 있으나 검색봇은 때때로 아래와 같은 단점이 있다.




검색봇 문제점


 

1. 웹사이트를 항시 크롤링 하며 모든 정보를 READ 하기 때문에 네트워크나 부하적인 측면에서 웹서버의 부하를 야기 시킬수 있다.


2. 보안이 되지 않는 개인정보들은 검색엔진에 노출될수 있다. (전화번호, 인명부)


3. 웹서버 1대의 경우 작은 네트워크양 이지만 이게 몇천대가 몇만대의 경우라고 보면 엄청난 트래픽이 발생한다.



단순히 검색봇은 정보만 수집하며 수집된 정보는 검색엔진에 색인하고 편집되고 수정되어 지는데는 주단위 정도의 시간이 걸린다고 함




웹서버의 웹로그를 보면 아래와 같이 검색봇이 다녀간 흔적? 을 볼수 있다.


 

아이피 - - [29/Jun/2016:20:24:43 +0900] "GET / HTTP/1.1" 403 4961 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"



검색봇은 고유한 User-Agent 값을 가지고 있으며 자신의 정체가 무엇인지 정확히 밝히고 있다.


정상적인 표준을 따르고 있는 검색봇은 웹문서 최상위 디렉토리에 robot.txt 파일을 참고하여 동작하게 된다.



robot.txt

 


로봇이 임의의 SITE/ 에 방문하면 먼저 SITE/robots.txt 파일 호출함 (정상적인 정보 수집 BOT일때)


로봇의 접근 권한 및 접근가능한 경로에 대한 정보를 분석하여 자신이 수집해도 되는 콘텐트만을 수집한다


웹 사이트의 최상위 루트에 robots.txt 파일이 있어야함


robots.txt 화일에는 최소한 한개의 "disallow" 필드(field)가 존재해야 함

robot.txt 파일이름은 소문자로 작성 (공백 허용되지 않음) 


위는 표준을 준수? 따르는 검색봇인 경우에 해당됨 표준이라는것이 약속이라는 개념이므로 검색엔진에서 이를 무시한다고 해서 제제할수 있는 방안은 없는것으로 알고 있다.



ex) 예제들



홈페이지 전체가 모든 검색엔진에 노출되기를 원치 않음

User-agent: *

Disallow: /


홈페이지 전체가 모든 검색엔진에 노출되기를 원함
User-agent: *

Disallow:


홈페이지 디렉토리중 일부만 검색엔진에 노출하고 싶음

User-agent: *
Disallow: /my_photo/
Disallow: /my_diary/


홈페이지 전체를 노출시키지만 특정 검색엔진 (EvilRobot)만 거부
User-agent: EvilRobot
Disallow: /


홈페이지 전체가 노출되지만 특정검색엔진에서만 노출되기를 원함
User-agent: NaverBot
Disallow:
User-agent: *
Disallow: /


/help.html과 /help/index.html 둘 다 허용 안함
disallow: /help

/help/index.html는 허용 안하나, /help.html은 허용 됨. 
disallow: /help/ 

루트 하위에 있는 xml 확장자를 가진 모든 파일의 색인을 거부
Disallow: /*.xml$ 

루트에 test.html 과 ?가 포함된 파일의 색인을 거부한다
Disallow: /test.html? 


구글의 이미지를 검색하는 로봇에게 gif와 jpg로 된 이미지를 모두 검색하지 않도록 함

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


특정봇의 방문주기 변경

User-agent: 검색봇 이름

Crawl-delay: 30




예외적인 상황들



HTML (HEAD) 와 (/HEAD) 사이에 (META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW")

라는 메타태크그를 추가함으로써 문서 하나하나에 대해 정확하게 명시를 해주므로 가장 확실하게 로봇 접근을 차단할수 있음

검색엔진에 Robot를 차단하더라도 자신의 페이지중 일부가 나타날수 있음
기타 문서나 사이트들이 자신의 웹 문서를 링크할 경우 자동적으로 생성되어 나타날수 있음
이 경우 Robot 과 무관함 (robots.txt 를 무시하는 로봇들도 있을수 있음)
Robot 들의 IP들을 알 경우 IP를 통해 정책수립해도 상관없음

주석문을 작성하기 위해서는 앞에 #를 적어주시면 됩니다. 

로봇의 이름은 개별 검색사이트를 방문해야함 




로봇들 Agent 이름명



구글: Googlebot
구글 이미지 : googlebot-image
네이버 : cowbot

네이버 : User-Agent: Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)
야후 : Slurp
야후 이미지 : Yahoo-MMCrawler
엠파스봇 : empas
MSN : MSNBot
첫눈: 1Noonbot 1.0

다음 : Daumoa 





실제 Apache Log (구글봇 접근)


61.xx.xx.84 - - [22/Aug/2010:06:10:03 +0900] "GET /robots.txt HTTP/1.1" 404 -
61.xx.xx.84 - - [22/Aug/2010:06:10:03 +0900] "GET /152 HTTP/1.1" 200 54216

 

61.xx.xx.84 로봇이 접근해서 robot.txt 파일을 읽었는데 404에러 robot.txt 파일이 없다.???
없으니깐 /152번 글을 GET 해가지고 갔다? 200 정상 메세지니깐??

 


봇 아이피를 이용한 제어



IP 기반으로 차단하기 위해서는 해당 봇들에 대한 아이피 정보들을 가지고 있어야 함


아래 사이트에서는 각 검색엔진들의 아이피 정보를 제공한다.


http://iplists.com

사이트 접근하면 각종 봇들에 대한 아이피 대역 리스트를 받아 볼수 있음.

해당 사이트의 정보들을 가지고 방화벽 운영해본 결과 그럭저럭 맞는거 같음 




검색봇 표준? 관련 사이트


http://www.robotstxt.org/




참고 사이트


 

http://x-mind.co.kr/v1/board/hp_know/1630.html

http://help.naver.com/customer/etc/webDocument.nhn 

https://udger.com/resources/ua-list/bot-detail?bot=NaverBot




댓글
  • 프로필사진 비밀댓글입니다 2016.03.12 13:45
  • 프로필사진 초보의 CHOMAN 네 감사합니다. 일본 야후 봇이 따로 운영되지는 모르겠지만...
    야후 검색봇 전체가 막힐 가능성이 있기 때문에 정확히 일본 야후 검색봇만 차단하실려고 하면 웹서버의 ACCESS LOG 분석후에 야후봇 중에 일본쪽 아이피만 차단하는게 제일 정확할거 같기도 하네요~
    2016.03.18 09:36 신고
  • 프로필사진 비밀댓글입니다 2016.03.18 18:57
  • 프로필사진 비밀댓글입니다 2018.05.31 14:29
  • 프로필사진 초보의 CHOMAN 안녕하세요
    정확한 User-Agent 명은 Daumoa
    라고 되어 있네요 D 가 대문자로 한번 고쳐보시고 안되면
    http://www.botreports.com/user-agent/daumoa.shtml
    여기 한번 참고해보세영~~
    2018.09.21 14:49 신고
댓글쓰기 폼