웹 사이트를 크롤링 할 때 좋은 시민이되는 방법?


83

다양한 공용 웹 사이트를 크롤링하고 해당 사이트의 데이터를 처리 / 집계하는 기능을 개발하려고합니다. 전자 메일 주소를 찾는 것과 같은 불길한 것은 없습니다. 실제로 사이트에 실제로 추가 트래픽을 발생시킬 수 있습니다. 그러나 나는 산만하다.

명예 외에 robots.txt, (a) 악성으로 보이고 잠재적으로 금지되는 것을 피하고 (b) 사이트 소유자 / 웹 마스터에게 아무런 문제를 일으키지 않기 위해 따라야하는 규칙 또는 지침이 있습니까?

내가 생각할 수있는 몇 가지 예는 중요 할 수도 있고 중요하지 않을 수도 있습니다.

  • 병렬 요청 수
  • 요청 사이의 시간
  • 전체 크롤링 사이의 시간
  • 잠재적으로 파괴적인 링크를 피하기합니다 (싶지 않아 운명의 거미 -이 경우에도 실제적인 경우하지만 누가 알 겠어)

그래도 실제로 뱉는 볼링입니다. 거미를 쓰거나 사용하려는 사람에게 광범위하게 적용 할 수있는 검증 된 지혜가 있습니까?


1
아래의 답변은 콘텐츠를 정중하게 크롤링하는 방법에 대한 훌륭한 답변을 제공하지만 콘텐츠를 크롤링 한 후에는 해당 콘텐츠를 사용할 수 있음을 명심하십시오. 전체 또는 일부를 다시 게시하면 소유자의 저작권을 위반하는 것일 수 있습니다.
Gavin Coates 2016 년

답변:


85

robots.txt를 순종 외에, 순종 nofollownoindex에서 <meta>요소 및 링크 :

  • robots.txt가 인덱싱을 차단하는 적절한 방법아니라고 생각하는 사람들이 많으며 이러한 관점 때문에 많은 사이트 소유자 <meta name="robots" content="noindex">에게 웹 크롤러에게 페이지를 인덱싱하지 말라고 태그에 의존하도록 지시했습니다 .

  • 웹 사이트 (PageRank와 유사한 것) 사이의 연결 그래프를 작성하려는 경우 (및 <meta name="robots" content="nofollow">)은 소스 사이트가 대상 사이트를 적절하게 보증 할만큼 충분히 신뢰할 수 없음을 나타냅니다. 따라서 대상 사이트를 인덱싱 할 수 있지만 두 사이트 간의 관계는 저장하지 않아야합니다.

SEO는 실제 과학보다 예술에 가깝고, 자신이하는 일을 아는 많은 사람들과 자신이하는 일을 아는 사람들의 요약을 읽는 많은 사람들에 의해 실행됩니다. SEOmoz의 블로그 게시물에서 누군가 제대로 읽거나 읽지 못하여 올바르게 해석되거나 해석되지 않을 수있는 규칙으로 인해 다른 사이트에서 완벽하게 수용 가능한 작업을 수행하여 사이트에서 차단되는 문제가 발생할 수 있습니다.

이러한 인적 요소 때문에 귀하가 Google, Microsoft 또는 Yahoo!가 아닌 경우 달리 입증되지 않는 한 악의적 인 것으로 간주됩니다. 웹 사이트 소유자에게 위협이되지 않는 것처럼 행동하고 잠재적으로 악의적이지만 (양호한) 크롤러가 행동하기를 원하는 방식에 따라 행동하려면 다음과 같이주의해야합니다.

  • 차단 된 것으로 감지되면 사이트 크롤링 중지 : 작동중인 페이지의 403/401, 제한, 시간 초과 등
  • 비교적 짧은 시간에 전체 크롤링을 피하십시오. 사이트의 일부를 크롤링하고 나중에 다시 (몇 일 후) 다른 부분을 크롤링하십시오. 병렬 요청을하지 마십시오.
  • /admin/예를 들어 민감한 지역을 크롤링하지 마십시오 .

그럼에도 불구하고 UA 스푸핑과 같은 블랙 햇 기술을 사용하거나 크롤링 패턴을 의도적으로 숨기지 않는 한 오르막 전투가 될 것입니다. 위와 같은 이유로 많은 사이트 소유자가 알 수없는 크롤러를 보이지 않게 차단합니다 누군가 "사이트를 해킹"하려고하지 않을 가능성이 있습니다. 많은 실패에 대비하십시오.

알려지지 않은 크롤러가 가지고있는 부정적인 이미지와 싸우기 위해 할 수있는 한 가지는 사용자 에이전트 문자열에서 자신이 누구인지 명확하게하는 것입니다.

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

어디는 http://example.com/aarobot.html당신이 달성하기 위해 노력하고 왜 위협이 아니에요하는지 설명합니다. 이 페이지에는 몇 가지 사항이 있습니다.

  • 직접 연락하는 방법에 대한 정보
  • 크롤러가 수집하는 내용 및 수집하는 이유에 대한 정보
  • 옵트 아웃 및 수집 된 데이터를 삭제하는 방법에 대한 정보

마지막 선택이 핵심입니다. 올바른 옵트 아웃은 Money Back Guarantee ™와 같으며 부당한 양의 영업권을 얻습니다. 인간적인 것이어야합니다. 간단한 단계 (이메일 주소 또는 이상적으로는 양식)와 포괄적 ( "고정"은 없어야합니다. 옵트 아웃은 예외없이 크롤링을 중지 함을 의미합니다).


18
User-Agent에 명확한 정보를 제공 할 것을 제안하면 +1이됩니다. 누가 큰 사이트를 스파이더하고 있는지 파악하기 위해 웹 서버 로그를 조사하는 일을 해왔으며, 모호한 스파이더를 모두 누가 운영하고 있는지 추적하는 것은 재미가 없습니다.
Carson63000

4
URL을 양식에 넣는 것이 일반적 (+http://example.com/aarobot.html)입니다. 나는 그 +표식 의 목적이 무엇인지 모르겠지만 그것을 자주 보았다. 웹 스니퍼가이를 수행하며 다른 많은 것도 마찬가지입니다.
TRiG

이것은 훌륭한 정보이지만 한 가지 혼란스러워합니다. rel="noindex"마치 <a>속성 인 것처럼 언급 하지만 링크하는 페이지는이를 <meta>태그 content속성 의 일부로 설명 합니다. 둘 다입니까, 아니면 대답의 오타입니까?
Aaronaught

1
"SEO는 실제 과학보다 예술에 가깝습니다."-사실이 아닙니다. 통계 프로그래머라면 SEO는 예술이 아니며 수학적 인식 기술이 아닙니다. 프로그래밍에 능숙한 수학 또는 수학에 능숙한 프로그래머는 웹 데이터 프로파일 링 산업에서 수요가 많습니다.
שינתיא אבישגנת


32

이것이 귀하의 모든 질문에 대한 답변은 아니지만 귀하와 귀하가 크롤링하는 사이트에 도움이 될 것이라고 믿습니다.

주의를 기울이지 않고 강제로 웹 사이트를 무력화하는 데 사용되는 기술과 유사하게 크롤링해야 할 사이트 풀이 충분하면 다른 모든 사이트의 다음 페이지를 크롤링 할 때까지 사이트의 다음 페이지를 크롤링하지 마십시오. . 최신 서버는 HTTP 연결 재사용 을 허용 하므로 오버 헤드를 최소화하기 위해 둘 이상의 작업을 수행해야하지만 아이디어는 여전히 유효합니다. 다음 사이트로 이동할 때까지 한 사이트를 모두 크롤링하지 마십시오 . 사랑을 공유.

하루가 끝나도 여전히 많은 페이지를 크롤링 할 수 있지만 단일 사이트의 평균 대역폭 사용량은 훨씬 적습니다.

운명의 거미가되는 것을 피하려면 확실한 방법이 없습니다. 누군가가 코를 콩집어 넣고 싶을 때는 결코 예측할 수 없는 방식으로 행동 할 것입니다 . 가끔 유효한 페이지를 놓치는 것이 마음에 들지 않으면 링크를 따라갈 수없는 단어의 블랙리스트를 작성하십시오. 예를 들면 다음과 같습니다.

  • 지우다
  • 없애다
  • 최신 정보
  • 편집하다
  • 수정

바보는 아니지만 때로는 사람들이 어려운 방법을 배우지 못하게 막을 수는 없습니다.)


3
"사랑을 나누는 것"에 대한 좋은 충고는 물론, 회고에서는 분명해 보이지만 전혀 고려하지 않았습니다.
Aaronaught

robots.txt를 언급하면 ​​답이 거의 완벽합니다.;)
deadalnix

7
@deadalnix, 그러나 robots.txt질문에 이미 언급되어 있으며 추정 될 수 있습니다.
TRiG

20

내 조언 중 하나 는 크롤링하는 웹 사이트가 알려주는 내용 을 듣고 그에 따라 크롤링을 동적으로 변경하는 것입니다.

  • 사이트가 느립니까? 크롤링 속도가 느려 DDOS가되지 않습니다. 빠른가요? 그러면 조금 더 크롤링하십시오!

  • 사이트에 오류가 있습니까? 이미 협박중인 사이트에 스트레스를주지 않도록 크롤링을 줄이십시오. 재시도 시간을 기하 급수적으로 늘리면 사이트 오류가 길어질수록 재시도 횟수가 줄어 듭니다. 그러나 나중에 다시 시도해야 특정 URL 경로에서 일주일 동안의 오류로 인해 누락 된 항목을 볼 수 있습니다.

  • 404가 많습니까? (우리의 멋진 404 페이지도 서버 시간이 걸립니다!) 경우 file001.html- file005.html이 없다, 나는 도넛에 당신에게 달러를 베팅하는 것은 file999.html하나되지 않습니다! 또는 해당 경로에서 무언가를 검색하는 시간의 백분율을 줄이십시오.

나는 이것이 목표 사이트에서 돌아 오는 신호에 관계없이 동일한 로봇 전략을 사용하여 많은 순진한 크롤러가 심각하게 잘못되는 곳이라고 생각합니다.

스마트 크롤러 는 터치하고있는 대상 사이트에 반응 합니다.


19

다른 사람들은 진언 중 일부를 언급했지만 일부를 추가하겠습니다.

파일 형식과 크기에주의하십시오. 이 거대한 바이너리를 잡아 당기지 마십시오.

일반적인 웹 서버 "디렉토리 목록"페이지를 최적화하십시오. 특히 크기, 날짜, 이름, 권한 등을 정렬 할 수 있습니다. 각 정렬 방법을 크롤링을위한 별도의 루트로 취급하지 마십시오.

가능할 때마다 gzip (압축 압축)을 요청하십시오.

깊이를 제한하거나 재귀를 감지하십시오 (또는 둘 다).

페이지 크기를 제한하십시오. 일부 페이지는 이메일 스크래핑 봇을 막기 위해 타르 핏을 구현합니다. 달팽이 속도로로드되고 테라 바이트 길이의 페이지입니다.

404 페이지를 색인화하지 마십시오. 가장 큰 지수를 자랑하는 엔진이이를 수행하고 대가를 받아 마땅한 증오를받습니다.

이 작업은 까다로울 수 있지만로드 균형 조정 팜을 검색해보십시오. v329.host.com/pages/article.php?99999가 v132.host.com/pages/article.php?99999와 동일하게 반환되면 v001.host.com에서 v999까지 전체 서버 목록을 긁지 않습니다. host.com


중요한 코너 케이스!
M. Dudley

요즘에는 표준 태그를 확인하여 의도적으로 중복 된 콘텐츠 (예 :로드 균형 조정 팜)를 감지 할 수 있습니다.
Brian

4

하나만 추가하겠습니다.

저작권 및 기타 법적 문제 : 공개 웹 사이트라고 작성 했으므로 저작권이 없을 수 있지만 데이터를 저장하는 데 다른 법적 문제가있을 수 있습니다.

이것은 물론 어떤 국가의 데이터를 저장하고 있는지 (그리고 어디에 저장하고 있는지)에 따라 다릅니다. 미국의 애국자 법 대 EU의 데이터 보호 지침에 문제가있을 수 있습니다. 문제에 대한 요약은 미국 기업들이 데이터를 예를 들어 제공해야한다는 것입니다. 데이터 보호 지침에서 사용자에게이를 알려야한다는 내용을 사용자에게 알리지 않고 FBI에 요청하는 경우. 자체 http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
"공개 웹 사이트라고 작성 했으므로 저작권이 없을 수 있습니다." 인터넷상의 모든 웹 사이트는 공개되며, 달리 명시되지 않는 한 모든 웹 사이트는 저작권이 있습니다.
Gavin Coates 2016 년

3

당신의 이름과 관련된 웹 크롤러 또는 그 거미에게 전화하십시오. 이것은 중요합니다. 분석 엔진 등은 ... 스파이더로 당신을 연관시킬 사람들을 찾습니다. ;)

내가 본 방식은 요청 헤더 User-Agent를 통한 것입니다.


나는 그것이 보통 "봇"또는 "로봇"이라고 생각했습니다. Google이 Googlebot이라는 것을 알고 있습니다.
Aaronaught

좋은 지적. 그것이 구별 될 수있는 한. 아마도 그것들을 배치하는 것에 대한 게시물이있을 것입니다.
jcolebrand

2
  • 필요한 경우 쿠키를 유지하여 웹 사이트가 불필요한 세션을 생성하지 않도록하십시오.
  • 브라우저 구문에 가장 가까운 링크 구문 분석 동작을 구현하십시오. 라이브 사이트는 누락 된 파일에 대한 봇 요청으로 인해 많은 '404'를보고합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.