2010-04-18 2 views
3

나는 크롤러가 완전히 자바 스크립트로 작성 될 수 있는지 궁금한가요? 이렇게하면 사용자가 정보를 필요로하고 모든 정보가 개별 사용자의 컴퓨터에서 실행될 때만 크롤러가 호출됩니다.크롤러는 전적으로 자바 스크립트로 작성 될 수 있습니까?

크롤러가 서버 측에 쓰여진 경우 - IP가 차단 될 위험이 있습니까?

답변

2

자바 스크립트로 크롤러를 작성할 수 있습니다 (예 : Node.JS). 그러나 사용자의 브라우저에 글을 쓸 수는 없습니다. 그 이유는 다음과 같습니다.

  • 브라우저 보안 모델은 자바 스크립트가 자신의 도메인에만 액세스하도록 제한하므로 자신의 사이트 만 인덱싱 할 수 있습니다.
  • 각 사용자는 매번 사이트 전체를 다시 크롤링해야합니다. 즉, 사용자의 쿼리에 응답하기 전에 크롤링에 많은 시간 (사이트 크기에 따라 수분, 시간 또는 심지어 며칠)이 소요될뿐만 아니라 대역폭 사용량은 전체 사용자 기반에서 배증되기 때문에 많은 대역폭 사용량이 필요합니다. 사용자의 브라우저가 JS에 색인을 위해 충분한 저장 공간을 허용하지 않을 수도 있습니다.
2

먼저 세부 정보를 말하기 전에 크롤링이 매우 느립니다. 의미있는 웹 색인 생성을 얻으려면 한 사이트를보고 있으면 몇 분이 걸리고, 여러 주 (수 주, 수 개월 또는 수년)를 조사하는 경우에는 최소한 일입니다. 라이브 크롤링으로 검색을 제공하는 것은 전혀 불가능합니다.

자세한 내용은 자바 스크립트에서 크롤러를 작성하지 못하도록하는 방법은 없습니다. 그러나 Cross-Origin 정책으로 인해 서버 측 프록시가없는 브라우저 내장 자바 스크립트에서는 그렇지 않습니다.

2

크로스 도메인 문제를 처리 할 수있는 방법이 있습니다. "Access-Control-Allow-Origin"을 검색하면 방법을 볼 수 있습니다.

이러한 크롤러를 구현하는 가장 쉬운 방법은 addon (firefox) 또는 확장 (chrome)을 작성한 다음 방문한 페이지에 자바 스크립트 코드를 삽입하는 것입니다. 그렇게하면 문서 작성자가 보는 것과 똑같은 것을 볼 수 있습니다. document, body.innerText를 호출 한 다음 콘텐츠를 서버에 게시하여 색인을 생성 할 수 있습니다.

나는 다른 크롤러에서 여러 브라우저를 사용하여 크롤러가 작동하도록했습니다.

관련 문제