기록하는 습관

[북스터디] HTTP 완벽 가이드 9장 본문

스터디/HTTP 완벽 가이드

[북스터디] HTTP 완벽 가이드 9장

로그뉴 2021. 5. 28. 13:35

HTTP 완벽 가이드 9 

  

9.1 크롤러와 크롤링 

  

9.1.1 어디에서 시작하는가: ‘루트 집합 

루트 집합: 크롤러가 방문을 시작하는 url들의 초기 집합 

 

 

 

위 그림에서 웹을 크롤링 하려고 한다면, 어떤 루트 집합이 좋은가? 

루트 집합에 A, G, S만 있다면 모든 페이지에 도달할 수 있다. 

진짜 웹에서는, 최종적으로 모든 문서로 이어지게 되는 하나의 문서란 없다. 

  

9.1.2 링크 추출과 상대 링크 정상화 

크롤러는 간단한 HTML 파신을 해서 이들 링크들을 추출하고 상대 링크를 절대 링크로 변환할 필요가 있다. 

  

9.1.3 순환 피하기 

 크롤링 할 때, 루프나 순환에 빠지지 않도록 조심해야 한다. 순환을 피하기 위해 로봇들은 자신들이 어디를 방문했는지 알아야 한다. 

 

  

9.1.4 루프와 중복 

순환이 크롤러에게 좋지 않은 이유 

1.     크롤러가 같은 페이지들을 반복해서 가져오는데 시간을 허비하거나, 네트워크 대역폭을 다 차지하고 그 어떤 페이지도 가져올 수 없게 되어 버릴 수도 있다. 

2.     크롤러가 같은 페이지를 반복해서 가져오면 고스란히 웹 서버의 부담이 된다. 

  

9.1.5 빵 부스러기의 흔적 

 크롤러가 방문했던 곳을 관리하기 위한 방법/자료구조 

- 트리와 해시 테이블 

- 느슨한 존재 비트맵 

- 체크포인트 

- 파티셔닝 

  

9.1.6 별칭과 로봇 순환 

 url이 또 다른 url에 대한 별칭이라면, 둘이 서로 달라 보이더라도 결국 같은 리소스를 가리키고 있다. 

  

9.1.7 url 정규화하기 

url이 다르더라도 같은 리소스를 가리키고 있는 문제를 해결하고자 정규화를 진행한다. 

  

1.     포트 번호가 명시되지 않았다면, 호스트 명에 ‘:80’을 추가한다. 

2.     모든 %xx 이스케이핑된 문자들을 대응되는 문자로 변환한다. 

3.     # 태그들을 제거한다. 

  

9.1.8 파일 시스템 링크 순환 

파일 시스템의 심벌릭 링크는 끝없이 깊어지는 디렉터리 계층을 만들 수 있기 때문에 순환을 유발할 수 있다. 

 

 

 

  

9.2 로봇의 HTTP 

현재 로봇은 HTTP/1.0 버전을 사용중이다. HTTP/1.1 버전보다 간소한 형태이기 때문이다. 

  

9.2.1 요청 헤더 식별하기 

User-Agent - 서버에게 로봇인지 명확히 알린다. 

From - 로봇의 사용자/관리자 이메일 주소를 제공한다. 

Referer - 현재 요청 URL을 포함한 문서의 URL을 제공한다. 

Accept - 로봇은 보통은 텍스트 또는 이미지만 받게 될 것이다. 

  

9.2.2 가상 호스팅 

로봇은 요청에 Host 헤더를 포함해야 한다. 포함하지 않으면 로봇이 어떤 url에 대해 잘못된 콘텐츠를 찾게 만들기 때문이다. 

  

9.4 로봇 차단하기 

robots.txt : 어떤 로봇이 서버의 어떤 부분에 접근할 수 있는지에 대한 정보가 담겨있음. 

 

 

 

  

9.4.2 웹 사이트와 robots.txt 파일들 

Url을 방문하기 전, 해당 웹사이트에 robots.txt 파일이 존재한다면 로봇은 반드시 그 파일을 가져와서 처리해야 한다. 

* robots.txt 파일 가져오기 

HTTP GET 메소드를 이용해 robots.txt 리소스를 가져온다. 

  

9.4.3 robots.txt 파일 포맷 

줄 기반 문법을 가지며, 각 줄은 빈 줄, 주석 줄, 규칙 줄 3가지 종류가 있다. 

  

#  robots.txt 파일은 slurp, webcrawler가 우리 사이트의 공개된  

# 영역을 크롤링 하는 것을 허용한다. 다른 로봇은 안된다. 

User-Agent: slurp 

User-Agent: webcrawler 

Disallow: /private 

  

User-Agent: * 

Disallow: 

  

 

 

Comments