티스토리 뷰

Network

robots.txt

LichKing 2018. 1. 1. 15:31

크롤링 봇들은 항상 웹을 탐색하고다닌다. 전 회사에 재직중인시절 모니터링 시스템에 로그인하지않은 사용자가 자꾸 특정 api를 요청한다는 알림이 와서 봤더니 google bot 이라는 user agent를 담고있는 구글 크롤러를 만난적도 있다.


이런 크롤러들은 웹의 여기저기를 찌르고다니지만 경우에따라서 크롤러에게도 공개하고싶지않은 리소스나 특정 크롤러는 아예 접근하지못하게 하고싶은 경우도 있을 수 있다. 그럴때 사용하는것이 루트 url의 robots.txt 이다.


txt라고해서 무조건 정적 텍스트 파일을 반환해야하는것은 아니며 /robots.txt 로 get 요청을 날렸을때 Content-type: text/plan 형태의 문자 데이터만 반환하면 된다.


http header 포맷과 비슷하게 반환하면 되는데 key에 해당하는것들은


* User-agent

* Disallow

* Allow


가 대표적이다. 이외의 필드들도 몇몇 있기는 한데 많이 사용되지않으며 크롤러가 해당 필드를 지원하지않는 경우도 많다.


User-agent 는 봇의 이름을 적는다. *(Asterisk) 를 사용할 경우엔 와일드카드로 모든 봇들을 지칭하게된다. Disallow 는 봇의 접근을 막고자하는 url을 적는다. Allow 는 반대로 접근을 허용하는 url을 적는다.


User-agent 와 달리 Disallow, Allow 필드는 모든것을 의미할때 *가 아닌 공란으로 적는다.


Disallow:


라는 필드가 있다면 모든 url에 대해 접근을 막겠다는 의미이다. 필드들은 중첩될 수 있으며 중첩되어 여러 조건이 있을 경우 가장 첫번째에 매칭되는 조건이 사용된다.


User-agent: *
Disallow: /owner
Disallow: /manage
Disallow: /admin
Disallow: /oldadmin
Disallow: /search
Disallow: /m/search
Disallow: /m/admin
Disallow: /like
Allow: /

User-agent: Mediapartners-Google
Allow: /

User-agent: bingbot
Crawl-delay: 30

이건 현재 tistory 블로그의 robots.txt이다. 내 블로그 기준으로 http://multifrontgarden.tistory.com/robots.txt 을 접근하면 확인 할 수 있다. Crawl-delay 같은경우 특정봇에 대응하는 필드이며 User-agent가 bingbot인걸 보니 빙에 대응하는 필드로 유추할 수 있다.


참고로 robots.txt 가 없는 경우 어떤 제약조건도 없다는것이며 봇들이 맘대로 훑으면 된다는 의미이니 없다고 큰 문제가 발생하는것은 아니다.

'Network' 카테고리의 다른 글

post vs put  (6) 2019.04.10
robots.txt  (2) 2018.01.01
프록시 관련 HTTP header  (0) 2017.12.20
HTTP 메세저 형식  (0) 2017.12.04
Response Code  (0) 2016.11.14
HTTP Method  (0) 2016.11.08
댓글
댓글쓰기 폼