버튼 수집상

[책] HTTP 완벽 가이드 - 9장 웹 로봇 본문

일상 - 책

[책] HTTP 완벽 가이드 - 9장 웹 로봇

cocokaribou 2025. 2. 17. 19:05

웹 로봇

사람과의 상호작용 없이 연속된 웹 트랜잭션들을 자동으로 수행하는 소프트웨어

'크롤러', '스파이더', '웜', '봇'

 

  • 인터넷 검색엔진은 웹을 돌아다니면서 그들이 만나는 모든 문서를 끌어오기 위해 크롤러를 사용한다.
  • 크롤러가 리퀘스트를 빠르게 요청하면서 네트워크 대역폭을 다 차지하는 현상을 방지해야 한다.

URL 인덱싱

  • 크롤러는 어떤 URL이 방문했던 곳인지 빠르게 결정하기 위해 검색 트리나 해시 테이블을 필요로 함.
  • 다양한 형식의 URL을 표준형식으로 정규화할 수 있다.
첫번째 URL 두번째 URL 두 URL이 같은 경우
http://www.foo.com/bar.html http://www.foo.com:80/bar.html 기본포트가 80번
http://www.foo.com/~fred http://www.foo.com/%7fred %7이 ~과 같을 때
http://www.foo.com/x.html#early http://www.foo.com/x.html#middle 태그에 따라 페이지가 바뀌지 않을 때
http://www.foo.com/ http://www.foo.com/index.html 메인이 index.html일 때

 

도입할 수 있는 URL 정규화 규칙들: 태그를 뺀다, 기본포트 번호를 부여한다 등

 

휴리스틱

  • 자율적으로 구동되는 로봇을 구현하기 위한 몇 가지 기법
  • trade-off: 유효한 정보를 거를 수도 있음.
  • 기법 1) URL 정규화
  • 기법 2) 너비 우선 크롤링 (BFS) - 페이지 중 하나에서 URL 순환 구조에 빠져도 다른 페이지에 접근할 수 있다.
  • 기법 3) 스로틀링 throttling

크롤러 Crawler vs 스크래퍼, 스크레이퍼 Scraper

 

Crawler Scraper
URL 인덱싱.
시드 URL부터 시작해서 웹페이지 구조를 파악하거나 연관 페이지의 링크를 모두 찾는다.
미리 지정된 URL을 사용.
JSON이나 DB처럼 구조화된 결과를 반환
목적은 '발견' 목적은 '특정 정보 추출'
검색엔진, 대규모 데이터 수집 등 가격정보 추출, 메타 데이터 추출 등

 

검색엔진은 빅데이터 기술에 대한 필요를 야기했다.

 

HTTP 리퀘스트

  • 로봇임을 알리는 헤더를 넣는 것을 권장.
User-Agent 서버에게 알리는 로봇의 이름
From 로봇 관리자의 이메일 주소
Accept 서버가 보내도 되는 미디어 타입
Referer 현재의 요청 URL을 포함한 문서의 URL
-> 사이트 관리자들에게 그들의 링크를 어떻게 발견했는지 알려줌

 

 

추가) 상태코드

100 - 101 정보
200-206 성공
300-305 리다이렉션
400-415 클라이언트 에러
500-505 서버 에러

 

모든 서버가 항상 적절한 에러 코드를 반환하지는 않는다는 걸 기억하기.

 

웹/로봇 표준

일반적으로 공개된 인터넷을 통해 리소스가 접근 가능하다면, 어디서든 접근할 수 있는 것이다.
인터넷에 링크가 존재하는 한 진정한 의미의 사적인 리소스는 거의 없다.

-> 로봇이 따라야할 표준 지침이 있다.

 

Robots Exclusion Standard a.k.a. robots.txt

  • 서버의 문서 루트에 위치
  • 서버루트/robots.txt의 GET 리퀘스트가 404를 반환하면 해당 사이트가 로봇 접근을 막지 않는 것으로 간주.

HTML 로봇 제어 META 태그

  • 서버 루트가 아닌 개별 페이지의 HTML 문서에 추가
<META NAME="ROBOTS" CONTENT=directive-list>
  • 메타 태그는 콘텐츠 색인을 만드는 검색엔진 로봇들에게 유용

그 밖의 로봇 가이드라인

  • 대역폭: 로봇이 돌아가는데 얼마나 많은 네트워크 대역폭이 사용 가능한지 이해하고 실제 사용량을 측정하라.
  • 분할 정복: 멀티 프로세서든 서버든 더 많은 하드웨어를 사용해야 할 경우가 있다.
  • 체크포인트: 실패한 위치에서 진행상황의 스냅샷 저장하기. 버그를 맞닥뜨렸을 때마다 재시작하지 않도록 설계하라.

현대적인 검색엔진 아키텍처

풀 텍스트 색인 full-text indexes

  • 웹의 모든 문서에 대한 일종의 카드 카탈로그
  • 단어 하나를 입력 받으면 그 단어를 포함하고 있는 문서를 즉각 알려주는 DB
  • 검색엔진 사용자 -> 핫봇이나 구글 같은 웹 검색 게이트웨이를 통해 풀 텍스트 색인에 query
  • 풀 텍스트 색인은 웹의 특정 순간에 대한 스냅샷에 가까움

 

 

728x90