본문 바로가기
개발

[HTTP 완벽 가이드] 9.3~9.4.6 부적절하게 동작하는 로봇과 로봇 차단 방법

by soyooooon 2024. 12. 24.
반응형

9.3 부적절하게 동작하는 로봇들

9.3절에서는 부적절하게 동작하는 로봇들에 대해 소개하고 있다.

[부적절한 동작 예시]

- 폭주하는 로봇 : 논리적인 에러를 갖고 있거나 순환에 빠지는 경우. 웹 서버에 극심한 부하를 일으켜 서비스 사용을 못하게 만들 수 있음

- 오래된 URL : URL 목록 방문 시 목록이 오래 되었다면 존재하지 않는 URL에 대해 요청을 보내게 될 수 있음.

- 길고 잘못된 URL : 순환이나 프로그래밍상의 오류로 인해 길고 잘못된 URL을 요청하여, 웹 서버의 처리 능력에 영향을 줄 수 있음

- 호기심이 지나친 로봇 : 사적인 데이터에 대한 URL에 접근하는 경우

- 동적 게이트웨이 접근 : 게이트웨이 애플리케이션의 콘텐츠에 대한 URL로 접근하는 경우

9.4~9.4.6 로봇 차단하기

웹 서버가 robots.txt를 통해 어떤 로봇이 어떤 부분에 접근할 수 있는지에 대한 정보를 제공할 수 있다. 그리고 로봇은 HTTP GET 메서드를 이용해 robots.txt를 먼저 확인하고 접근이 가능한지를 파악하는 과정을 거친다. 로봇 차단에 대한 표준이 존재하는데, v0.0, v1.0, v2.0이 있지만 v2.0은 복잡성으로 인해 널리 채택되고 있지는 않다.

로봇이 robots.txt를 요청할 때 존재한다면 text/plain 본문을 반환하게 되고 404를 반환한다면 접근 제한이 없다는 것으로 판단하여 어떤 파일이든 요청하게 된다. 요청을 보낼 때는 사이트 관리자가 로봇의 접근을 추적할 수 있도록 From, User-Agent를 통해 정보를 남겨야 한다. 추후 문제가 있을 때 사이트 관리자가 확인할 수 있게 하기 위함이다.

 

[robots.txt 요청 시 응답코드에 따른 작업]

- 200 : 응답 콘텐츠 파싱 후 규칙 파악

- 404 : 제약 없이 사이트 접근

- 401, 403 : 접근 제한으로 판단

- 503 : 일시적으로 실패한 것으로 판단하고 뒤로 미뤄야 함

- 3XX : 리소스가 발견될 때까지 리다이렉트를 따라야 함

 

robots.txt의 파일 포맷은 User-Agent, Disallow/Allow 정보로 이루어져 있다. 하지만 robots.txt 명세가 발전하면서, 사용하는 로봇의 종류에 따라 User-Agent, Disallow, Allow 외 다른 필드를 이해하지 못할 수 있는데, 이런 경우에는 해당 필드를 무시해야 한다. 또 robots.txt를 매 파일 접근 시 확인해야 했다면 로봇을 덜 효율적으로 만듦과 동시에 웹 서버의 부하 또한 늘릴 수 있는데, robots.txt의 결과를 캐시함으로써 이를 해결할 수 있다. 하지만 Cache-Control, Expires 헤더에 주의를 기울여 robots.txt의 업데이트를 파악할 수 있도록 해야 한다.

robots.txt 파일과 상호작용하는 펄 라이브러리도 존재한다. '펄 라이브러리'가 무엇인지 궁금하여 확인해보니, '펄'은 프로그래밍 언어의 일종이다. 따라서 robots.txt 파일을 로드하고 사이트 URL을 가져올 수 있는지 검사하는 등에 사용되는 라이브러리라고 간단하게 생각하면 된다. 책에서 소개된 예로는 CPAN 공개 펄 아카이브의 WWW:RobustRules가 있다.

반응형