ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 와 같다.

    참고자료

    HTTP 완벽 가이드

    반응형

    댓글

Designed by Tistory.