주소를 발견하는 대로 목록에 넣으면 끝나지 않는 경로에 빠집니다. 크롤러 특유의 함정이고, 대응은 대개 상한입니다.
무한히 만들어지는 주소
달력 페이지의 "다음 달" 링크는 끝이 없습니다. 각 페이지에는 내용이 거의 없고 링크만 있습니다. 정렬 옵션이나 필터가 조합되는 페이지도 같습니다.
그대로 두면 한 사이트가 목록과 예산을 다 먹습니다. 앞에서 본 호스트 편중 문제의 극단적인 형태입니다.
세 가지 상한
| 상한 | 막는 것 |
|---|---|
| 호스트별 주소 수 | 한 사이트의 독점 |
| 경로 깊이 | 끝없이 이어지는 링크 사슬 |
| 같은 형태 주소 개수 | 매개변수만 바뀌는 무한 조합 |
세 번째가 특히 쓸모 있습니다. 주소에서 숫자와 날짜를 빼고 형태만 남겨 세어 보면, 같은 형태가 수천 개 나오는 것이 함정의 신호입니다.
내용이 없는 페이지를 의심한다
함정 페이지의 공통점은 내용이 거의 없고 링크만 많다는 것입니다. 이 비율을 재면 함정을 자동으로 찾을 수 있습니다.
본문 길이가 아주 짧다
그런데 링크가 아주 많다
그 링크들이 같은 형태다
세 조건이 함께 나타나면 그 경로의 우선순위를 크게 낮춥니다. 막는 것이 아니라 뒤로 미루는 것이 안전합니다. 진짜 목록 페이지도 이 모양을 갖기 때문입니다.
리디렉션 사슬
주소가 다른 주소로 보내고 그것이 또 보내는 경우가 있습니다. 끝이 없거나 원래 자리로 돌아오기도 합니다.
| 대응 | 내용 |
|---|---|
| 사슬 길이에 상한을 둔다 | 대개 다섯 번이면 충분하다 |
| 지나온 주소를 기억한다 | 돌아오는 것을 감지한다 |
| 최종 주소를 정본으로 기록한다 | 다음에 바로 간다 |
상한이 놓치는 것이 있다
상한은 값싸고 확실하지만 정상 사이트의 깊은 내용도 함께 자릅니다. 아주 큰 사전 사이트나 자료 저장소가 그렇습니다.
그래서 상한을 호스트마다 다르게 둡니다.
과거에 좋은 내용을 많이 낸 호스트는 상한을 높인다
새 호스트는 낮게 시작한다
신뢰를 쌓은 곳에 더 많은 예산을 주는 구조입니다. 우선순위 신호와 같은 자료를 쓰므로 따로 관리할 것이 늘지 않습니다.
함정은 악의가 아닐 때가 많다
일부러 크롤러를 괴롭히는 경우도 있지만 대부분은 그냥 그렇게 만들어진 사이트입니다. 의도를 판단하려 하지 않고 결과로 다룹니다. 예산을 많이 먹고 얻는 것이 적으면 뒤로 미루는 것으로 충분합니다.