-
[HTTP 완벽 가이드] 9장. 웹 로봇Engineering/Network 2021. 10. 16. 22:01반응형
웹 로봇
- 웹 로봇은 사람과의 상호작용 없이 연속된 웹 트랜잭션들을 자동으로 수행하는 소프트웨어 프로그램이다.
- 많은 로봇이 웹 사이트에서 다른 웹 사이트로 떠돌아다니면서, 콘텐츠를 가져오고, 하이퍼링크를 따라가고, 그들이 발견한 데이터를 처리한다.
- 웹 로봇들은 그 방식에 따라 '크롤러', '스파이더', '웜', '봇' 등 다양한 이름으로 불린다.
크롤러와 크롤링
- 웹 크롤러는 웹 페이지를 한 개 가져오고, 그 다음 페이지가 가리키는 모든 웹 페이지를 가져오고, 다시 그 페이지들이 가리키는 모든 웹 페이지들을 가져오는 재귀적 방식으로 웹을 순회한다.
- 웹 링크를 재귀적으로 따라가는 로봇을 크롤러 혹은 스파이더라고 부른다.
- 이 문서들은 검색 가능한 데이터베이스로 만들어지고, 사용자들이 특정 단어를 포함한 문서를 찾을 수 있게 해준다.
루트 집합
- 크롤러가 방문을 시작하는 URL들의 초기 집합을 루트 집합이라 한다.
- 루트 집합을 고를 때는 모든 링크를 크롤링하면 결과적으로 관심 있는 페이지들의 대부분을 가져올 수 있도록 충분히 다른 장소에서 선택해야 한다.
순환 피하기
- 크롤링 할 때, 루프나 순환에 빠지지 않도록 조심해야 한다.
- 순환은 크롤러를 루프에 빠뜨려서 같은 페이지를 반복해서 가져오는데 모든 시간을 허비하게 만들 수 있다.
- 크롤러가 같은 페이지를 반복해서 가져오면 고스란히 웹 서버의 부담이 되고, 실제 사용자도 사이트에 접근할 수 없도록 막아버리게 될 수도 있다. 이러한 서비스 방해 행위는 법적인 문제제기의 근거가 될 수도 있다.
빵 부스러기의 흔적
아래의 내용은 웹 크롤러가 방문한 곳을 관리하기 위해 사용하는 유용한 기법들이다.
트리와 해시 테이블
- 방문한 URL을 추적하기 위해 검색 트리나 해시 테이블을 사용하여 URL을 훨씬 빨리 찾아볼 수 있게 해주는 소프트웨어 자료구조다.
느슨한 존재 비트맵
- 공간 사용을 최소화하기 위해, 몇몇 대규모 크롤러들은 존재 비트 배열(presence bit array)과 같은 느슨한 자료구조를 사용한다.
- 각 URL은 해시 함수에 의해 고정된 크기의 숫자로 변환되고 배열 안에 대응하는 '존재 비트(presence bit)'를 갖는다.
체크 포인트
- 로봇 프로그램이 갑작스럽게 중단될 경우를 대비해, 방문한 URL의 목록이 디스크에 저장되어 있는지 확인한다.
파티셔닝
- 몇몇 대규모 웹 로봇은 각각 분리된 한 대의 컴퓨터인 로봇들이 동시에 일하고 있는 팜(farm)을 이용한다.
- 각 로봇들은 URL들의 특정 한 부분이 할당되어 그에 대한 탐색을 책임진다.
robots.txt
- 웹 사이트의 어떤 URL을 방문하기 전에, 그 웹 사이트에 robots.txt 파일이 존재하면 로봇은 반드시 그 파일을 가져와서 처리해야 한다.
- HTTP GET 메서드를 이용하여 robots.txt 리소스를 가져온다. 존재하지 않으면 로봇의 접근을 제한하지 않는 것으로 간주한다.
robots.txt 포맷
# 이 robots.txt 파일은 Slurp과 Webcrawler가 우리 사이트의 공개된 # 영역을 크롤링하는 것을 허용한다. 그러나 다른 로봇은 안 된다. User-Agent: slurp User-Agent: webcrawler Disallow: /private User-Agent: * Disallow:
로봇 META 지시자
- robots.txt 파일은 사이트 관리자가 로봇의 접근을 제어하지만 HTML의 로봇 META 지시자는 HTML 페이지 저자가 HTML 문서에 직접 로봇 제어 태그를 추가할 수 있다.
- 로봇 META 태그는 다른 모든 HTML META 태그와 마찬가지로 반드시 HTML 페이지의 HEAD 섹션에 나타나야 한다.
NOINDEX
- 로봇에게 이 페이지를 처리하지 말고 무시하라고 말해준다.
NOFOLLOW
- 로봇에게 이 페이지가 링크한 페이지를 크롤링하지 말라고 말해준다.
INDEX
- 로봇에게 이 페이지의 콘텐츠를 인덱싱해도 된다고 말해준다.
FOLLOW
- 로봇에게 이 페이지가 링크한 페이지를 크롤링해도 된다고 말해준다.
NOARCHIVE
- 로봇에게 이 페이지의 캐시를 위한 로컬 사본을 만들어서는 안 된다고 말해준다.
ALL
- INDEX, FOLLOW 와 같다.
NONE
- NOINDEX, NOFOLLOW 와 같다.
참고자료
반응형'Engineering > Network' 카테고리의 다른 글
[HTTP 완벽 가이드] 10장. HTTP/2.0 (0) 2021.10.16 [HTTP 완벽 가이드] 7장. 캐시 (0) 2021.10.10 [HTTP 완벽 가이드] 6장. 프록시 (0) 2021.10.02 [HTTP 완벽 가이드] 5장. 웹 서버 (0) 2021.09.26 [HTTP 완벽 가이드] 4장. 커넥션 관리 (0) 2021.09.18