KR20050030542A - 클라이언트 기반 웹 크롤링 시스템 및 방법 - Google Patents

클라이언트 기반 웹 크롤링 시스템 및 방법 Download PDF

Info

Publication number
KR20050030542A
KR20050030542A KR1020040068727A KR20040068727A KR20050030542A KR 20050030542 A KR20050030542 A KR 20050030542A KR 1020040068727 A KR1020040068727 A KR 1020040068727A KR 20040068727 A KR20040068727 A KR 20040068727A KR 20050030542 A KR20050030542 A KR 20050030542A
Authority
KR
South Korea
Prior art keywords
data set
data
web page
information
component
Prior art date
Application number
KR1020040068727A
Other languages
English (en)
Other versions
KR101153138B1 (ko
Inventor
브릴에릭디.
미크크리스토퍼에이.
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050030542A publication Critical patent/KR20050030542A/ko
Application granted granted Critical
Publication of KR101153138B1 publication Critical patent/KR101153138B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results

Abstract

본 발명은 분산 웹 크롤러를 사용하여 네트워킹된 시스템으로부터 정보를 획득하는 시스템 및 방법을 제공한다. 서버의 클라이언트의 분산 특성이 빠르고 정확한 웹 크롤링 데이터를 제공하는 데 이용된다. 서버의 웹 크롤러에 의해 수집된 정보는 크롤러의 데이터를 갱신하기 위해 서버의 클라이언트에 의해 검색된 데이터와 비교된다. 본 발명의 일례에서, 데이터 비교는 검색 엔진 결과 페이지를 통해 분산되어 있는 정보를 이용하여 달성된다. 본 발명의 다른 일례에서, 데이터 검증은 웹 크롤러 데이터를 요약해 놓은, 서버로부터 나온 클라이언트 사전에 의해 달성된다. 본 발명은 또한 데이터 정확성을 향상시키기 위해 웹 크롤러의 스푸핑에 대항하는 수단을 제공함으로써 데이터 분석을 용이하게 해준다.

Description

클라이언트 기반 웹 크롤링 시스템 및 방법{SYSTEMS AND METHODS FOR CLIENT-BASED WEB CRAWLING}
본 발명은 일반적으로 데이터 분석에 관한 것이며, 특히 분산 웹 크롤러를 이용하여 네트워킹된 시스템으로부터 정보를 획득하는 시스템 및 방법에 관한 것이다.
고비용 저성능 데이터 프로세싱 시스템으로부터 저비용 고성능 통신, 문제 해결 및 오락 시스템으로의 컴퓨터 및 네트워킹 기술의 발전은 서신 왕래, 요금 지불, 쇼핑, 예산 편성 및 정보 수집 등의 일상적인 업무 수행의 부담을 덜어주는 가격 효율적이고 시간 절감형 수단을 제공해 왔다. 예를 들어, 유선 또는 무선 기술을 통해 인터넷과 인터페이스하는 컴퓨팅 시스템은 사용자가 즉시 이용할 수 있는 전 세계에 걸쳐 위치한 웹 사이트 및 서버의 저장소로부터의 풍부한 정보에 대한 거의 순간적인 액세스를 위한 채널을 사용자에게 제공할 수 있다.
일반적으로, 웹 사이트 및 서버를 통해 이용가능한 정보는 웹 클라이언트(예를 들어, 컴퓨터) 상에서 실행되는 웹 브라우저를 통해 액세스된다. 예를 들어, 웹 사용자는 웹 브라우저를 설치하고 웹 사이트 URL(Uniform Resource Locator)(예를 들어, 웹 주소 및/또는 인터넷 주소)을 웹 브라우저의 주소 표시줄(address bar)에 입력하고 키보드 상의 엔터 키를 누르거나 마우스로 "가기" 버튼을 클릭함으로써 웹 사이트에 액세스할 수 있다. URL은 일반적으로 액세스를 용이하게 하는 4가지 정보, 즉 정보를 교환하기 위한 규칙 및 표준 세트를 가리키는 프로토콜(컴퓨터가 서로 통신하기 위한 언어), 웹 사이트의 위치, 웹 사이트를 유지하는 기관의 이름, 및 기관의 유형을 가리키는 확장자(suffix)(예를 들어, com, org, net, gov 및 edu)를 포함한다.
어떤 경우에, 사용자는 미리 사이트 또는 서버의 이름, 및/또는 사용자가 액세스하고자 하는 사이트 또는 서버의 URL을 알고 있다. 이러한 상황에서, 사용자는 전술한 바와 같이 URL을 주소 표시줄에 입력하고 그 사이트에 접속함으로써 사이트에 액세스할 수 있다. 그렇지만, 대부분의 경우, 사용자는 URL 또는 사이트 이름을 모르고 있다. 그 대신에, 사용자는 사용자에 의해 제공된 키워드에 기초하여 사이트의 위치를 알아내는 것을 용이하게 하기 위해 검색 엔진을 이용한다. 일반적으로, 검색 엔진은 웹 사이트 및 서버의 콘텐츠에서 키워드를 검색하고 그 키워드가 발견되는 웹 사이트 및 서버로의 링크의 리스트를 반환하는 실행가능 애플리케이션 또는 프로그램으로 이루어져 있다. 기본적으로, 검색 엔진은 가능한 한 많은 문서를 그의 관련 URL로서 검색하는 웹 "크롤러"(web crawler)(달리 "스파이더" 또는 "로봇"이라고도 함)를 포함한다. 이 정보는 이어서 인덱서(indexer)가 그 검색된 데이터를 처리할 수 있도록 저장된다. 인덱서는 문서를 판독하고 각 문서에 포함된 키워드 및 그 문서의 다른 속성에 기초하여 우선순위가 정해진 인덱스를 생성한다. 개별적인 검색 엔진은 일반적으로 질의에 대해 의미있는 결과가 반환되도록 인덱스를 생성하기 위해 독자적인 알고리즘을 이용한다.
따라서, 웹 크롤러는 검색 엔진의 동작에 중요한 것이다. 현재의 최신의 검색 결과를 제공하기 위해, 크롤러는 새로운 웹 페이지를 찾아내고 오래된 웹 페이지 정보를 갱신하며 삭제된 페이지를 제거하기 위해 항상 웹을 검색해야만 한다. 인터넷 상에서 발견된 웹 페이지의 수는 방대하다. 따라서, 웹 크롤러는 아주 빨라야만 한다. 대부분의 웹 크롤러가 웹 페이지를 제공하는 서버에 폴링함으로써 그의 데이터를 수집하기 때문에, 크롤러는 또한 특정의 서버에 액세스할 때 가능한 한 방해가 되어서는 안된다. 그렇지 않으면, 크롤러가 서버의 자원 모두를 아주 빠르게 빼앗아 그 서버를 멈추게 할 수 있다. 일반적으로, 크롤러는 서버에 자신의 신원을 밝히고 서버의 웹 페이지에 액세스하기 전에 허가를 구한다. 이 때, 서버는 서버의 자원 모두를 도둑질하는 무례한 크롤러에 대해 액세스를 거부할 수 있다. 웹 페이지 호스팅 서버는 일반적으로 검색 엔진으로부터 이득을 보는데, 그 이유는 검색 엔진에 의해 사용자가 그의 웹 페이지를 보다 용이하게 찾을 수 있기 때문이다. 따라서, 대부분의 서버는 크롤러가 서버 자원 모두를 고갈시키지 않는 한 크롤러를 환영하며, 따라서 서버의 콘텐츠가 사용자에 의해 더 많이 이용될 수 있다.
크롤러가 서버에 자신의 신원을 밝히는 것의 부정적인 면 중 하나는 서버가 크롤러를 "스푸프(spoof)"할 수 있다는 것이다. 서버는 보통 일반적인 인터넷에 노출되지 않기를 바라는 보호 영역을 갖는다. 크롤러가 자신의 신원을 밝힐 때, 크롤러는 또한 자신이 어느 영역에 액세스할 수 없는지를 통지 받는다. 크롤러가 그 특정의 서버와 업무 관계를 유지하고자 하는 경우, 크롤러는 서버의 요청을 준수한다. 그렇지만, 서버가 그의 진짜 콘텐츠를 스푸핑하거나 가장하고자 하는 경우, 그 서버는 크롤러를 그 서버의 진짜 URL의 흉내를 내지만 "대체" 콘텐츠를 포함하는 페이지들의 영역을 참조하게 할 수 있다. 따라서, 통상 고양이에 관한 정보만을 제공하는 서버는 웹 크롤러만이 액세스하는 섹션 내에 개에 관한 정보를 갖는 그의 URL을 설정할 수 있다. 이렇게 함으로써 사용자가 "개"를 검색할 때 고양이에 관한 서버의 웹 페이지가 검색 엔진에 의해 보여지게 된다. 일반적으로, 스푸핑은 서버의 콘텐츠가 사회적으로 거부감이 있는 것으로 생각될 때 이용되지만, 서버는 그의 콘텐츠를 그의 정상적인 "키워드"를 넘어 확장시키기를 원한다. 이와 같이, 거부감이 있는 자료는 검색 엔진 리스트에서 꽃, 개, 고양이, 날씨 등의 통상적인 단어를 사용하여 반환될 수 있다. 스푸핑은 스푸핑된 웹 크롤러 데이터를 이용하여 검색 엔진의 정확성과 또한 그의 명성을 떨어뜨린다.
이하에서는 본 발명의 몇가지 측면의 기본적인 이해를 제공하기 위해 본 발명의 간략화된 요약을 제공한다. 이 요약은 본 발명의 전반적인 개요가 아니다. 이 요약은 본 발명의 주된/중요한 구성요소를 식별하거나 본 발명의 범위를 나타내기 위한 것이 아니다. 이 요약의 유일한 목적은 이후에 제공되는 보다 상세한 설명의 도입부로서 본 발명의 어떤 개념을 간략화된 형태로 제공하는 것이다.
본 발명은 일반적으로 데이터 분석에 관한 것으로서, 보다 구체적으로는 분산 웹 크롤러를 이용하여 네트워킹된 시스템으로부터 정보를 획득하는 시스템 및 방법에 관한 것이다. 서버의 클라이언트들의 분산 특성이 빠르고 정확한 웹 크롤링 데이터를 제공하는 데 이용된다. 서버의 웹 크롤러에 의해 수집된 정보는 크롤러의 데이터를 갱신하기 위해 서버의 클라이언트들에 의해 검색된 데이터와 비교된다. 본 발명의 일례에서, 데이터 비교는 검색 엔진 결과 페이지를 통해 분산되어 있는 정보를 이용함으로써 달성된다. 본 발명의 다른 예에서, 데이터 검증은 웹 크롤러 데이터를 요약해 놓은, 서버로부터 나오는 클라이언트 사전에 의해 달성된다. 본 발명의 일 측면에서, 약한 지시자 함수(weak indicator function) 세트로부터의 "약한 지시자" 함수가 클라이언트들로 랜덤하게 전송된다. 이들 약한 지시자 함수는 서버의 웹 크롤러에 의해 발견되는 모든 URL의 전체 목록보다 상당히 더 작으며, 따라서 서버-클라이언트 통신 트래픽을 엄청나게 감소시킨다. 이것은 웹 크롤러의 데이터의 최적의 정확성을 유지시키면서 서버-클라이언트 인터페이스를 간소화시키는데 도움이 된다.
본 발명은 또한 데이터 정확성을 향상시키기 위해 웹 크롤러의 스푸핑을 방지하는 수단을 제공함으로써 데이터 분석을 용이하게 해준다. 본 발명을 이용하는 서버는 그의 웹 크롤러 데이터를 클라이언트에 의해 제공된 데이터와 비교함으로써 스푸핑을 방지할 수 있다. 이것에 의해 서버는 그의 검색 엔진으로부터의 스푸핑된 데이터를 제거할 수 있으며, 검색 엔진 결과의 품질을 더 높일 수 있다. 이러한 기능이 악의없는 검색동안 통상 반환되지 않는 거부감있는 자료를 필터링 제거하는 데 도움이 되며, 검색 엔진의 클라이언트들에 보다 사용자에 친숙한 경험을 제공한다.
전술한 목적 및 관련 목적을 달성하기 위해, 본 발명의 어떤 예시적인 측면들이 이하의 설명 및 첨부 도면과 연계하여 본 명세서에 기술되어 있다. 그렇지만, 이들 측면은 본 발명의 원리들이 이용될 수 있는 여러가지 방법 중 단지 몇개만을 나타낸 것이며, 본 발명은 이러한 측면들 및 그의 균등물 모두를 포함하는 것을 목적으로 한다. 본 발명의 다른 이점 및 신규의 특징은 첨부 도면과 연계하여 살펴볼 때 본 발명의 이하의 상세한 설명으로부터 자명하게 될 것이다.
이제부터, 유사한 참조 번호가 유사한 구성요소를 지칭하는 데 사용되고 있는 도면을 참조하여 본 발명에 대해 기술한다. 이하의 설명에서는, 설명의 목적상 본 발명의 완전한 이해를 제공하기 위해 여러가지 구체적인 상세가 기술된다. 그렇지만, 본 발명이 이들 구체적인 상세 없이도 실시될 수 있음은 명백할 수 있다. 다른 예에서, 본 발명에 대한 설명을 용이하게 하기 위해 공지의 구조 및 장치가 블록도로 도시되어 있다.
본 출원에서 사용되는 바와 같이, 용어 "컴포넌트"는 컴퓨터 관련 개체, 즉 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 지칭하기 위한 것이다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행 파일, 실행 쓰레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이에 한정되는 것은 아니다. 예로서, 서버 상에서 실행되는 애플리케이션 및 그 서버는 컴퓨터 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 쓰레드 내에 존재할 수 있고 컴포넌트는 하나의 컴퓨터 상에 로컬화되어 있거나 및/또는 2개 이상의 컴퓨터 사이에 분산되어 있을 수 있다. "쓰레드"는 오퍼레이팅 시스템 커널이 실행을 위해 스케줄링하는 프로세스 내의 개체이다. 당업계에 공지된 바와 같이, 각각의 쓰레드는 쓰레드의 실행과 관련된 휘발성 데이터인 관련 "컨텍스트"를 갖는다. 쓰레드의 컨텍스트는 시스템 레지스터의 내용 및 쓰레드의 프로세스에 속하는 가상 주소를 포함한다. 따라서, 쓰레드의 컨텍스트를 포함하는 실제 데이터는 그 쓰레드가 실행됨에 따라 변한다.
본 발명은 웹 문서의 인덱스를 유지하는 개선된 시스템 및 방법을 제공한다. 본 발명은 또한 다른 유형의 정보에 대한 데이터를 검색하고 유지하는 데 이용될 수 있다. 종래의 웹 크롤러는 본 발명에 의해 해소되는 어떤 단점을 갖는다. 각각의 클라이언트(즉, 웹에 액세스하는 어떤 사람의 머신)은 로컬 정보를 저장하고, 따라서 그 클라이언트는 그 자신이 웹 페이지를 마지막으로 방문한 이후로 그 웹 페이지가 변경되었는지 여부를 알 수 있다. 그 웹 페이지가 변경된 경우, 클라이언트는 이 정보를 검색 엔진에 전달할 수 있다. 이와 마찬가지로, 서버는 서버가 현재 알지 못하는 페이지들을 찾기 위해 클라이언트가 방문한 웹 페이지에 관한 정보를 사용할 수 있다. 문서들을 효과적으로 찾아내고 이들 문서에 관한 현재의 정보를 유지하는 것은 인트라넷 및 인터넷 검색 둘다에 있어서 아주 중요한 일이다. 본 발명은 또한 페이지들을 크롤링(crawling)하여 페이지 정보를 서버 상에 신선한 상태로 유지하는 것이 훨씬 더 중요한 일인 인트라넷 검색 등과 관련해서도 이용될 수 있다.
(인터넷, 인트라넷, 또는 다른 경우에 있어서) 검색 엔진의 중요한 컴포넌트는 데이터 또는 문서 크롤러이다. 문서 크롤러(document crawl)는 2가지 중요한 임무, 즉 검색 엔진에 의해 인덱싱될 알지 못하는 문서를 찾아내는 일과 검색 엔진이 각각의 알고 있는 문서에 관한 최신 정보를 갖도록 시도하는 일을 수행한다. 이들 임무는 둘다 어려우며 또한 (페이지 순위 품질과 함께) 검색 엔진들 간의 가장 중요하고 명백한 품질 차별 요인들 중에 속한다. 문서 크롤러는 일반적으로 서버 모델에 기초하고 있다. 검색 엔진은 토폴로지적 검색에 의해 웹을 크롤링한다. 알고 있는 웹 페이지의 씨드 세트(seed set)에서 시작하여, 크롤러는 그 페이지로부터의 링크를 따라가고 그에 따라 그 씨드 세트로부터의 경로(URL 기준 세트)를 통해 연결되는 모든 웹 페이지를 찾아낼 수 있다. 검색 엔진이 문서 컬렉션에 대한 최신 정보를 갖고 있도록 하기 위해, 크롤링은 빈번히 반복되어야만 한다. 크롤러가 크롤링을 할 때마다 크롤러는 웹 페이지들을 재방문하기 때문에, 크롤러는 얼마나 자주 페이지(또는 서브그래프)가 변경되는지를 알 수 있으며 어떤 페이지들을 그의 과거 변경 빈도수에 기초하여 다른 것들보다 빈번하게 재크롤링할 수 있다.
현재의 서버 기반 크롤링 패러다임에서는 다수의 취약점이 있다. 첫째, 크롤러는 씨드 문서 중 하나에서 시작하는 링크를 따라감으로써 도달될 수 있는 페이지를 찾아낼 수 있을 뿐이다. 최근의 연구는 대부분의 웹 페이지들이 현재 어떤 검색 엔진에 의해서도 인덱싱되어 있지 않음을 보여주고 있다. 둘째, 크롤러가 페이지를 우연히 재방문할 때 검색 엔진은 문서의 변동(예를 들어, 콘텐츠 변동, 또는 더 이상 존재하지 않는 페이지)에 관해서만 알 수 있을 뿐이다.
본 발명은 문서(예를 들어, 데이터)를 효율적으로 찾아내고 상기한 취약점을 개선하는 방식으로 알고 있는 문서에 관한 최신의 정보를 유지하는 시스템 및 방법을 제공한다. 이것은 분산 클라이언트-기반 크롤링을 통해 달성된다. 각각의 클라이언트(즉, 웹에 액세스하는 어떤 사람의 머신)는 로컬 정보를 저장하며, 따라서 그 클라이언트는 자신이 페이지를 마지막으로 방문했던 이후로 그 페이지가 변경되었는지 여부를 알 수 있다. 페이지가 변경되었으면, 클라이언트는 이 정보를 검색 엔진으로 전달할 수 있다. 이와 마찬가지로, 서버는 자신이 현재 알지 못하는 페이지를 찾아내기 위해 클라이언트가 방문한 웹 페이지에 관한 정보를 사용할 수 있다.
도 1에서, 본 발명의 일 측면에 따른 데이터 분석 시스템(100)의 블록도가 도시되어 있다. 본 발명의 이 예에서, 데이터 분석 시스템(100)은 1부터 "N"(단, N은 1부터 무한대까지의 임의의 수임)까지의 번호가 부여된 클라이언트(102-106), 통신 시스템(108), 검색 서버(110), 및 웹 페이지 서버(112)로 이루어져 있다. 클라이언트(102-106)는 검색 서버(110)를 위한 웹 페이지 정보의 일군의 "분산 자원"을 구성한다. 클라이언트는 일반적으로 새로운 URL 및 웹 페이지 변동 등을 통신 시스템(108)을 거쳐 검색 서버(110)에 제공하는 기능을 한다. 통신 시스템(108)은 인터넷 및/또는 인트라넷 등으로 이루어져 있다. 통신 시스템은 검색 서버(110)와 클라이언트(102-106) 사이의 통신 목적을 위한 액세스 수단을 제공한다. 통신 시스템은 또한 웹 페이지 정보를 수집하기 위해 클라이언트(102-106)와 다른 웹 페이지 서버(112) 사이 및/또는 검색 서버(110)와 다른 서버들 사이의 통신을 가능하게 해준다. 본질적으로, 웹 크롤러 기능은 검색 서버에서만 동작하지 않고 검색 서버(110) 및 클라이언트(102-106) 사이에 분산되어 있다. 검색 서버(110)는 그 자신의 정보를 재구성하는 것을 용이하게 하기 위해 클라이언트(102-106)를 이용하여 웹 페이지 서버(112)로부터 정보를 획득한다. 이 기능을 분산시킴으로써, 본 발명은 보다 최신이고 안정되며 스푸핑 방지된 데이터 세트를 제공하며, 검색 엔진은 그로부터의 데이터를 이용할 수 있다.
도 2로 가면, 본 발명의 일 측면에 따른 데이터 분석 시스템(200)의 다른 블록도가 도시되어 있다. 데이터 분석 시스템(200)은 서로 간에 상호작용하는 통신 수단을 갖는 클라이언트(202) 및 서버(204)로 이루어져 있다. 일반적인 동작 동안, 서버(204)는 웹 페이지를 호스팅하는 다른 서버를 찾기 위해 인터넷 등의 통신 네트워크를 검색하는 웹 크롤러를 호스팅한다. 크롤러는 웹 페이지 검색 엔진에서 이용하기 위한 이들 웹 페이지에 관한 정보의 소스를 편집한다. 서버(204)는 이어서 이 웹 페이지 정보의 표현을 클라이언트(202)로 전송한다. 이것은 클라이언트(202)가 특정의 웹 페이지를 호스팅하는 서버에 액세스할 때 그 웹 페이지 정보를 독립적으로 검증하는 기능을 클라이언트(202)에 제공한다. 클라이언트(202)는 또한 서버(204)가 알지 못하는 웹 페이지를 검출할 수 있다. 이것에 의해 클라이언트(202)는 알고 있는 웹 페이지 및 알지 못하는 웹 페이지에 관한 새로운 정보 및/또는 변동/상태를 편집할 수 있게 된다. 이어서, 이 정보는 서버(204)로 전송된다. 서버(204)는 그 정보를 사용하여 그의 원래의 크롤러 웹 페이지 데이터를 재구성한다. 분산 자원을 가짐으로써, 서버(204)는 그 자신의 직접적인 자원(예를 들어, 프로세서 이용도, 저장 공간 등)에 부담을 주지 않고 그의 크롤러 기능을 확장시킨다. 게다가, 웹 크롤러는 일반적으로 자신이 액세스하는 각각의 서버에 자신의 신원을 밝히기 때문에, 웹 크롤러는 그 서버 상의 잘못된 데이터로 리디렉션될 위험이 있다. 서버는 또한 웹 크롤러가 서버의 자원에 부과할 수 있는 액세스 및 시간량을 제한할 수 있다. 서버에 액세스하는 클라이언트는 일반적으로 이러한 제약을 갖지 않으며 잘못된 데이터로 리디렉션되지 않는다. 따라서, 클라이언트의 웹 페이지 데이터는 웹 크롤러에 의해 편집된 잘못된 데이터를 정정하는 데 이용될 수 있다. 본 발명의 이 측면은 이하에서 보다 상세히 기술된다.
도 3을 참조하면, 본 발명의 일 측면에 따른 데이터 분석 시스템(300)의 또 다른 블록도가 도시되어 있다. 데이터 분석 시스템(300)은 서로 간에 상호 작용하는 통신 시스템(CS)(306)을 갖는 클라이언트 시스템 컴포넌트(302) 및 서버 시스템 컴포넌트(304)로 이루어져 있다. 본 발명의 이 예에서, 클라이언트 시스템 컴포넌트(302)는 CS 인터페이스 컴포넌트(308), 클라이언트 제어 컴포넌트(310), 및 데이터 저장 컴포넌트(312)로 이루어져 있다. CS 그래픽 사용자 인터페이스(GUI) 컴포넌트(308)는 일반적으로 이용되는 통신 시스템의 유형에 고유한 인터페이스를 사용자에게 제공한다. 이러한 인터페이스의 일례가 적어도 월드 와이드 웹을 통해 정보를 그래픽적으로 릴레이하는 데 이용되는 웹 브라우저이다. 웹 브라우저는 또한 단일 회사 내에서 서비스되는 웹 페이지 등의 인트라넷을 "서핑"하는 데 이용될 수 있다. 본 발명의 다른 예에서, 유사한 정보가 그래픽 사용자 인터페이스보다는 오히려 텍스트 기반 인터페이스 등을 이용하여 릴레이될 수 있다. 일반적으로, 이 컴포넌트(308)는 사용자가 통신 시스템(306)에 연결된 원격 서버 상에 존재하는 검색 엔진 상에서 검색 질의를 실행할 수 있게 해준다. 따라서, CS GUI 컴포넌트(308)는 통신 시스템(306)으로 정보를 전송하거나 및/또는 그로부터 수신한다. 클라이언트 제어 컴포넌트(310)는 웹 크롤링을 용이하게 하는 것과 관련하여 클라이언트의 제어를 제공한다. 클라이언트 제어 컴포넌트(310)는 웹 페이지 등과 같은 정보에 관련된 데이터를 수신 및/또는 전송한다. 이 컴포넌트(310)는 알고리즘을 처리하고, 데이터 변동 및 상태를 추적하며, 및/또는 데이터 분석 시스템(300) 내의 클라이언트에 대한 로컬 데이터 저장을 제어한다. 이 컴포넌트(310)는 또한 차이 등을 결정하기 위해 웹 크롤러로부터 수신된 정보를 사용하여 CS GUI 컴포넌트(308)로부터의 정보를 분석할 수 있다. 클라이언트 제어 컴포넌트(310)는 클라이언트가 웹 크롤러 등에 대한 "분산 자원"으로서 참여할 수 있게 해준다. 이 컴포넌트(310)는 또한 저장된 데이터에 액세스하여 정보를 CS GUI 컴포넌트(308)에 제공할 수 있다. 본 발명의 일례에서, CS GUI 컴포넌트(308)는 구현된 크롤러 데이터를 전송 및/또는 수신한다. 따라서, 클라이언트 제어 컴포넌트(310)는 이와 같이 구현된 크롤러 관련 데이터를 수신 및/또는 전송하기 위해 GUI 컴포넌트(308)와 인터페이스한다. 이와 마찬가지로, 이 컴포넌트(310)는 또한 동일한 방식으로 제어를 서버로 전송 및/또는 그로부터 수신할 수 있다. 본 발명의 다른 예에서, 클라이언트 제어 컴포넌트(310)는 서버와 유사하게 행동하여 피어-투-피어 방식으로 다른 클라이언트에 제어를 제공할 수 있다. 당업자라면 클라이언트 제어 컴포넌트(310) 및 CS GUI 컴포넌트의 기능이 단일 컴포넌트 내에 결합될 수 있음을 잘 알 것이다. 또한, CS GUI 컴포넌트(308)를 갖지 않고 분산 자원으로서 클라이언트를 이용하는 것도 가능하다. 본 발명의 이러한 경우의 일례는 다른 클라이언트를 릴레이 및/또는 제어하는 클라이언트를 포함하지만, 그에 한정되는 것은 아니다. 데이터 저장 컴포넌트(312)는 예를 들어 서버로부터의 크롤러 데이터, 클라이언트로부터의 크롤러 데이터, 웹 페이지 변동, 새로운 웹 페이지 데이터, 및 클라이언트 제어 파라미터 등을 저장하는 데 이용된다. 이 컴포넌트(312)는 이용되는 본 발명의 예에 따라 클라이언트 제어 컴포넌트(310) 및/또는 CS GUI 컴포넌트(308)와 직접 인터페이스할 수 있다. 데이터 저장 컴포넌트(312)는 또한 하드 드라이브, 랜덤 액세스 메모리, 판독 전용 메모리, 분리형 매체, 및 CD-ROM 등과 같은 데이터 저장 장치일 수 있다. 본 발명의 또 다른 예에서, 데이터 저장 컴포넌트(312) 상에 저장된 정보는 CS GUI 컴포넌트(308) 또는 클라이언트 제어 컴포넌트(310)와 인터페이스하지 않고 서버에 의해 직접 액세스될 수 있다. 어떤 경우, 이것은 보다 빠른 데이터 검색을 가능하게 해준다.
본 발명의 일례에서, 통신 시스템(306)은 "인터넷" 등의 인터넷이다. 통신 시스템(306)은 또한 광역 통신망(WAN) 및/또는 근거리 통신망(LAN) 등과 같은 인트라넷 시스템일 수 있다. 통신 시스템(306)은 또한 예를 들어 전화 시스템, 무선 시스템, 광 신호(광학) 시스템, 및 사운드 시스템 등과 같은 보다 전통적인 통신 수단을 이용할 수 있다. 당업자라면 다른 글로벌 및 로컬 네트워크 구조도 본 발명에 의해 통신 시스템(306)으로 이용될 수 있음을 잘 알 것이다.
서버 시스템 컴포넌트(304)는 검색 엔진 컴포넌트(314), 분산 자원 제어 컴포넌트(316), 크롤러 컴포넌트(318), 데이터 저장 컴포넌트(320), 및 선택적인 CS 데이터 호스팅 컴포넌트(322)로 이루어져 있다. 본 발명의 일례에서, 크롤러 컴포넌트(318)는 서버 및/또는 프록시 서버에 액세스하여 웹 페이지 콘텐츠, 나이, 크기, URL, 및 구현된 링크 등과 같은 웹 페이지 관련 정보를 획득하기 위해 통신 시스템(306)을 이용한다. 이어서, 이 정보는 데이터 저장 컴포넌트(320)에 저장된다. 데이터 저장 컴포넌트(320)는 하드 드라이브, 랜덤 액세스 메모리, 판독 전용 메모리, 분리형 매체, 및 CD-ROM 등과 같은 데이터 저장 장치일 수 있다. 검색 엔진 컴포넌트(314)는 웹 크롤러(318)에 의해 찾아내어져 데이터 저장 컴포넌트(320)에 저장되는 모든 웹 페이지에 대한 검색 기능을 제공한다. 검색 엔진 컴포넌트(314)는 사용자로부터 검색 요청/질의를 수신하고 사용자에게 전송할 링크 및 웹 페이지 데이터의 리스트를 편집하기 위해 데이터 저장 컴포넌트(320) 상의 정보에 액세스한다. 따라서, 일반적인 시스템에서, 검색 컴포넌트(314)는 크롤러 컴포넌트(318)에 의해 획득된 정보에만 의존할 수 있다. 그렇지만, 본 발명의 예들에서, 분산 자원 제어기(316)는 데이터 저장 컴포넌트(320)에 저장된 정보의 편집을 용이하게 해주며 그 정보가 보다 안정되고 최신이며 보다 포괄적인 것일 수 있게 해준다. 분산 자원 제어 컴포넌트(316)는 예를 들어 단일의 분산 크롤러 또는 "클라이언트 기반 웹 크롤러"로서 상호작용하는 서버의 클라이언트들과 같은 분산 자원에 대한 제어를 제공한다. 이 컴포넌트(316)는 예를 들어 클라이언트 시스템 컴포넌트(302) 등과 같은 분산 자원으로부터 수신된 데이터의 분석과, 함수 및 데이터의 할당 및 이들의 타이밍의 결정 등의 기능을 제공하고, 알고 있는 크롤러 데이터를 결정하고 데이터 갱신 및/또는 추가를 수신하고 데이터 갱신 및/또는 추가를 데이터 저장 컴포넌트(320)에 저장하기 위해 분산 자원에 알고리즘을 제공하여 분산 자원의 최적화된 이용을 결정하며, 특정의 검색 질의에 대한 검색 결과 페이지 내에 데이터를 구현하는 것이 가능하도록 검색 엔진 컴포넌트(314)에 페이지 데이터를 제공하고, 구현된 페이지 링크 정보를 포함하는 페이지를 생성하기 위해 페이지 데이터를 인터넷 서비스 제공업자에게 제공하며, 카운트, 유형, 스푸핑 퍼센티지 및 소스 등과 같은 데이터 특성을 추적한다. 본 발명의 다른 예에서, 검색 엔진 컴포넌트(314)는 분산 자원 제어 컴포넌트(316)가 직접 통신 시스템(306)에 액세스하기 보다는 이 컴포넌트(316)에 대한 정보를 전송 및/또는 수신한다.
본 발명의 예에서, 선택적인 CS 데이터 호스팅 컴포넌트(322)는 통신 시스템(306) 및 분산 자원 제어 컴포넌트(316) 둘다와 인터페이스한다. CS 데이터 호스팅 컴포넌트(322)는 사용자에게 웹 페이지에 대한 액세스를 제공하기 위한 웹 페이지 호스팅 기능을 제공한다. CS 데이터 호스팅 컴포넌트(322)가 분산 자원 제어 컴포넌트(316)와 상호작용하기 때문에, 이 컴포넌트(322)는 웹 페이지 링크 정보를 수신하여 이를 직접 그의 호스팅된 웹 페이지에서 구현할 수 있다. 본 발명의 다른 예에서, CS 데이터 호스팅 컴포넌트(322)는 웹 페이지에 구현하기 위한 정보에 액세스하기 위해 데이터 저장 컴포넌트(320)와 직접 인터페이스한다. 본 발명의 또 다른 예에서, CS 데이터 호스팅 컴포넌트(322)는 그의 웹 페이지 링크에 구현하기 위한 정보에 액세스하기 위해 검색 엔진 컴포넌트(314)와 인터페이스한다. 본 발명의 또 다른 예에서, CS 데이터 호스팅 컴포넌트(322)는 클라이언트 등의 분산 자원에 존재할 수 있다. 이 컴포넌트(322)는 또한 서버 시스템 컴포넌트(304)에 액세스하는 다른 서버에 존재할 수 있다. 이 예에서, 클라이언트(또는 서버)는 실제로 호스팅된 웹 페이지에 대한 서버가 되어 그의 로컬 저장 장치 및/또는 다른 로컬 수단으로부터 웹 페이지 링크에 구현하기 위한 정보를 공급한다.
당업자라면 각각의 컴포넌트가 독립적으로 기술되어 있지만 본 발명의 다른 예들에서의 컴포넌트는 다른 컴포넌트와 관련된 기능을 포함할 수 있음을 잘 알 것이다. 이와 마찬가지로, 어떤 컴포넌트들은 본 발명의 범위를 변경하지 않고 생략될 수 있다.
이제 도 4로 가면, 본 발명의 일 측면에 따른 데이터 분석 시스템(400)의 또 다른 블록도가 도시되어 있다. 데이터 분석 시스템(400)은 서로 간에 상호작용하는 통신 시스템(406)을 갖는 클라이언트 시스템 컴포넌트(402) 및 서버 시스템 컴포넌트(404)로 이루어져 있다. 본 발명의 이 예에서, 서버 시스템 컴포넌트(404)는 분산 자원 제어 컴포넌트(414) 및 데이터 저장 컴포넌트(416)로 이루어져 있다. 서버 시스템 컴포넌트(404)는 클라이언트 시스템 컴포넌트(402)로부터의 웹 페이지 정보의 수신에 관련된 본 발명의 예를 강조하기 위해 간략화되어 있다. 일반적으로, 정보는 통신 시스템(406)을 통해 분산 자원 제어 컴포넌트(414)로 들어가고 그로부터 나온다. 클라이언트 시스템 컴포넌트(402)는 클라이언트 제어 컴포넌트(408), 데이터 저장 컴포넌트(410) 및 선택적인 통지 컴포넌트(412)로 이루어져 있다. 본 발명의 이 예에서, 통지 컴포넌트(412)는 클라이언트 시스템 컴포넌트(402)로부터 서버 시스템 컴포넌트(404)로 들어가는 데이터를 제어한다. 본 발명의 다른 예들에서, 통지 컴포넌트(412)는 또한 클라이언트 시스템 컴포넌트(402)와 다른 클라이언트 시스템 컴포넌트 사이의 피어-투-피어 통신을 제어한다. 구체적으로 말하면, 통지 컴포넌트(412)는 언제 및/또는 어떤 데이터가 클라이언트 시스템 컴포넌트(402)로부터 전송되어야 하는지를 결정한다. 결정은 누적된 웹 페이지 데이터의 크기, 서버 시스템 컴포넌트(404)가 알지 못하는 링크가 발견되었는지 여부, 웹 페이지에 대한 변동의 중요도(50% 이상 콘텐츠 변동 및/또는 고우선순위 페이지 변동 등), 시간 퍼미션(time-of-day permission), 및/또는 분산 자원 제어 컴포넌트(414) 등에 의해 설정된 일반 시간 퍼미션(general time permission)에 기초할 수 있다. 통지 컴포넌트(412)는 또한 그 자신의 중요도 인자 및/또는 데이터 전송을 위한 그 자신의 타이밍 스케줄을 결정하기 위해 알고리즘을 이용할 수 있다. 당업자라면 통지 컴포넌트(412)의 기능은 클라이언트 제어 컴포넌트(408) 및/또는 도 4에 도시하지 않은 다른 클라이언트 시스템 컴포넌트 내에 존재할 수 있음을 잘 알 것이다.
본 발명을 완전히 이해하기 위해, 동작 예에 대해 기술한다. 본 발명의 일례에서, 분산 클라이언트 기반 크롤러는 다음과 같이 동작한다. 잠재적인 새로운 웹 페이지 및 웹 페이지의 콘텐츠/상태 변동에 관한 착신 클라이언트 메시지를 수신하는 서버는 물론 서버와 통신하는 클라이언트 세트가 존재하는 것으로 가정한다. 클라이언트 머신은 웹 브라우징에 사용되는 퍼스널 컴퓨터이거나 퍼스널 컴퓨터에 페이지를 서비스하는 데 사용되는 프록시 서버일 수 있다. 클라이언트는 (1) 웹 페이지에 도달하는 데 사용되는 URL, (2) 웹 페이지의 콘텐츠의 해쉬, (3) 웹 페이지의 콘텐츠, 및 (4) 방문 시간을 포함할 수 있는 웹 페이지 상의 정보를 수집하도록 구성되어 있다. 본 발명의 몇가지 예(예를 들어, 프록시 서버 등)에서, 이러한 정보 모두를 존속시키는 것이 실시불가능할 수 있으며, 어떤 정보는 얼마간의 기간 동안 존속될 수 있을 뿐이다.
본 발명의 다른 예에서, 클라이언트는 특정의 기간 동안 특정의 브라우저 또는 프록시 서버로부터 방문한 웹 페이지의 URL을 기록하고, 이어서 이 URL 세트를 서버로 전송한다. 서버는 이어서 어느 URL이 이전에 몰랐던 것인지를 검사하고, 장래의 크롤링/다운로드/인덱싱을 위해 이들을 알고있는 URL에 추가한다. 이것은 서버와 관련된 검색 엔진이 토폴로지적 크롤링에 의해서는 발견되지 않았을 수 있는 웹 페이지에 관해 알 수 있게 해준다.
클라이언트로부터 서버로 전송되는 정보의 볼륨을 감소시키기 위해, 클라이언트는 그 자신이 서버에 특정의 URL을 이미 알려주었는지에 관한 정보를 로컬적으로 유지할 수 있으며, 아직 그렇게 하지 않은 경우 서버에 정보를 전송할 수 있다. 각각의 문서를 해쉬 함수를 통해 정수에 매핑하고 이어서 2개의 해쉬 값이 동일한지 여부를 검사함으로써 2개의 웹 페이지가 동일한지를 효율적으로 결정하기 위한 공지의 방법들이 있다. URL과 관련된 콘텐츠에 대한 가장 최근의 해쉬가 URL과 관련된 콘텐츠의 이전의 해쉬와 다른 경우, 그 콘텐츠는 변경되었다. 클라이언트가 웹 페이지를 방문할 때마다, 클라이언트는 그 페이지에 대한 해쉬 값을 계산한다. 클라이언트가 이미 그 페이지를 방문한 경우, 클라이언트는 해쉬 값이 변경되었는지 여부를 검사한다. 변경된 경우, 클라이언트는 클라이언트가 마지막으로 그 페이지에 액세스한 이래로 웹 페이지가 변경된 것으로 결정하고 서버에 알려줄 수 있다. 클라이언트는 새로운 <url, 해쉬 값> 쌍을 로컬적으로 기록한다.
클라이언트가 서버에 변동에 관해 알려줄 수 있는 여러가지 다른 방식이 있다. 가장 간단한 것은 단지 URL 콘텐츠/상태가 변동되었다는 메시지를 전송하는 것이다. 이어서, 서버는 가능한 한 곧 그 페이지를 재크롤링하기로 스케줄링할 수 있다. 서버가 페이지를 재방문할 필요가 없도록 하기 위해, 클라이언트는 부가의 정보를 전송할 수 있다. 클라이언트가 그의 마지막 방문으로부터의 페이지의 캐싱된 사본을 갖는 경우, 클라이언트는 이전의 버전과 새로운 버전 사이의 차와 함께 이전의 해쉬 값 및 새로운 해쉬 값을 전송할 수 있다. 서버는 먼저 클라이언트의 이전의 해쉬 값이 그 페이지에 대한 서버의 현재의 해쉬 값과 일치하는지를 검사한다. 일치하는 경우, 서버는 페이지 콘텐츠를 그에 따라 갱신할 수 있다. 유의할 점은 어떤 문서 변동이 다른 것들보다 더 중요하다는 것이다. 예를 들어, 한 경우에서 전체 페이지가 변동될 수 있는 반면, 다른 경우 단지 하나의 콤마만이 문장에 추가되어 있다. 클라이언트는 변동의 중요도를 계산하고 (a) 서버로 어느 갱신을 전송할지의 우선순위를 정하는 데 이 정보를 이용하거나 (b) 다른 페이지 정보와 함께 중요도 값을 서버로 전송할 수 있으며, 따라서 서버는 페이지에 대한 그의 재크롤링/재인덱싱의 우선순위를 정하는 데 이 정보를 사용할 수 있다. 변동 중요도 함수의 예는 변동된 문서의 퍼센티지, 변동의 언어적/구문적 중요도, 및 변동에 의해 영향을 받게 될 사용자 검색의 퍼센티지의 추정치 등의 항목을 포함하지만, 이에 한정되는 것은 아니다. 중요도는 또한 페이지의 인기의 추정치에 의해 가중될 수 있다.
전술한 통신 수단에서의 한가지 단점은 그 결과 클라이언트들과 서버 사이의 상당한 트래픽 오버헤드가 있게 된다는 것이다. 예를 들어, 100개의 클라이언트 모두가 처음으로 페이지 "X"를 방문하는 경우, 각각은 페이지 "X"를 발견했다는 메시지를 서버에 전송한다. 이와 마찬가지로, 페이지 "Y"가 변동되었다고 서버가 통지를 받은 경우, 서버는 부가의 클라이언트들이 그에게 알려주도록 할 필요가 없다. 따라서, 클라이언트들과 서버 사이의 불필요한 통신을 상당히 감소시키는 본 발명의 부가의 예가 이하에 제공된다.
도 5를 참조하면, 본 발명의 일 측면에 따른 검색 페이지 결과를 이용하는 데이터 분석 시스템(500)의 예시가 도시되어 있다. 데이터 분석 시스템(500)은 검색 결과 페이지(506)를 갖는 클라이언트(502) 및 검색 서버(504)로 이루어져 있으며 클라이언트(502)에서 서버(504)로의 전송(508) 및 서버(504)에서 클라이언트(502)로의 수신(510)을 위한 통신 수단을 갖는다. 본 발명의 실시예의 제1 예에서, 클라이언트(502)는 서버(504)에 변경된 웹 페이지를 통지하지만 어떤 부가 정보도 전송하지 않는다. 사용자가 검색 엔진을 이용할 때, 검색 서버(504)는 검색 결과 페이지(506) 내의 각각의 웹 페이지에 대해 콘텐츠의 서버 버전의 해쉬와 그 콘텐츠가 신선하지 않은 것으로 알려져 있는지 여부를 가리키는 신선도 플래그(freshness flag)를 포함하는 결과를 클라이언트에 제공한다. 클라이언트(502)가 검색 결과 페이지(506) 내의 페이지들 중 하나를 방문하는 경우, 클라이언트는 먼저 서버(504)가 이미 그 페이지가 신선하지 않은 것으로 알고 있는지(예를 들어, 다른 클라이언트가 서버(504)에 알려주었으나 서버(504)가 아직 그 페이지를 리프레쉬하지 않았는지) 여부를 검사하고, 페이지의 콘텐츠의 해쉬를 계산하여 이를 검색 엔진이 제공한 해쉬와 비교한다. 이들이 불일치하면, 클라이언트(502)는 서버(504)에 그 URL과 관련된 콘텐츠가 변동되었다는 통지를 보낸다. 서버(504)가 통지를 수신할 때, 서버는 신선도 플래그의 상태를 변경하고 URL을 재크롤링을 위한 우선순위 큐에 부가한다.
이 예는 클라이언트가 페이지 차이 정보(이 정보는 서버가 크롤링없이 웹 페이지에 관한 그의 정보를 갱신하기 위해 및/또는 서버가 그 웹 페이지를 언제 재크롤링해야 하는지 우선순위를 정하는 일을 돕기 위해 이용될 수 있음)를 서버로 전송하는 시나리오에 대해 확장될 수 있다. 이것은 검색 엔진이 각각의 검색 결과와 함께 2개의 추가의 필드, 즉 마지막 클라이언트 통지의 시간 및 마지막 클라이언트 통지로부터의 페이지 해쉬 값을 전송하도록 함으로써 달성될 수 있다. 클라이언트가 검색 엔진에 의해 반환된 페이지를 방문하고 (a) known-not-fresh(신선하지 않은 것으로 알고 있음) 플래그가 거짓이거나 (b) known-not-fresh 플래그가 참이고 AND 마지막 클라이언트 통지로부터의 해쉬 값이 이 클라이언트가 페이지에 대해 계산하는 해쉬 값과 다른 경우, 클라이언트는 서버에 통지한다. 또한, 페이지 변동의 사이클을 알 수 있으며, 따라서 페이지가 A에서 B로 C로 A로 반복적으로 변동하는 경우, 본 발명은 그것을 알아차리고 이 페이지에 관한 클라이언트 갱신을 제한할 수 있다.
클라이언트들과 서버 사이의 불필요한 통신량을 감소시키는 것 이외에, "검색 엔진 결과 페이지를 통한 메시징"의 한가지 부가의 이점은 서버가 이미 알고 있는 웹 페이지에 관한 정보를 클라이언트가 그 서버에 전송하도록 보장함으로써 어떤 가능한 프라이버시 문제를 회피한다는 것이다. 이와 같이, 예를 들어 클라이언트가 비밀로 유지되어 있을 것으로 예상하고 있는 페이지를 그 클라이언트가 방문하지 않고 또 서버에 이 페이지의 존재에 관하여 통지하지 않도록 보장된다.
본 발명의 전술한 실시예에서의 한가지 단점은 서버가 사용자 검색 질의를 통해 클라이언트에게 반환한 웹 페이지에 관한 정보에 대해서만 그 서버가 알 수 있다는 것이다. 이 요건은 임의의 검색 엔진을 통해 클라이언트에 반환된 웹 페이지에 관하여 서버에 알려줌으로써 완화될 수 있다. 클라이언트는 사용자가 임의의 검색 엔진을 이용하고 있음을 알도록 구성되어 있다. 클라이언트가 검색 결과를 방문할 때, 클라이언트는 그 콘텐츠의 해쉬를 계산한다. 클라이언트가 이전에 이 URL을 방문하였으면, 그 클라이언트는 그 콘텐츠의 해쉬를 캐싱하고 있을 것이다. 이들 해쉬가 서로 다른 경우, 클라이언트는 URL 및 새로운 해쉬를 (이전의 방문 이후의 시간 및 다른 정보의 함수로서) 서버로 업로드할 수 있다. 클라이언트가 URL을 방문하지 않은 경우, 그 클라이언트는 URL 및 새로운 해쉬를 (이전의 방문 이후의 시간 및 다른 정보의 함수로서) 서버로 업로드할 수 있다.
그렇지만, 서버가 알고 있는 URL의 전체 리스트의 로컬 사본을 클라이언트가 가지고 있는 경우, 클라이언트가 새로운 것일 수 있는 URL을 만났을 때, 그 클라이언트는 그 URL이 알고 있는 URL의 리스트에 있는지을 알아보기 위해 단순히 검사하고 그 URL이 리스트에 아직 없는 경우 단지 그 URL을 서버로 전송할 수 있다. 이와 마찬가지로, 서버가 알고 있는 모든 URL에 대한 <url, 해쉬 값> 쌍의 전체 리스트의 로컬 사본을 클라이언트가 가지고 있는 경우, 그 클라이언트는 정보가 서버에게 새로운 것일 경우 갱신 정보를 전송하기만 하면 된다. 이 생각에서의 문제점은 이들 전체 리스트를 각각의 클라이언트로 전달하는 것이 실행불가능하다는 것이다. 예를 들어, 검색 엔진은 수 기가바이트의 데이터인 수십억개의 URL에 관하여 알 수 있다. 중요한 대역폭 문제 이외에, 각각의 클라이언트가 이러한 많은 양의 로컬 저장장치를 이러한 리스트를 위해 전용하기를 기대한다는 것은 이치에 맞지 않는다.
다른 대안에서, 본 발명의 다른 실시예에서, 중요한 대역폭 문제를 해소시키는 통신 수단이 제공된다. 예를 들어, 알파벳 S가 주어진 것으로 가정하자. 그러면, S*은 S로부터의 문자로 이루어지는 모든 스트링의 세트이다. 사전 D를 세트 S* 내의 스트링의 서브셋인 것으로 정의하자. 사전 D에 대한 표시자 함수 I, I:S*->{0,1}가 I(d)= l iff d e D인 특성을 갖는다. 사전 D에 대한 약한 표시자 함수 Iw는 Iw(d)=0이 d가 D 내에 있지 않음을 의미하는 특성을 갖는 함수이다(즉, 모든 d e D에 대해 Iw(d)=1이고 D 내에 있지 않은 임의의 d에 대해 Iw(d)는 0이거나 1일 수 있다). 마지막으로, 적당한 약한 표시자 함수 세트 I={Iw1, Iw2,..., Iwn }를, D 내에 있지 않은 임의의 d에 대해 Iwi(d)=0이 되도록 적어도 하나의 Iwi e I가 존재하는 속성을 갖는 유한의 약한 표시자 함수 세트인 것으로 정의하자.
따라서, 각각의 클라이언트는 I로부터 랜덤하게 선택된 약한 표시자 함수를 수신한다. 이들 표시자 함수는 URL의 전체 세트보다 상당히 작으며, 따라서 이들을 클라이언트들에 전송하는 것이 실용적이다. 서버가 이미 알고 있는 URL에 대해서, 표시자 함수는 그것을 알고 있음을 정확하게 결정한다. 서버가 알지 못하는 URL에 대해서, 표시자 함수는 잘못하여 그것을 알고 있는 것으로 표시할 수 있으며 이 경우 클라이언트는 아무것도 하지 않거나 또는 그것을 알지 못하는 것으로 정확하게 표시할 수 있으며 이 경우 클라이언트는 서버에 알려줄 수 있다. 적당한 약한 표시자 함수 세트의 정의에 의해, 서버가 알지 못하는 웹 사이트가 클라이언트에 의해 방문될 때마다 클라이언트의 표시자 함수가 그 사이트를 새로운 것으로 알게 될 영이 아닌 확률이 있음이 보장된다.
전술한 예를 보다 더 간략화하기 위해, S={a,b,c,d}이고 S*내의 모든 스트링이 4보다 작은 길이를 가지며, 사전 D={abc,adc,b,cbd,ddd}인 것으로 가정하자. 이 사전에 대한 약한 표시자 함수의 예는 다음과 같다.
I(스트링) = 1 iff(두번째 문자가 {b,d,널} 중 하나임)
약한 표시자 함수는 다음과 같이 D에 대해 랜덤하게 구성될 수 있다:
(1) D를 2개의 비중첩 서브사전(subdictionary) D' 및 D"으로 랜덤하게 분할함.
(2) 형식 "i번째 문자가 세트 S의 멤버임(S는 S의 서브셋임)"의 하나 이상의 항의 논리합으로 이루어진 D'에 대한 약한 표시자 함수 I'을 랜덤하게 선택함.
(3) 동일한 방식으로 D"에 대한 약한 표시자 함수 I"을 랜덤하게 선택함.
(4) 함수 I(x)=1 iff I'(x)=1 또는 I"(x)=1를 생성함.
모든 이러한 약한 표시자 함수 세트는 적당한 약한 표시자 함수 세트를 생성한다. 클라이언트 사전은 <URL, 페이지 해쉬 값> 쌍으로 이루어진 사전을 가짐으로써 페이지 최신성(page recency)을 검출하는 문제로도 확장될 수 있다.
본 발명의 한가지 독자적인 측면은 전용 크롤러의 관점에서의 크롤러 데이터를 클라이언트 관점에서의 크롤러 데이터와 비교할 수 있다는 것이다. 이것은 서버의 복잡화가 증가함에 따라 특히 중요하다. "보다 스마트한" 소프트웨어의 경우, 서버는 그 안에 존재하는 데이터의 흐름 및 액세스를 더 잘 제어할 수 있다. 이것은 임의의 또는 모든 사용자가 서버 상에서 발견되는 정보의 일부 또는 그 전부에 액세스하지 못하도록 할 수 있는 것을 포함한다. 심지어 서로 다른 유형의 사용자가 서버 액세스 및 심지어 액세스 시간 특권에 관한 서로 다른 "퍼미션 레벨"을 부여받을 수 있다. 일반적으로, 이러한 유연성의 증대는 보안, 유료 액세스 시행, 및 악의적 해킹 방지 등의 건설적 목적에 이용된다. 그렇지만, 그것은 서버 상에서 발견되는 웹 페이지의 실제 콘텐츠를 마스킹하는 데 종종 이용된다. 도 6에, 본 발명의 일 측면에 따른 웹 크롤러 시스템(602)을 포함하는 스푸핑 프로세스(600)의 블록도가 도시되어 있다. 프로세스(600)는 웹 크롤러 시스템(602) 및 서버(604)를 포함하며 이들 사이에 상호작용하는 통신 시스템(606)을 갖는다. 웹 크롤러 시스템(602)은 크롤러 컴포넌트(608) 및 데이터 저장 컴포넌트(610)로 이루어져 있다. 서버(604)는 서버 액세스 제어(612), 스푸핑 데이터(614), 및 실제 데이터(616)로 이루어져 있다. 일반적인 크롤러 컴포넌트(608)가 서버(604)에 액세스할 때, 이 컴포넌트(608)는 서버(604)에 대해 자신의 신원을 웹 크롤러라고 밝힌다. 이것은 "공손한(polite)" 것으로 생각된다. 공손함(politeness)은 서버 규칙을 무시함으로써 서버를 혹사시키는 웹 크롤러가 일반적으로 장래에 서버에 대한 액세스를 거부당하게 된다는 점에서 자기 방어이다. 서버에 대한 액세스를 거부당한다는 것은 검색 엔진의 사용자에게 콘텐츠를 제공하기 위해 서버 액세스에 의존하는 검색 엔진에게 특히 중요하다. 따라서, 크롤러는 일반적으로 공손함 규칙을 준수한다. 다른 공손함 규칙으로는 시간 액세스, 서버 자원 사용, 및 데이터의 비파괴적 검색 등이 있다. 이 예에서, 서버 액세스 제어(612)는 크롤러 컴포넌트(608)를 식별하며, 실제 데이터(616)에 액세스하게 하는 것이 아니라 크롤러 컴포넌트(608)를 스푸핑 데이터(614)쪽으로 보낸다. 스푸핑 데이터는 일반적으로 실제 데이터(616)와 동일하지만 서로 다른 콘텐츠를 갖는 URL 정보를 포함한다. 이것은 보통 거부감이 있는 콘텐츠를 마스킹하기 위해 행해진다. 예로서, 서버(604)는 검색 엔진을 속여 고양이 장난감을 찾는 열렬한 고양이 애호가에게 개 콘텐츠를 갖는 URL을 반환하도록 할 수 있다. 서버(604)는 정확한 ULR을 이용하여 스푸핑 데이터(614)를 편집하지만, 그 콘텐츠는 고양이 관련 정보로 변경되어 있다. 그렇지만, 실제 데이터(616)는 개 관련 정보를 포함한다. 따라서, 크롤러 컴포넌트(608)는 URL이 실제로는 개와 관련된 것인데도 그 URL이 고양이와 관련된 것이라고 생각하고 스푸핑 데이터(614)를 검색한다. 이어서, 크롤러 컴포넌트(608)는 스푸핑 데이터(614)를 검색 엔진에 의해 액세스가능한 데이터 저장 컴포넌트(610)에 저장한다. 그 후에, 검색 엔진을 통한 고양이의 검색은 또한 개 정보를 포함하는 URL을 반환한다. 개/고양이 예는 괜찮은 것일 수 있지만, 동일한 기술은 또한 광고, 포르노, 극단적 문학, 과격 집단, 또는 다른 주관적으로 거슬리는 자료 등과 같은 것을 마스킹하는 데 이용될 수 있다.
도 7에, 본 발명의 일 측면에 따른 웹 크롤러 시스템(702)을 포함하는 스푸핑 방지 프로세스(700)의 블록도가 도시되어 있다. 프로세스(700)는 웹 크롤러 시스템(702), 클라이언트 제어 컴포넌트(704), 웹 서버(706), 및 상호 연결을 제공하는 통신 시스템(708)을 포함한다. 웹 크롤러 시스템(702)은 크롤러 컴포넌트(710), 스푸핑 데이터를 갖는 데이터 저장 컴포넌트(712), 및 비교 컴포넌트(718)를 갖는 분산 자원 제어 컴포넌트(716)로 이루어져 있다. 크롤러 컴포넌트(710)는 도 6에 대해 도시되고 기술된 바와 같이 웹 서버(706)로부터 스푸핑 데이터(714)를 검색한다. 이어서, 스푸핑 데이터(714)는 데이터 저장 컴포넌트(712)에 저장된다. 이 시점에서, 일반적인 검색 엔진(도 7에 도시되어 있지 않음)은 스푸핑 데이터(714)에 액세스하고 이를 그의 진짜 콘텐츠를 알지 못하는 검색 엔진의 사용자들에게 분산한다. 그렇지만, 본 발명을 이용함으로써, 스푸핑 데이터(714)가 제거될 수 있다. 이것은 서버가 크롤러를 스푸핑할지라도 그 서버는 일반적으로 그의 웹 페이지에 액세스하는 사용자를 스푸핑하지는 않기 때문에 달성가능하다. 본 발명이 클라이언트 제어 컴포넌트(704) 등의 분산 자원을 이용하기 때문에, 이 컴포넌트(704)는 서버(706)에 사용자로서 액세스하여 서버(706)로부터 실제 데이터를 검색할 수 있다. 클라이언트 제어 컴포넌트(704)는 이어서 실제 데이터(또는 "클라이언트 데이터") 및/또는 실제 데이터의 표현을 분산 자원 제어 컴포넌트(716)로 포워딩할 수 있다. 분산 자원 제어 컴포넌트(716) 내의 비교 컴포넌트(718)는 이어서 저장된 스푸핑 데이터(714)를 검색하고 이를 클라이언트로부터 수신된 실제 데이터와 비교할 수 있다. 그 데이터가 서로 다른 경우, 분산 자원 제어 컴포넌트(716)는 데이터 저장 컴포넌트(712)에 존재하는 스푸핑 데이터(714)를 오버라이트하여 이러한 부정확성을 제거한다. 이것은 검색 엔진이 그렇지 않았으면 이용할 수 없었을 정확한 데이터에 액세스할 수 있게 해준다.
이상에 도시되고 기술된 예시적인 시스템을 살펴보면, 본 발명에 따라 구현될 수 있는 방법들이 도 8 내지 도 12의 플로우차트를 참조하여 더 잘 이해될 것이다. 설명의 간략화를 위해, 이 방법들이 일련의 블록들로 도시되고 기술되어 있지만, 본 발명이 블록들의 순서에 의해 제한되는 것이 아니며 본 발명에 따르면 어떤 블록들은 본 명세서에 도시되고 기술된 것과 다른 순서로 및/또는 다른 블록들과 동시에 일어날 수 있음을 잘 알 것이다. 게다가, 도시된 모든 블록들이 본 발명에 따른 방법들을 구현할 필요가 있는 것은 아니다.
본 발명은 하나 이상의 컴포넌트에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 데이터 구조 등을 포함한다. 일반적으로, 프로그램 모듈의 기능은 여러가지 실시예들에서 원하는 바에 따라 결합 또는 분산될 수 있다.
도 8을 참조하면, 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링 방법(800)의 흐름도가 도시되어 있다. 이 방법(800)은 단계 802에서 시작하여 클라이언트가 웹 페이지를 방문하는 동안 획득한 웹 페이지 정보를 기록한다(단계 804). 본 발명의 간단한 예에서, 정보는 방문한 웹 페이지의 URL만을 포함한다. 본 발명의 보다 복잡한 예는 예를 들어 URL, 웹 페이지의 콘텐츠의 해쉬 데이터, 및 타임 스탬프 등을 포함할 수 있다. 이어서, 클라이언트는 웹 페이지 정보를 서버로 전송한다(단계 806). 또한 본 발명의 예에서 클라이언트가 다른 클라이언트들에 웹 페이지 정보를 알려주는 것도 가능하다. 다시 말하면, 간단한 예에서, 정보는 URL만을 포함할 수 있거나, 복잡한 예에서 정보는 웹 페이지에 관한 몇가지 서로 다른 유형의 데이터를 포함할 수 있다. 본 발명의 한 예에서, 클라이언트는 웹 페이지 정보로부터 도출된 부가의 정보를 생성한다. 이 데이터는 예를 들어 웹 페이지가 액세스가능한 기간, 액세스의 용이성(오버로딩, 연결 재시도 등), 및 구현된 링크 상태 등을 포함할 수 있다. 게다가, 웹 페이지 정보는 정보가 언제 전송되는지를 제어하기 위해 스케줄링될 수 있다. 스케줄링은 클라이언트에 의해 및/또는 서버에 의해 기동될 수 있다. 정보의 전송을 위한 기준은 시간, 시간 길이, 날짜, 수집된 데이터량, 및 수집된 데이터 유형(예를 들어, 알지 못하는 데이터와 알고 있는 데이터, 발견된 스푸핑 데이터 등) 등을 포함할 수 있지만, 이에 한정되는 것은 아니다. 클라이언트로부터 서버로 전송되는 정보의 볼륨을 감소시키기 위해, 본 발명의 일례에서, 클라이언트는 그 자신이 서버에 특정의 URL을 이미 알려주었는지에 관한 정보를 로컬적으로 유지하고 클라이언트가 아직 그렇게 하지 않은 경우 정보를 서버로 전송만 할 수 있다. 서버가 웹 페이지 정보를 수신할 때, 서버는 그 자신이 이미 누적하고 있는 데이터에 대해 새로운 데이터가 있는지를 결정하기 위해 정보를 검토한다(단계 808). 본 발명의 간단한 예에서, 이것은 임의의 URL이 이미 서버 상에 있는 누적된 URL 리스트와 비교하여 새로운 것인지를 결정하는 단계를 포함한다. 알지 못하는 정보가 발견된 경우, 서버는 그 알지 못하는 정보를 그의 누적된 또는 "알고 있는" 데이터에 부가하고(단계 810), 프로세스를 마친다(단계 812). 본 발명의 일례에서, 알고 있는 데이터는 서버에 의한 장래의 웹 크롤링, 다운로드 및/또는 인덱싱 등에 이용되는 URL 리스트이다.
도 9를 참조하면, 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링 방법(900)의 다른 흐름도가 도시되어 있다. 이 방법(900)은 클라이언트가 그 자신이 방문했던 웹 페이지의 콘텐츠에 대한 해쉬 값을 계산(단계 904)하는 것으로 시작한다. 클라이언트가 웹 페이지를 1회 이상 방문한 경우, 그 웹 페이지에 대해 이전의 해쉬 값이 계산되어 저장되어 있다. 이어서, 클라이언트는 방금 계산된 또는 "최근의" 해쉬 값을 그 웹 페이지에 대한 이전의 해쉬 값과 비교한다(단계 906). 클라이언트는 비교를 행할 때 발견된 차이의 중요도를 설정할 수 있다. 예를 들어, 한 경우에 전체 웹 페이지가 변경될 수 있는 반면, 다른 경우 단지 하나의 콤마만이 문장에 부가되어 있다. 클라이언트는 변동의 중요도를 계산하고 (a) 클라이언트가 서버에 어떤 갱신을 전송할지의 우선순위를 정하기 위해 이 정보를 사용하거나 및/또는 (b) 다른 웹 페이지 정보와 함께 중요도 값을 서버에 전송할 수 있으며, 따라서 서버는 그의 페이지 재크롤링/재인덱싱의 우선순위를 정하는 데 이 정보를 사용할 수 있다. 변동 중요도의 예는 변동된 문서의 퍼센티지, 변경의 언어적/구문적 중요도, 및 변경에 의해 영향을 받게 되는 사용자 검색의 퍼센티지의 추정치를 포함할 수 있지만 이에 한정되는 것은 아니다. 중요도는 또한 페이지의 인기의 추정치에 의해 가중될 수 있다. 일반적으로, 클라이언트는 웹 페이지 상태 정보를 로컬적으로 저장하고 필요할 때 이 저장된 정보를 갱신한다(단계 908). 이어서, 클라이언트는 웹 페이지 상태 정보에 관해 서버에 알려준다(단계 910). 또한, 본 발명의 예에서, 클라이언트가 다른 클라이언트들에게 웹 페이지 상태 정보를 알려주는 것도 가능하다. 서버 및/또는 클라이언트가 통지받는 방식은 URL만, URL과 새로운 해쉬, 및/또는 URL과 새로운 해쉬 및 이전의 해쉬 등을 포함할 수 있지만, 이에 한정되는 것은 아니다. 이어서, 서버(또는 다른 클라이언트)는 URL 이외에 부가의 정보를 포함하고 있는 경우 클라이언트 웹 페이지 상태 정보를 그 자신의 서버 웹 페이지 상태 정보와 비교한다(단계 912). 서버가 단지 웹 페이지에 대한 URL을 상태 변동으로서 수신하는 경우, 서버는 일반적으로 그의 이전의 서버 웹 페이지 상태 정보와 비교하기 위한 새로운 상태 정보를 얻기 위해 그 웹 페이지의 재방문/크롤링을 기동한다. 이어서, 서버는 필요할 때 그의 웹 페이지 상태 정보를 갱신하고(단계 914), 프로세스를 종료한다(단계 916). 서버가 웹 페이지를 재방문할 필요가 없도록 하기 위해, 클라이언트는 부가의 정보를 전송할 수 있다. 클라이언트가 그의 마지막 방문으로부터 그 페이지의 캐싱된 사본을 가지고 있는 경우, 클라이언트는 이전 버전과 새 버전 사이의 차이와 함께 이전의 해쉬 값 및 새로운 해쉬 값을 전송할 수 있다. 서버는 먼저 클라이언트의 이전의 해쉬 값이 그 페이지에 대한 서버의 현재의 해쉬 값과 일치하는지를 검사한다. 일치한다면, 따라서 그 페이지 콘텐트를 갱신할 수 있다.
도 10에, 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링 방법(1000)의 또 다른 흐름도가 도시되어 있다. 이 방법(1000)은 클라이언트가 검색 서버 상에서 검색 질의를 개시(단계 1004)하는 것으로 시작한다(단계 1002). 검색 서버는 검색 질의를 분석하고 질의에 응답하여 검색 결과의 리스트를 편집한다(단계 1006). 이어서, 검색 서버는 구현된 웹 페이지 링크 정보를 갖는 검색 결과 페이지를 작성한다(단계 1008). 일반적인 정보는 웹 페이지의 콘텐츠의 서버 버전의 해쉬 및/또는 각각의 웹 페이지에 대해 콘텐츠가 신선하지 않은 것으로 알려져 있는지 여부(예를 들어, 다른 클라이언트가 검색 서버에 웹 페이지에 대한 새로운 갱신을 알려주었지만, 검색 서버가 그 웹 페이지를 리프레쉬하지 않았는지)를 나타내기 위한 플래그를 포함할 수 있지만, 이에 한정되는 것은 아니다. 따라서, "known not to be fresh"(신선하지 않은 것으로 알고 있음) 플래그를 갖는 웹 페이지는 검색 서버가 검색을 요청하는 클라이언트가 그에 관한 갱신 정보를 전송하기를 원하는 않는 웹 페이지이다. 이어서, 검색 서버는 구현된 링크를 갖는 검색 결과 페이지를 그 검색을 요청한 클라이언트로 전송한다(단계 1010). 클라이언트가 검색 결과 페이지 상에 리스트된 웹 페이지들을 방문할 때, 클라이언트는 검색 서버에 의해 제공된 구현된 신선도 플래그(또는 신선도 상태)를 검사한다(단계 1012). 클라이언트는 신선도 상태가 "신선함"일 때 그가 방문하는 웹 페이지의 콘텐츠의 해쉬를 계산한다(단계 1014). 신선함 상태는 검색 서버가 그 자신이 최근 또는 가장 신선한 버전의 웹 페이지를 가지고 있는 것으로 믿고 있음을 나타낸다. 따라서, 클라이언트는 웹 페이지의 콘텐츠의 새로운 해쉬를 계산하고, 이를 검색 서버에 의해 제공된 구현된 해쉬와 비교한다(단계 1016). 이어서, 클라이언트는 새로운 해쉬와 검색 서버 제공 해쉬 사이에 차이 또는 델타가 발견되는 때마다 검색 서버에 통지한다(단계 1018). 이어서, 검색 서버는 통지를 수신하고 신선도 상태를 "known not to be fresh"(신선하지 않은 것으로 알고 있음)로 갱신하고 또한 그 웹 페이지를 리크롤링을 위한 리스트에 부가하고(단계 1020), 프로세스를 종료한다(단계 1022). 본 발명의 이 예에서 리크롤링 리스트는 검색 서버가 "known not to be fresh" 상태를 갖는 열거된 웹 페이지의 콘텐츠의 해쉬를 갱신하는 데 이용하는 방법이다. 검색 서버는 갱신을 완료하기 위해 그 웹 페이지를 "재크롤링" 또는 재방문한다.
다른 예에서, 상기 방법은 검색 서버가 마지막 클라이언트 통지의 시간 및 마지막 클라이언트 통지로부터의 웹 페이지 해쉬 값을 포함하는(그렇지만, 이에 한정되지 않음) 각각의 검색 결과를 갖는 부가의 필드를 전송하도록 함으로써 클라이언트들이 페이지 차이 정보(이는 이어서 검색 서버가 크롤링없이 웹 페이지에 관한 정보를 갱신하기 위해 및/또는 검색 서버가 웹 페이지를 언제 재크롤링해야 하는지의 우선순위를 정하는 것을 용이하게 하기 위해 이용됨)를 검색 서버로 전송하는 경우의 방법을 구축하도록 확장된다. 클라이언트가 검색 서버에 의해 반환된 페이지를 방문하고 또 (a) "known not to be fresh" 플래그가 거짓이거나 (b) "known not to be fresh" 플래그가 참이고 AND 마지막 클라이언트 통지로부터의 해쉬 값이 이 클라이언트가 웹 페이지에 대해 계산하는 해쉬 값과 다른 경우, 클라이언트는 검색 서버에 통지한다. 또한, 페이지 변동의 사이클을 아는 것이 가능하며, 따라서 페이지가 A에서 B로 C로 A로 반복적으로 변경되는 경우, 클라이언트는 그것을 알고 이 페이지에 관한 클라이언트 갱신을 제한할 수 있다.
검색 결과 페이지를 이용함으로써, 본 발명에 의해 나타낸 바와 같이 클라이언트 기반 웹 크롤러에서 클라이언트와 서버 사이의 트래픽이 급격히 감소된다. 게다가, 서버가 검색 결과 페이지에서 제공한 웹 페이지만이 클라이언트에 의해 갱신되기 때문에 클라이언트 프라이버시가 유지된다. 이와 같이, 액세스를 제한한 웹 페이지를 클라이언트가 방문하는 경우, 이 정보가 부주의하게 검색 서버로 전송되는 일은 없다. 이 방법의 장점은 또한 새로운 웹 페이지가 비공개가 아닌 경우에도 검색 서버가 검색에서 이용하기 위한 그의 알고 있는 웹 페이지를 확장하기 위해 클라이언트를 이용할 수 없다는 점에서 단점이기도 하다.
본 발명의 다른 예에서, 방법(도시 생략)은 검색 서버의 웹 페이지 정보를 이용함은 물론 다른 검색 서버의 웹 페이지 정보도 이용한다. 따라서, 다른 검색 서버에 의해 클라이언트로 반환된 새로운 웹 페이지는 새로운 웹 페이지가 존재함을 검색 서버에 통지하기 위해 이용될 수 있다. 이것은 여전히 클라이언트의 프라이버시를 유지하는 데 그 이유는 클라이언트가 검색 서버가 열거하지 않은 공개적으로 이용가능한 웹 페이지들을 검색 서버에게 통지할 뿐이기 때문이다. 이것에 의해 검색 서버는 클라이언트의 신뢰를 손상시키지 않고 알지 못하는 웹 페이지를 부가할 수 있게 된다. 이 통지는 웹 페이지의 URL, 웹 페이지의 콘텐츠의 해쉬, 웹 페이지 액세스의 타임 스탬프, 및 웹 페이지의 이전의 해쉬와 비교되는 새로운 해쉬의 델타 등을 포함할 수 있다.
도 11로 가면, 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링 방법(1100)의 또 다른 흐름도가 도시되어 있다. 이 방법은 검색 서버가 약한(손실많은) 표시자 함수 세트를 생성(단계 1104)하는 것으로 시작한다(단계 1102). 이들 함수를 생성하는 방법에 대해서는 이하에서 기술한다. 검색 서버는 랜덤하게 선택된 약한 표시자 함수를 클라이언트 기반 웹 크롤러를 포함하는 클라이언트들로 전송한다(단계 1106). 이어서, 클라이언트는 랜덤하게 선택된 약한 표시자 함수가 알지 못하는 것으로 표시되어 있는 웹 페이지의 웹 페이지 데이터를 생성한다(단계 1108). 일반적으로, 알지 못하는 웹 페이지만이 약한 표시자 함수에 의해 정확하게 표현된다. "알고 있는" 웹 페이지는 진짜로 알고 있거나 그렇지 않을 수 있다. 이어서, 클라이언트는 알지 못하는 웹 페이지 데이터를 서버로 전송한다(단계 1110). 이어서, 서버는 이 데이터를 이용하여 웹 페이지에 관련된 그의 정보를 갱신하고(단계 1112), 프로세스를 종료한다(단계 1114).
도 12를 참조하면, 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링을 위한 적당한 약한 표시자 함수 세트를 생성하는 방법(1200)의 흐름도가 도시되어 있다. 이 방법은 검색 서버 상에 존재하는 웹 페이지 정보를 나타내는 사전을 비중첩 서브사전으로 랜덤하게 분할(단계 1204)하는 것으로 시작한다(단계 1202). 일반적으로, 서브사전은 그 각각이 일군의 웹 페이지 정보 중에서 공통된 속성을 나타내도록 선택된다. 이어서, 약한(손실많은) 표시자 함수는 특정의 서브사전에서 발견되는 웹 페이지 정보를 나타내기 위해 각각의 서브사전에 대해 랜덤하게 선택된다(단계 1206). 이어서, 적어도 하나의 서브사전의 약한 함수가 1이 되는 경우 I(x) = 1이 되도록 함수가 생성되고(단계 1208), 프로세스가 종료한다(단계 1210). 이와 같이, "적당한" 약한 표시자 함수 세트가 생성된다. 따라서, 예를 들어 서버가 이미 알고 있는 임의의 URL의 경우, 표시자 함수는 그것이 알고 있는 것임을 정확하게 결정한다. 서버가 알지 못하는 URL의 경우, 표시자 함수는 그것을 알고 있는 것으로 잘못 표시할 수 있으며 이 경우 클라이언트는 아무것도 하지 않거나, 표시자 함수는 그것을 알지 못하는 것으로 정확하게 표시할 수 있으며 이 경우 클라이언트는 서버에 알려줄 수 있다. 정의에 의해, 적당한 약한 표시자 함수 세트는 서버가 알지 못하는 웹 사이트가 클라이언트에 의해 방문될 때마다 그 클라이언트의 표시자 함수가 그 사이트를 새로운 것으로 알게 될 영이 아닌 확률이 있다.
본 발명의 여러가지 측면을 구현하기 위한 부가의 컨텍스트를 제공하기 위해, 도 13 및 이하의 논의는 본 발명의 여러가지 측면들이 구현될 수 있는 적당한 컴퓨팅 환경(1300)에 대한 간략한 일반적인 설명을 제공하기 위한 것이다. 본 발명이 로컬 컴퓨터 및/또는 원격 컴퓨터 상에서 실행되는 컴퓨터 프로그램의 컴퓨터 실행가능 명령어의 일반적인 관점에서 전술되어 있지만, 당업자라면 본 발명이 다른 프로그램 모듈과 결합하여 실시될 수도 있음을 잘 알 것이다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하고 및/또는 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 게다가, 당업자라면 본 발명의 방법이 단일 프로세서 또는 멀티 프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서 기반 및/또는 프로그램가능 가전 제품 등(이들 각각은 동작 시에 하나 이상의 관련 장치와 통신할 수 있음)을 비롯한 다른 컴퓨터 시스템 구성에서 실시될 수 있음을 잘 알 것이다. 본 발명의 예시된 측면들은 또한 어떤 태스크들이 통신 네트워크에 의해 연결되어 있는 원격 프로세싱 장치에 의해 수행되는 것인 분산 컴퓨팅 환경에서 실시될 수 있다. 본 발명의 전부가 아닌 어떤 측면들은 독립형 컴퓨터 상에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및/또는 원격 메모리 저장 장치에 위치될 수 있다.
본 출원에서 사용되는 바와 같이, 용어 "컴포넌트"는 컴퓨터 관련 개체, 즉 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행 중인 소프트웨어를 지칭하기 위한 것이다. 예를 들어, 컴포넌트는 프로세서 상에서 실행 중인 프로세스, 프로세서, 객체, 실행 파일, 실행 쓰레드, 프로그램, 및 컴퓨터일 수 있지만, 이에 한정되는 것은 아니다. 예로서, 서버 상에서 실행 중인 애플리케이션 및/또는 그 서버는 컴포넌트일 수 있다. 게다가, 컴포넌트는 하나 이상의 서브컴포넌트를 포함할 수 있다.
도 13을 참조하면, 본 발명의 여러가지 측면들을 구현하기 위한 예시적인 시스템 환경(1300)은 프로세싱 유닛(1304), 시스템 메모리(1306), 및 시스템 메모리를 비롯한 여러가지 시스템 컴포넌트를 프로세싱 유닛(1304)에 연결시키는 시스템 버스(1308)를 포함하는 종래의 컴퓨터(1302)를 포함한다. 프로세싱 유닛(1304)은 임의의 상업적으로 이용가능한 또는 독자적인 프로세서일 수 있다. 게다가, 프로세싱 유닛은 병렬로 연결될 수도 있는 것과 같은 2개 이상의 프로세서로 이루어진 멀티프로세서로서 구현될 수 있다.
시스템 버스(1308)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스, 및 몇가지 열거하자면 PCI, VESA, 마이크로채널, ISA, 및 EISA 등의 각종의 종래의 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함한 여러가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리(1306)는 판독 전용 메모리(ROM)(1310) 및 랜덤 액세스 메모리(RAM)(1312)를 포함한다. 시동 중과 같은 때에 컴퓨터(1302) 내의 구성요소들 사이에서 정보를 전송하는 것을 도와주는 기본 입출력 시스템(BIOS)(1314)은 ROM(1310)에 저장되어 있다.
컴퓨터(1302)는 또한 예를 들어 하드 디스크 드라이브(1316), 예를 들어 분리형 디스크(1320)로부터 판독하고 그에 기록하기 위한 자기 디스크 드라이브(1318), 및 예를 들어 CD-ROM 디스크(1324) 또는 기타의 광학 매체로부터 판독하고 그에 기록하기 위한 광학 디스크 드라이브(1322)를 포함할 수 있다. 하드 디스크 드라이브(1316), 자기 디스크 드라이브(1318), 및 광학 디스크 드라이브(1322)는 각각 하드 디스크 드라이브 인터페이스(1326), 자기 디스크 드라이브 인터페이스(1328), 및 광학 드라이브 인터페이스(1330)에 의해 시스템 버스(1308)에 연결된다. 드라이브(1316-1322) 및 그의 관련 컴퓨터 판독가능 매체는 컴퓨터(1302)의 데이터, 데이터 구조, 컴퓨터 실행가능 명령어 등의 비휘발성 저장을 제공한다. 상기의 컴퓨터 판독가능 매체에 대한 설명이 하드 디스크, 분리형 자기 디스크 및 CD에 대한 것이지만, 당업자라면 자기 카세트, 플래쉬 메모리 카드, DVD, 베르누이 카트리지 등과 같은 컴퓨터에 의해 판독가능한 다른 유형의 매체도 역시 예시적인 오퍼레이팅 환경(1300)에서 사용될 수 있으며 또한 임의의 이러한 매체가 본 발명의 방법들을 수행하기 위한 컴퓨터 실행가능 명령어들을 포함할 수 있음을 잘 알 것이다.
오퍼레이팅 시스템(1332), 하나 이상의 애플리케이션 프로그램(1334), 기타 프로그램 모듈(1336), 및 프로그램 데이터(1338)를 비롯한 다수의 프로그램 모듈이 드라이브(1316-1322) 및 RAM(1312)에 저장될 수 있다. 오퍼레이팅 시스템(1332)은 임의의 적당한 오퍼레이팅 시스템 또는 오퍼레이팅 시스템들의 결합일 수 있다. 예로서, 애플리케이션 프로그램(1334) 및 프로그램 모듈(1336)은 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링을 용이하게 하는 것을 포함할 수 있다.
사용자는 키보드(1340) 및 포인팅 장치(예를 들어, 마우스(1342)) 등의 하나 이상의 사용자 입력 장치를 통해 컴퓨터(1302)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 무선 리모콘, 스캐너 등이 있을 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스(1308)에 연결되어 있는 직렬 포트 인터페이스(1344)를 통해 프로세싱 유닛(1304)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(유니버설 직렬 버스) 등의 다른 인터페이스에 의해 연결될 수 있다. 모니터(1346) 또는 다른 유형의 디스플레이 장치도 역시 비디오 어댑터(1348) 등의 인터페이스를 통해 시스템 버스(1308)에 연결된다. 모니터(1346) 이외에, 컴퓨터(1302)는 스피커, 프린터 등과 같은 다른 주변 출력 장치(도시 생략)를 포함할 수 있다.
컴퓨터(1302)가 하나 이상의 원격 컴퓨터(1360)로의 논리적 연결을 사용하여 네트워킹된 환경에서 동작할 수 있음을 잘 알 것이다. 원격 컴퓨터(1360)는 워크스테이션, 서버 컴퓨터, 라우터, 피어 장치 또는 다른 통상의 네트워크 노드일 수 있으며, 비록 간략함을 위해 도 13에는 메모리 저장 장치(1362)만이 도시되어 있지만 일반적으로 컴퓨터(1302)와 관련하여 기술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 13에 도시된 논리적 연결은 근거리 통신망(LAN)(1364) 및 광역 통신망(WAN)(1366)을 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
예를 들어 LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1302)는 네트워크 인터페이스 또는 어댑터(1368)를 통해 로컬 네트워크(1364)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1302)는 일반적으로 모뎀(예를 들어, 전화, DSL, 케이블 등)(1370)을 포함하거나, LAN을 통해 통신 서버에 연결되거나, 인터넷 등의 WAN(1366)을 통해 통신을 설정하기 위한 다른 수단을 갖는다. 컴퓨터(1302)에 대해 내장형 또는 외장형일 수 있는 모뎀(1370)은 직렬 포트 인터페이스(1344)를 통해 시스템 버스(1308)에 연결된다. 네트워킹된 환경에서, 프로그램 모듈(애플리케이션 프로그램(1334)를 포함함) 및/또는 프로그램 데이터(1338)는 원격 메모리 저장 장치(1362)에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들(1302, 1360) 사이의 통신 링크를 설정하는 다른 수단(예를 들어, 유선 또는 무선)이 본 발명의 일 측면을 수행할 때 사용될 수 있음을 잘 알 것이다.
컴퓨터 프로그래밍 업계의 당업자의 실시에 따라, 본 발명은 달리 언급하지 않는 한 컴퓨터(1302) 또는 원격 컴퓨터(1360) 등의 컴퓨터에 의해 수행되는 동작의 심볼 표현 및 작용과 관련하여 기술되어 있다. 이러한 작용 및 동작은 때로는 컴퓨터 실행되는 것으로 말해진다. 작용 및 심볼로 표현된 동작은 프로세싱 유닛(1304)에 의해 데이터 비트를 나타내는 전기 신호를 처리하고 그 결과 전기 신호 표현의 변환 또는 감축을 가져오며 데이터 비트를 메모리 시스템(시스템 메모리(1306), 하드 드라이브(1316), 플로피 디스크(1320), CD-ROM(1324), 및 원격 메모리(1362)를 포함함) 내의 메모리 장소에 유지하고 그에 따라 컴퓨터 시스템의 동작은 물론 신호의 다른 처리를 재구성 또는 달리 변경하는 것을 포함함을 잘 알 것이다. 이러한 데이터 비트가 유지되어 있는 메모리 장소는 그 데이터 비트에 대응하는 특정의 전기적, 자기적 또는 광학적 특성을 갖는 물리적 장소이다.
도 14는 본 발명과 상호작용할 수 있는 샘플 컴퓨팅 환경(1400)의 다른 블록도이다. 시스템(1400)은 또한 하나 이상의 클라이언트(1402)를 포함하는 시스템을 예시한 것이다. 클라이언트(1402)는 하드웨어 및/또는 소프트웨어(예를 들어, 쓰레드, 프로세스, 컴퓨팅 장치)일 수 있다. 시스템(1400)은 또한 하나 이상의 서버(1404)를 포함한다. 서버(1404)는 또한 하드웨어 및/또는 소프트웨어(예를 들어, 쓰레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버(1404)는 예를 들어 본 발명을 이용하여 변환을 수행하기 위한 쓰레드를 하우징할 수 있다. 클라이언트(1402)와 서버(1404) 사이의 한가지 가능한 통신은 2개 이상의 컴퓨터 프로세스 사이에서 전송되도록 구성된 데이터 패킷의 형태일 수 있다. 시스템(1400)은 클라이언트(1402)와 서버(1404) 사이의 통신을 용이하게 하기 위해 이용될 수 있는 통신 프레임워크(1408)를 포함한다. 클라이언트(1402)는 클라이언트(1402)에 로컬인 정보를 저장하는 데 이용될 수 있는 하나 이상의 클라이언트 데이터 저장부(1410)에 연결되어 동작한다. 이와 마찬가지로, 서버(1404)는 서버(1404)에 로컬인 정보를 저장하는 데 이용될 수 있는 하나 이상의 서버 데이터 저장부(1406)에 연결되어 동작한다.
본 발명의 일례에서, 데이터 패킷은 웹 크롤링을 용이하게 하는 2개 이상의 컴퓨터 컴포넌트 사이에서 전송되며, 그 데이터 패킷은 적어도 부분적으로 웹 크롤링을 위한 분산 시스템을 적어도 부분적으로 이용하는 웹 크롤링에 관련된 정보로 이루어져 있다.
본 발명의 다른 예에서, 웹 크롤링을 용이하게 하기 위한 시스템의 컴퓨터 실행가능 컴포넌트를 저장하는 컴퓨터 판독가능 매체는 적어도 부분적으로 웹 크롤링을 위한 분산 시스템에 의해 편집된 웹 페이지에 관한 정보를 적어도 부분적으로 결정하는 웹 크롤링 시스템으로 이루어져 있다.
본 발명의 시스템 및/또는 방법이 컴퓨터 컴포넌트 및 비컴퓨터 관련 컴포넌트 둘다를 용이하게 하는 웹 크롤링 시스템에서 이용될 수 있음을 잘 알 것이다. 게다가, 당업자라면 본 발명의 시스템 및/또는 방법이 유선 및/또는 무선 등일 수 있는 컴퓨터, 서버 및/또는 핸드헬드 전자 장치 등을 포함하지만 이에 한정되는 것은 아닌 광범위한 전자 관련 기술에서 시용가능함을 잘 알 것이다.
당업자라면 또한 본 발명이 클라이언트 기반 크롤링 시스템에 대한 서버에는 물론 피어-투-피어 크롤링 시스템에 대해서도 이용될 수 있음을 잘 알 것이다. 또한, 클라이언트가 "서버" 동작과 일반적으로 관련된 태스킹을 수행할 수 있으며 따라서 본 발명의 어떤 실시예에서 서버와 관련된 어떤 특징을 클라이언트로 전송하는 것도 가능하다. 본 발명의 일 실시예의 예는 서버로 전송할 정보를 확인 및/또는 검색하기 위해 다른 클라이언트들로의 "서브크롤링(sub-crawl)"을 수행하는 클라이언트이다. 이 예는 예를 들어 어떤 클라이언트들과 서버 사이의 병목 현상을 갖는 네트워크에서 유익할 수 있다. 데이터는 서버에 대한 최상의 액세스 권한을 갖는 클라이언트로 전송될 수 있다. 본 발명의 다른 예들에서, 클라이언트는 인트라넷 시스템에서 서브크롤링을 개시함으로써 서브 행동을 보일 수 있으며, 따라서 인트라넷 상에 존재하는 단지 하나의 클라이언트 및/또는 실질적으로 감소된 수의 클라이언트로부터 서버로 정보를 보고한다. 이와 같이, 검색 서버는 그의 크롤링 자원을 확장하기 위해 클라이언트들 내의 다수의 서브크롤링을 개시할 수 있다.
이상에 기술되어 있는 것은 본 발명의 예들을 포함한다. 물론, 본 발명을 기술하기 위해 컴포넌트 또는 방법의 생각할 수 있는 모든 조합을 기술할 수는 없지만, 당업자라면 본 발명의 많은 추가의 조합 및 치환이 가능함을 잘 알 것이다. 따라서, 본 발명은 첨부된 청구항들의 사상 및 범위 내에 속하는 이러한 변경, 수정, 및 변형 모두를 포함하기 위한 것이다. 게다가, 상세한 설명 또는 청구항들에서 용어 "포함하는"이 사용되는 범위까지, 이러한 용어는 "포함하는"이 청구항의 이행 어구로서 이용될 때 해석되는 것처럼 용어 "포함하는"과 유사한 방식으로 포함적인 것이 되도록 하기 위한 것이다.
본 발명에 따른 분산 웹 크롤러를 사용하여 네트워킹된 시스템으로부터 정보를 획득하는 시스템 및 방법은 서버의 클라이언트의 분산 특성이 빠르고 정확한 웹 크롤링 데이터를 제공하는 데 이용된다. 본 발명은 또한 데이터 정확성을 향상시키기 위해 웹 크롤러의 스푸핑에 대항하는 수단을 제공함으로써 데이터 분석을 용이하게 해준다.
도 1은 본 발명의 일 측면에 따른 데이터 분석 시스템의 블록도.
도 2는 본 발명의 일 측면에 따른 데이터 분석 시스템의 다른 블록도.
도 3은 본 발명의 일 측면에 따른 데이터 분석 시스템의 또 다른 블록도.
도 4는 본 발명의 일 측면에 따른 데이터 분석 시스템의 또 다른 블록도.
도 5는 본 발명의 일 측면에 따른 검색 페이지 결과를 이용하는 데이터 분석 시스템을 나타낸 도면.
도 6은 본 발명의 일 측면에 따른 웹 크롤러 시스템을 포함하는 스푸핑 프로세스의 블록도.
도 7은 본 발명의 일 측면에 따른 웹 크롤러 시스템을 포함하는 스푸핑 방지 프로세스의 블록도.
도 8은 본 발명의 일 측면에 따른 클라이언트-기반 웹 크롤링 방법의 흐름도.
도 9는 본 발명의 일 측면에 따른 클라이언트-기반 웹 크롤링 방법의 다른 흐름도.
도 10은 본 발명의 일 측면에 따른 클라이언트-기반 웹 크롤링 방법의 또 다른 흐름도.
도 11은 본 발명의 일 측면에 따른 클라이언트-기반 웹 크롤링 방법의 또 다른 흐름도.
도 12는 본 발명의 일 측면에 따른 클라이언트 기반 웹 크롤링을 위한 적당한 약한 지시자 함수 세트를 생성하는 방법의 흐름도.
도 13은 본 발명이 동작할 수 있는 예시적인 오퍼레이팅 환경을 나타낸 도면.
도 14는 본 발명이 동작할 수 있는 다른 예시적인 오퍼레이팅 환경을 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 데이터 분석 시스템
102~106 : 클라이언트
108 : 통신 시스템
110 : 검색 서버
112 : 웹 페이지 서버

Claims (116)

  1. 데이터 분석 시스템에 있어서,
    통신 시스템을 통해 획득된 웹 페이지 정보와 관련된 제1 데이터 세트의 생성을 용이하게 하는 제1 컴포넌트; 및
    상기 통신 시스템과 상호 작용하는 적어도 하나의 분산 자원으로부터의 웹 페이지 정보에 관련된 제2 데이터 세트를 조정하는 제2 컴포넌트 -상기 제2 데이터 세트는 상기 제1 데이터 세트를 재구성하는 데 이용됨- 를 포함하는 데이터 분석 시스템.
  2. 제1항에 있어서,
    상기 제1 컴포넌트는 인터넷 웹 크롤러(internet web crawler)를 포함하는 데이터 분석 시스템.
  3. 제1항에 있어서,
    상기 제1 컴포넌트는 인트라넷 웹 크롤러를 포함하는 데이터 분석 시스템.
  4. 제1항에 있어서,
    상기 제2 컴포넌트는 상기 분산 자원으로부터의 데이터 수신을 최적화하는데 더 이용되는 데이터 분석 시스템.
  5. 제1항에 있어서,
    상기 제2 컴포넌트는 상기 적어도 하나의 분산 자원으로부터의 상기 제2 데이터 세트의 수신을 제어하기 위해 스케줄링 기능을 제공하는 데이터 분석 시스템.
  6. 제1항에 있어서,
    상기 제2 컴포넌트는 상기 제1 데이터 세트를 나타내는 적당한 약한 표시자 함수 세트를 이용함으로써 상기 통신 시스템을 통해 통신 트래픽 감축을 용이하게 하기 위해 이용되는 데이터 분석 시스템.
  7. 제6항에 있어서,
    상기 제2 컴포넌트는 상기 적당한 약한 표시자 함수 세트로부터 선택된 약한 표시자 함수를 랜덤하게 선택하여 상기 분산 자원들 중 적어도 하나로 전송하는데 더 이용되는 데이터 분석 시스템.
  8. 제1항에 있어서,
    상기 제2 컴포넌트는 상기 제1 컴포넌트에 의해 검색된 스푸프 데이터(spoof data)를 검출하기 위해 상기 제1 데이터 세트와 상기 제2 데이터 세트를 비교하는데 더 이용되는 데이터 분석 시스템.
  9. 제1항에 있어서,
    상기 제2 컴포넌트는 상기 제1 데이터 세트에 관련된 데이터에 관한 상태 정보를 생성하는데 더 이용되며, 상기 상태 정보는 적어도 하나의 분산 자원으로 전송되는 데이터 분석 시스템.
  10. 제9항에 있어서,
    상기 상태 정보는 적어도 부분적으로 상기 제1 데이터 세트와 관련된 정보의 신선도(freshness)를 나타내기 위한 신선도 플래그(freshness flag)를 포함하는 데이터 분석 시스템.
  11. 제9항에 있어서,
    상기 상태 정보는 적어도 부분적으로 상기 제1 데이터 세트와 관련된 정보의 콘텐츠의 해쉬를 포함하는 데이터 분석 시스템.
  12. 제9항에 있어서,
    상기 상태 정보는 적어도 부분적으로 상기 제1 데이터 세트의 정보의 사본을 포함하는 데이터 분석 시스템.
  13. 제1항에 있어서,
    상기 통신 시스템은 인터넷을 포함하는 데이터 분석 시스템.
  14. 제1항에 있어서,
    상기 통신 시스템은 월드 와이드 웹(world wide web)을 포함하는 데이터 분석 시스템.
  15. 제1항에 있어서,
    상기 통신 시스템은 인트라넷을 포함하는 데이터 분석 시스템.
  16. 제15항에 있어서,
    상기 인트라넷은 근거리 통신망을 포함하는 데이터 분석 시스템.
  17. 제15항에 있어서,
    상기 인트라넷은 광역 통신망을 포함하는 데이터 분석 시스템.
  18. 제1항에 있어서,
    상기 분산 자원은 서버의 클라이언트들을 포함하는 데이터 분석 시스템.
  19. 제1항에 있어서,
    상기 분산 자원은 상기 통신 시스템 및 상기 제2 컴포넌트와 상호작용하는 신뢰 개체(trusted entity)를 포함하는 데이터 분석 시스템.
  20. 제1항에 있어서,
    상기 제1 데이터 세트는 인터넷 웹 페이지 데이터를 포함하는 데이터 분석 시스템.
  21. 제1항에 있어서,
    상기 제1 데이터 세트는 인트라넷 웹 페이지 데이터를 포함하는 데이터 분석 시스템.
  22. 제1항에 있어서,
    상기 제2 데이터 세트는 상기 제1 데이터 세트에 부가의 데이터를 부가하는 데 이용되고, 상기 부가의 데이터는 상기 제1 컴포넌트가 알지 못하는 데이터를 포함하는 데이터 분석 시스템.
  23. 제1항에 있어서,
    상기 제2 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠의 해쉬를 포함하는 데이터 분석 시스템.
  24. 제1항에 있어서,
    상기 제2 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 URL(Uniform Resource Locator)을 포함하는 데이터 분석 시스템.
  25. 제1항에 있어서,
    상기 제2 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지에 관한 정보의 획득 시간에 관련된 타임 스탬프를 포함하는 데이터 분석 시스템.
  26. 제1항에 있어서,
    상기 제2 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠에 대한 변동의 델타 표시(delta indication)를 포함하는 데이터 분석 시스템.
  27. 제26항에 있어서,
    상기 델타 표시는 적어도 부분적으로 웹 페이지의 이전의 콘텐츠의 해쉬 및 상기 웹 페이지의 최근의 콘텐츠의 해쉬를 포함하는 것인 데이터 분석 시스템.
  28. 제1항에 있어서,
    상기 제2 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠에 대한 변동의 상태 표시(status indication)를 포함하는 데이터 분석 시스템.
  29. 제28항에 있어서,
    상기 상태 표시는 적어도 부분적으로 웹 페이지의 콘텐츠의 변동량에 관련된 퍼센티지(percentage)를 포함하는 데이터 분석 시스템.
  30. 제28항에 있어서,
    상기 상태 표시는 적어도 부분적으로 웹 페이지의 콘텐츠의 변동의 중요성을 표시하기 위한 중요도 표시자(significance indicator)를 포함하는 데이터 분석 시스템.
  31. 제1항에 있어서,
    상기 제2 데이터 세트는 인터넷 웹 페이지 데이터를 포함하는 데이터 분석 시스템.
  32. 제1항에 있어서,
    상기 제2 데이터 세트는 인트라넷 웹 페이지 데이터를 포함하는 데이터 분석 시스템.
  33. 제1항에 있어서,
    상기 제2 데이터 세트는 약한 표시자 함수 세트로부터 랜덤하게 선택된 적어도 하나의 약한 표시자 함수를 이용하여 편집된 데이터를 포함하고, 상기 약한 표시자 함수 세트는 상기 제1 데이터 세트를 나타내는 데이터 분석 시스템.
  34. 제1항에 있어서,
    적어도 하나의 검색 질의를 받고 적어도 하나의 검색 응답을 생성하는 검색 컴포넌트를 더 포함하며, 상기 검색 응답은 이 검색 응답에 구현된 정보에 의해 나타내어지는 상기 제1 데이터 세트의 적어도 일부분을 갖는 것인 데이터 분석 시스템.
  35. 제1항에 있어서,
    웹 페이지를 작성하는 웹 페이지 서버 컴포넌트를 더 포함하며, 상기 웹 페이지는 적어도 하나의 작성된 웹 페이지 상에서 발견되는 적어도 하나의 링크에 내포된 정보에 의해 나타내어지는 상기 제1 데이터 세트의 적어도 일부분을 갖는 데이터 분석 시스템.
  36. 제1항에 있어서,
    상기 제1 데이터 세트를 저장하기 위해 저장 컴포넌트를 더 포함하는 데이터 분석 시스템.
  37. 데이터 분석을 용이하게 하는 방법으로서,
    통신 시스템과 상호작용하는 웹 페이지로부터 획득된 제2 데이터 세트에 관련된 제1 데이터 세트를 생성하는 단계;
    상기 통신 시스템과 상호작용하는 적어도 하나의 분산 자원으로부터 제3 데이터 세트를 수신하는 단계 -상기 제3 데이터 세트는 상기 분산 자원에 의해 생성된 웹 페이지 관련 정보를 포함함-; 및
    상기 제3 데이터 세트로부터 획득된 정보를 반영하기 위해 상기 제2 데이터 세트를 재구성하는 단계를 포함하는 데이터 분석 방법.
  38. 제37항에 있어서,
    상기 제1 데이터 세트는 상기 제2 데이터 세트의 표현을 포함하는 데이터 분석 방법.
  39. 제38항에 있어서,
    상기 제2 데이터 세트의 상기 표현은 적어도 부분적으로 상기 제2 데이터 세트에 포함된 적어도 하나의 웹 페이지의 콘텐츠의 해쉬를 포함하는 것인 데이터 분석 방법.
  40. 제38항에 있어서,
    상기 제2 데이터 세트의 상기 표현은 적어도 부분적으로 상기 제2 데이터 세트에 포함된 적어도 하나의 웹 페이지의 상태 표시를 포함하는 것인 데이터 분석 방법.
  41. 제40항에 있어서,
    상기 상태 표시는 상기 웹 페이지 정보가 최근의 것인지를 나타내기 위한 신선도 플래그(freshness flag)를 포함하는 것인 데이터 분석 방법.
  42. 제37항에 있어서, 상기 제1 데이터 세트는 상기 제2 데이터 세트의 사본을 포함하는 데이터 분석 방법.
  43. 제37항에 있어서, 상기 제2 데이터 세트는 웹 크롤러에 의해 편집된(compiled) 웹 페이지 정보를 포함하는 데이터 분석 방법.
  44. 제37항에 있어서,
    상기 제3 데이터 세트는 상기 통신 시스템을 통한 클라이언트 액세스 웹 페이지 정보에 기초한 웹 페이지 정보를 포함하는 데이터 분석 방법.
  45. 제37항에 있어서,
    상기 분산 자원은 분산 크롤러 시스템의 클라이언트를 포함하는 데이터 분석 방법.
  46. 제37항에 있어서,
    상기 통신 시스템은 인터넷을 포함하는 데이터 분석 방법.
  47. 제37항에 있어서,
    상기 통신 시스템은 인트라넷을 포함하는 데이터 분석 방법.
  48. 제37항에 있어서,
    상기 제2 데이터 세트를 재구성하는 단계는:
    새로운 정보가 상기 제3 데이터 세트를 통해 상기 분산 자원으로부터 수신될 때 알지 못하는 정보를 상기 제2 데이터 세트에 부가하는 단계;
    상기 제3 데이터 세트로 표시된 바와 같이 변동이 일어난 때 상기 제2 데이터 세트 내의 기존의 정보를 갱신하는 단계; 및
    상기 제3 데이터 세트로부터의 정보가 분석된 후에 상태 정보를 상기 분산 자원으로 전달하는 데 이용되는 임의의 표시자를 재설정하는 단계를 포함하는 데이터 분석 방법.
  49. 제37항에 있어서,
    상기 제3 데이터 세트를 생성하기 위해 상기 제1 데이터 세트를 상기 분산 자원에 의해 이용될 수 있게 하는 상기 통신 시스템과 상호작용하는 적어도 하나의 분산 자원으로 상기 제1 데이터 세트를 전송하는 단계를 더 포함하는 데이터 분석 방법.
  50. 제38항에 있어서,
    상기 제2 데이터 세트를 나타내기 위한 약한 표시자 함수 세트를 생성하는 단계와;
    상기 제1 데이터 세트로서 상기 분산 자원들에 전송하기 위해 상기 약한 표시자 함수 세트로부터 랜덤한 약한 표시자 함수를 선택하는 단계를 더 포함하는 데이터 분석 방법.
  51. 제50항에 있어서,
    상기 약한 표시자 함수 세트는 랜덤하게 선택된 약한 표시자 함수가 새로운 웹 페이지를 식별할 수 있는 영이 아닌 확률이 존재하도록 적당한 약한 표시자 함수 세트를 포함하는 데이터 분석 방법.
  52. 제50항에 있어서,
    약한 표시자 함수 세트를 생성하는 상기 단계는:
    상기 제2 데이터 세트를 나타내는 사전을 제공하는 단계와;
    상기 사전을 비중첩 서브사전으로 랜덤하게 분할하는 단계와;
    적어도 하나의 서브사전의 약한 표시자 함수가 1인 경우에만 l(x)=1인 함수를 생성하는 단계를 포함하는 것인 데이터 분석 방법.
  53. 제37항에 있어서,
    상기 제2 데이터 세트에 포함된 스푸프 데이터를 찾아내기 위해 상기 제3 데이터 세트를 상기 제2 데이터 세트와 비교하는 단계를 더 포함하는 데이터 분석 방법.
  54. 제37항에 있어서,
    상기 분산 자원의 스케줄링을 통해 적어도 하나의 제3 데이터 세트의 수신을 최적화하는 단계를 더 포함하는 데이터 분석 방법.
  55. 제37항에 있어서,
    적어도 하나의 분산 자원으로부터 웹 페이지 검색 질의를 수신하는 단계와;
    상기 분산 자원으로부터의 상기 웹 페이지 검색 질의에 응답하여 웹 검색 결과 페이지를 생성하는 단계와;
    상기 제1 데이터 세트의 일부분을 상기 웹 검색 결과 페이지 상에서 발견되는 링크에서 구현하는 단계, 및
    상기 웹 검색 결과 페이지를 상기 제2 데이터 세트의 적어도 일부분의 표현으로서 상기 분산 자원으로 전송하는 단계를 더 포함하는 데이터 분석 방법.
  56. 제37항에 있어서,
    상기 웹 페이지에서 발견되는 링크들에 관한 정보를 구현하기 위해 상기 제1 데이터 세트의 적어도 일부분을 이용하여 웹 페이지를 작성하는 단계; 및
    상기 제1 데이터 세트를 적어도 하나의 분산 자원으로 분산시키기 위해 상기 웹 페이지를 전송하는 단계를 더 포함하는 데이터 분석 방법.
  57. 데이터 분석 시스템에 있어서,
    통신 시스템으로부터 적어도 하나의 제1 데이터 세트를 생성하는 수단;
    상기 통신 시스템과 상호작용하는 적어도 하나의 분산 자원으로부터 적어도 하나의 제2 데이터 세트를 수신하여 조정하는 수단; 및
    적어도 하나의 제2 데이터 세트를 이용하여 상기 제1 데이터 세트를 재구성하는 수단을 포함하는 데이터 분석 시스템.
  58. 제57항에 있어서,
    적어도 하나의 제1 데이터 세트를 생성하는 상기 수단은 웹 크롤러를 포함하는 데이터 분석 시스템.
  59. 제58항에 있어서,
    상기 제1 데이터 세트는 상기 웹 크롤러에 의해 획득되는 웹 페이지들에 관련된 데이터를 포함하는 데이터 분석 시스템.
  60. 제57항에 있어서,
    상기 제2 데이터 세트는 적어도 하나의 분산 자원에 의해 편집되고 적어도 부분적으로 상기 제1 데이터 세트의 대표적인 데이터에 기초하는 웹 페이지 비교 데이터를 포함하는 것인 데이터 분석 시스템.
  61. 데이터 분석 시스템에 있어서,
    분산 웹 크롤링 시스템에서의 이용을 위해 적어도 하나의 방문된 웹 사이트로부터 웹 페이지 정보를 생성하는 제1 컴포넌트와; 상기 웹 페이지 정보는 상기 제1 컴포넌트에 의해 통신 시스템을 통해 제2 컴포넌트로 전송되는 데이터 분석 시스템.
  62. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 웹 페이지 정보의 생성에서 이용되는 데이터의 획득 시간과 관련된 적어도 하나의 타임 스탬프를 제공하는 데이터 분석 시스템.
  63. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 웹 페이지 정보의 생성에서 이용하기 위해 적어도 하나의 검색 결과 페이지로부터 구현된 웹 크롤러 데이터 세트를 수신하는 데이터 분석 시스템.
  64. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 웹 페이지 정보의 생성에서 이용하기 위해 적어도 하나의 웹 페이지로부터 구현된 웹 크롤러 데이터 세트를 수신하는 데이터 분석 시스템.
  65. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 제2 컴포넌트로의 트래픽 흐름을 실질적으로 감축시키기 위해 제2 컴포넌트에 게이트웨이를 제공하여 상기 분산 크롤러 시스템의 적어도 하나의 다른 클라이언트를 통해 간접적으로 웹 페이지 데이터를 획득하도록 더 동작하는 데이터 분석 시스템.
  66. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 분산 웹 크롤링 시스템의 적어도 하나의 클라이언트 및 적어도 하나의 서버로부터 웹 페이지 관련 데이터를 수신하는 데이터 분석 시스템.
  67. 제61항에 있어서,
    상기 생성된 웹 페이지 정보는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠에 대한 변동의 상태 표시를 포함하는 것인 데이터 분석 시스템.
  68. 제67항에 있어서, 상기 상태 표시는 적어도 부분적으로 웹 페이지의 콘텐츠의 변동량에 관련된 퍼센티지를 포함하는 데이터 분석 시스템.
  69. 제67항에 있어서,
    상기 상태 표시는 적어도 부분적으로 웹 페이지의 콘텐츠에서의 변동의 중요성을 나타내기 위한 중요도 표시자를 포함하는 데이터 분석 시스템.
  70. 제61항에 있어서,
    상기 생성된 웹 페이지 정보의 적어도 일부분은 상기 통신 시스템을 통해 피어-투-피어(peer-to-peer) 클라이언트 전송에 이용가능하게 하기 위한 데이터 분석 시스템.
  71. 제61항에 있어서,
    상기 생성된 웹 페이지 정보는 웹 크롤러에 의해 편집된 웹 페이지 데이터를 나타내는 적당한 약한 표시자 함수 세트로부터 랜덤하게 선택된 약한 표시자 함수를 이용하여 편집되는 데이터 분석 시스템.
  72. 제61항에 있어서,
    상기 통신 시스템은 인터넷을 포함하는 데이터 분석 시스템.
  73. 제61항에 있어서,
    상기 통신 시스템은 인트라넷을 포함하는 데이터 분석 시스템.
  74. 제61항에 있어서,
    상기 웹 페이지 정보를 저장하기 위한 저장 컴포넌트를 더 포함하는 데이터 분석 시스템.
  75. 제61항에 있어서,
    상기 생성된 웹 페이지 정보가 상기 통신 시스템을 통해 전달되어야 하는지를 결정하는 통지 컴포넌트를 더 포함하는 데이터 분석 시스템.
  76. 제75항에 있어서,
    상기 통지 시스템은 제2 컴포넌트로부터 스케줄링 정보를 수신하고, 상기 스케줄링 정보는 상기 생성된 웹 페이지 정보의 획득 및 전송에 관련한 데이터 분석 시스템.
  77. 제61항에 있어서,
    상기 제1 컴포넌트는 상기 웹 페이지 정보의 생성에서 이용하기 위해 제2 컴포넌트로부터 데이터 세트를 수신하는 것인 데이터 분석 시스템.
  78. 제77항에 있어서, 상기 제1 컴포넌트는 상기 제2 컴포넌트가 알지 못하는 데이터를 검색하기 위해 상기 분산 웹 크롤링 시스템의 외부의 웹 검색 서버를 이용하는 것인 데이터 분석 시스템.
  79. 제77항에 있어서,
    상기 제1 컴포넌트는 상기 웹 페이지 정보 및 상기 수신된 데이터 세트에 기초하여 비교 데이터를 생성하고, 상기 제1 컴포넌트는 상기 통신 시스템을 통해 상기 비교 데이터를 상기 제2 컴포넌트가 임의대로 이용가능하게 만드는 데이터 분석 시스템.
  80. 제79항에 있어서,
    상기 비교 데이터는 적어도 부분적으로 적어도 하나의 웹 페이지의 적어도 하나의 URL을 포함하는 데이터 분석 시스템.
  81. 제79항에 있어서,
    상기 비교 데이터는 적어도 부분적으로 최근의 웹 페이지 방문을 나타내는 적어도 하나의 웹 페이지의 콘텐츠의 해쉬를 포함하는 데이터 분석 시스템.
  82. 제79항에 있어서,
    상기 비교 데이터는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠의 델타 표시를 포함하는 것인 데이터 분석 시스템.
  83. 제82항에 있어서,
    상기 델타 표시는 적어도 부분적으로 웹 페이지의 이전의 콘텐츠의 해쉬 및 상기 웹 페이지의 최근의 콘텐츠의 해쉬를 포함하는 데이터 분석 시스템.
  84. 제77항에 있어서,
    상기 제2 컴포넌트는 상기 분산 크롤링 시스템의 서버를 포함하는 데이터 분석 시스템.
  85. 제77항에 있어서,
    상기 제2 컴포넌트는 상기 분산 크롤링 시스템의 클라이언트를 포함하는 데이터 분석 시스템.
  86. 제77항에 있어서,
    상기 생성된 웹 페이지 정보는 상기 제2 컴포넌트가 알지 못하는 데이터를 포함하는 데이터 분석 시스템.
  87. 제77항에 있어서,
    상기 수신된 데이터 세트의 적어도 일부분은 상기 통신 시스템을 통해 피어-투-피어 클라이언트 전송에 이용가능하게 되는 것인 데이터 분석 시스템.
  88. 제77항에 있어서,
    상기 수신된 데이터 세트는 웹 크롤러에 의해 편집된 데이터에 대한 사전을 포함하는 데이터 분석 시스템.
  89. 제77항에 있어서,
    상기 수신된 데이터 세트는 웹 크롤러에 의해 편집된 데이터의 표현을 포함하며, 상기 데이터의 표현은 약한 표시자 함수를 이용하여 생성되는 데이터 분석 시스템.
  90. 제77항에 있어서,
    상기 수신된 데이터 세트는 웹 크롤러에 의해 편집된 데이터의 사본을 포함하는 데이터 분석 시스템.
  91. 제77항에 있어서,
    상기 제2 컴포넌트로부터 수신된 상기 데이터 세트를 저장하기 위한 저장 컴포넌트를 더 포함하는 데이터 분석 시스템.
  92. 데이터 분석을 용이하게 하는 방법에 있어서,
    통신 시스템을 통해 웹 페이지에 액세스하는 것으로부터 도출된 제1 데이터 세트를 편집하는 단계와;
    상기 통신 시스템과 상호 작용하는 분산 크롤링 시스템의 개체로 선택적으로 전송하는 단계를 포함하는 데이터 분석을 용이하게 하는 방법.
  93. 제92항에 있어서,
    상기 개체는 상기 분산 크롤링 시스템의 서버를 포함하는 데이터 분석을 용이하게 하는 방법.
  94. 제92항에 있어서,
    상기 개체는 상기 분산 크롤링 시스템의 적어도 하나의 클라이언트를 포함하는 데이터 분석을 용이하게 하는 방법.
  95. 제92항에 있어서,
    상기 제1 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 URL(uniform resource locator)을 포함하는 데이터 분석을 용이하게 하는 방법.
  96. 제92항에 있어서,
    상기 제1 데이터 세트는 적어도 부분적으로 적어도 하나의 웹 페이지의 콘텐츠의 해쉬를 포함하는 데이터 분석을 용이하게 하는 방법.
  97. 제92항에 있어서,
    선택적으로 전송하는 단계는 시간에 기초하는 데이터 분석을 용이하게 하는 방법.
  98. 제92항에 있어서,
    선택적으로 전송하는 상기 단계는 적어도 하나의 웹 페이지의 우선순위에 기초하는 데이터 분석을 용이하게 하는 방법.
  99. 제92항에 있어서,
    선택적으로 전송하는 상기 단계는 적어도 하나의 웹 페이지의 콘텐츠 변동의 퍼센티지에 기초하는 데이터 분석을 용이하게 하는 방법.
  100. 제92항에 있어서,
    선택적으로 전송하는 상기 단계는 적어도 하나의 새로운 웹 페이지를 식별하는 것에 기초하는 것인 데이터 분석을 용이하게 하는 방법.
  101. 제92항에 있어서,
    웹 크롤러에 의해 편집된 제2 데이터 세트의 표현을 수신하는 단계를 더 포함하며, 상기 제2 데이터 세트는 상기 통신 시스템으로부터의 적어도 하나의 웹 페이지에 관련하는 데이터 분석을 용이하게 하는 방법.
  102. 제101항에 있어서,
    제2 데이터 세트의 표현을 수신하는 상기 단계는 상기 제2 데이터 세트로부터 도출되고 상기 제2 데이터 세트에 대한 액세스 권한이 있는 웹 페이지 호스팅 서버에 의해 생성되는 구현된 정보를 갖는 웹 페이지의 수신을 통해 달성되는 데이터 분석을 용이하게 하는 방법.
  103. 제101항에 있어서,
    제2 데이터 세트의 표현을 수신하는 단계는 상기 제2 데이터 세트로부터 도출되고 상기 제2 데이터 세트에 대한 액세스 권한을 갖는 검색 서버로 전송되는 질의에 응답하여 생성되는 구현된 정보를 갖는 검색 결과 페이지의 수신을 통해 달성되는 데이터 분석을 용이하게 하는 방법.
  104. 제101항에 있어서,
    상기 제1 데이터 세트를 편집하기 위해 어느 웹 페이지를 방문해야 하는지를 제어하는데 상기 제2 데이터 세트를 이용하는 단계를 더 포함하는 데이터 분석을 용이하게 하는 방법.
  105. 제101항에 있어서,
    상기 제2 데이터 세트에 기초하여 언제 상기 제1 데이터 세트를 상기 통신 시스템을 통해 전송해야 하는지를 결정하는 단계를 더 포함하는 데이터 분석을 용이하게 하는 방법.
  106. 제105항에 있어서,
    상기 제2 데이터 세트는 그의 데이터가 오래된 것이어서 제1 데이터 세트를 통한 갱신을 필요로 하는 때를 나타내기 위해 신선도 표시자를 포함하는 데이터 분석을 용이하게 하는 방법.
  107. 제105항에 있어서,
    상기 제2 데이터 세트는 상기 제1 데이터 세트가 언제 전송되어야 하는지에 대한 스케줄을 포함하는 데이터 분석을 용이하게 하는 방법.
  108. 제101항에 있어서, 비교 데이터를 생성하기 위해 상기 제2 데이터 세트의 적어도 일부분을 웹 페이지에 액세스함으로써 획득된 정보의 적어도 일부분과 비교하는 단계, 및
    상기 제1 데이터 세트를 도출하기 위해 상기 비교 데이터의 표현을 생성하는 단계를 더 포함하는 데이터 분석을 용이하게 하는 방법.
  109. 제108항에 있어서,
    상기 제1 데이터 세트는 상기 제2 데이터 세트가 알지 못하는 데이터를 포함하는 데이터 분석을 용이하게 하는 방법.
  110. 제109항에 있어서,
    상기 알지 못하는 데이터는 상기 분산 크롤링 시스템 외부의 검색 서버로부터의 적어도 하나의 검색 결과 페이지로부터 도출된 알지 못하는 데이터만을 포함하는 데이터 분석을 용이하게 하는 방법.
  111. 제108항에 있어서,
    상기 제1 데이터 세트는 상기 제2 데이터 세트에 의해 나타내어진 웹 페이지에 대한 콘텐츠 변동을 포함하는 데이터 분석을 용이하게 하는 방법.
  112. 제108항에 있어서,
    상기 제1 데이터 세트는 상기 제2 데이터 세트에 의해 나타내어진 웹 페이지에 관련한 상태 정보를 포함하는 데이터 분석을 용이하게 하는 방법.
  113. 정보 수집을 용이하게 하는 2개 이상의 컴퓨터 컴포넌트 사이에서 전송되는 데이터 패킷으로서,
    상기 데이터 패킷은 웹 페이지에 관한 정보를 수집하는 분산 시스템을 적어도 부분적으로 이용하는 웹 크롤링에 관련한 정보를 적어도 부분적으로 포함하는 데이터 패킷.
  114. 제1항의 시스템의 컴퓨터 실행가능 컴포넌트를 저장하고 있는 컴퓨터 판독가능 매체.
  115. 컴퓨터, 서버 및 핸드헬드 전자 장치로 이루어지는 그룹으로부터 선택된 적어도 하나를 포함하는 제37항의 방법을 이용한 장치.
  116. 컴퓨터, 서버 및 핸드헬드 전자 장치로 이루어지는 그룹으로부터 선택된 적어도 하나를 포함하는 제1항의 시스템을 이용한 장치.
KR1020040068727A 2003-09-25 2004-08-30 클라이언트 기반 웹 크롤링 시스템 및 방법 KR101153138B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,681 2003-09-25
US10/670,681 US7685296B2 (en) 2003-09-25 2003-09-25 Systems and methods for client-based web crawling

Publications (2)

Publication Number Publication Date
KR20050030542A true KR20050030542A (ko) 2005-03-30
KR101153138B1 KR101153138B1 (ko) 2012-06-04

Family

ID=34194835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040068727A KR101153138B1 (ko) 2003-09-25 2004-08-30 클라이언트 기반 웹 크롤링 시스템 및 방법

Country Status (12)

Country Link
US (1) US7685296B2 (ko)
EP (1) EP1519281A3 (ko)
JP (1) JP4668567B2 (ko)
KR (1) KR101153138B1 (ko)
CN (1) CN1601528B (ko)
AU (1) AU2004205329B2 (ko)
BR (1) BRPI0403803A (ko)
CA (1) CA2478358A1 (ko)
MY (2) MY146316A (ko)
RU (1) RU2383920C2 (ko)
TW (1) TWI367428B (ko)
ZA (1) ZA200407180B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100705413B1 (ko) * 2005-08-19 2007-04-10 엔에이치엔(주) 웹 페이지 지정 크롤링 가능한 웹 서버 기반의 데스크톱검색 시스템 및 방법
WO2015122620A1 (ko) * 2014-02-14 2015-08-20 (주)엠더블유스토리 디지털콘텐츠의 무결성 보장을 위한 디지털 콘텐츠 모니터링 시스템
KR20210098542A (ko) * 2020-04-29 2021-08-10 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 데이터 업데이트 방법, 장치, 검색 서버, 단말 및 저장매체

Families Citing this family (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7540021B2 (en) 2000-04-24 2009-05-26 Justin Page System and methods for an identity theft protection bot
US8527495B2 (en) * 2002-02-19 2013-09-03 International Business Machines Corporation Plug-in parsers for configuring search engine crawler
US8042112B1 (en) 2003-07-03 2011-10-18 Google Inc. Scheduler for search engine crawler
US7725452B1 (en) * 2003-07-03 2010-05-25 Google Inc. Scheduler for search engine crawler
US7346839B2 (en) 2003-09-30 2008-03-18 Google Inc. Information retrieval based on historical data
CA2447961A1 (en) * 2003-10-31 2005-04-30 Ibm Canada Limited - Ibm Canada Limitee Research data repository system and method
US7873724B2 (en) * 2003-12-05 2011-01-18 Microsoft Corporation Systems and methods for guiding allocation of computational resources in automated perceptual systems
US20050149615A1 (en) * 2003-12-17 2005-07-07 Nedimyer Joseph P. System and method for processing resource registry updates without regard to chronological order
US8452880B2 (en) * 2003-12-22 2013-05-28 Oracle International Corporation System and method for verifying intended contents of an electronic message
US7299222B1 (en) * 2003-12-30 2007-11-20 Aol Llc Enhanced search results
US20050192948A1 (en) * 2004-02-02 2005-09-01 Miller Joshua J. Data harvesting method apparatus and system
US8131702B1 (en) * 2004-03-31 2012-03-06 Google Inc. Systems and methods for browsing historical content
US8769671B2 (en) * 2004-05-02 2014-07-01 Markmonitor Inc. Online fraud solution
US7992204B2 (en) 2004-05-02 2011-08-02 Markmonitor, Inc. Enhanced responses to online fraud
US7870608B2 (en) * 2004-05-02 2011-01-11 Markmonitor, Inc. Early detection and monitoring of online fraud
US8041769B2 (en) * 2004-05-02 2011-10-18 Markmonitor Inc. Generating phish messages
US9203648B2 (en) 2004-05-02 2015-12-01 Thomson Reuters Global Resources Online fraud solution
US7913302B2 (en) * 2004-05-02 2011-03-22 Markmonitor, Inc. Advanced responses to online fraud
US7457823B2 (en) 2004-05-02 2008-11-25 Markmonitor Inc. Methods and systems for analyzing data related to possible online fraud
US20070107053A1 (en) * 2004-05-02 2007-05-10 Markmonitor, Inc. Enhanced responses to online fraud
US7987172B1 (en) 2004-08-30 2011-07-26 Google Inc. Minimizing visibility of stale content in web searching including revising web crawl intervals of documents
US8386459B1 (en) * 2005-04-25 2013-02-26 Google Inc. Scheduling a recrawl
US8666964B1 (en) 2005-04-25 2014-03-04 Google Inc. Managing items in crawl schedule
US8312074B2 (en) * 2005-05-26 2012-11-13 Bytemobile, Inc. Method for multipart encoding
US7509315B1 (en) 2005-06-24 2009-03-24 Google Inc. Managing URLs
JP2009507268A (ja) * 2005-07-01 2009-02-19 マークモニター インコーポレイテッド 改良された不正行為監視システム
WO2007029348A1 (ja) 2005-09-06 2007-03-15 Community Engine Inc. データ抽出システム、端末装置、端末装置のプログラム、サーバ装置、及び、サーバ装置のプログラム
US7676394B2 (en) 2005-09-14 2010-03-09 Jumptap, Inc. Dynamic bidding and expected value
US20080215557A1 (en) * 2005-11-05 2008-09-04 Jorey Ramer Methods and systems of mobile query classification
US9058406B2 (en) 2005-09-14 2015-06-16 Millennial Media, Inc. Management of multiple advertising inventories using a monetization platform
US10592930B2 (en) 2005-09-14 2020-03-17 Millenial Media, LLC Syndication of a behavioral profile using a monetization platform
US9076175B2 (en) 2005-09-14 2015-07-07 Millennial Media, Inc. Mobile comparison shopping
US8238888B2 (en) 2006-09-13 2012-08-07 Jumptap, Inc. Methods and systems for mobile coupon placement
US8302030B2 (en) 2005-09-14 2012-10-30 Jumptap, Inc. Management of multiple advertising inventories using a monetization platform
US9201979B2 (en) * 2005-09-14 2015-12-01 Millennial Media, Inc. Syndication of a behavioral profile associated with an availability condition using a monetization platform
US8311888B2 (en) * 2005-09-14 2012-11-13 Jumptap, Inc. Revenue models associated with syndication of a behavioral profile using a monetization platform
US9471925B2 (en) 2005-09-14 2016-10-18 Millennial Media Llc Increasing mobile interactivity
US20080214153A1 (en) * 2005-09-14 2008-09-04 Jorey Ramer Mobile User Profile Creation based on User Browse Behaviors
US20110313853A1 (en) 2005-09-14 2011-12-22 Jorey Ramer System for targeting advertising content to a plurality of mobile communication facilities
US8131271B2 (en) 2005-11-05 2012-03-06 Jumptap, Inc. Categorization of a mobile user profile based on browse behavior
US7752209B2 (en) 2005-09-14 2010-07-06 Jumptap, Inc. Presenting sponsored content on a mobile communication facility
US20080214148A1 (en) * 2005-11-05 2008-09-04 Jorey Ramer Targeting mobile sponsored content within a social network
US8156128B2 (en) 2005-09-14 2012-04-10 Jumptap, Inc. Contextual mobile content placement on a mobile communication facility
US10038756B2 (en) 2005-09-14 2018-07-31 Millenial Media LLC Managing sponsored content based on device characteristics
US20080270220A1 (en) * 2005-11-05 2008-10-30 Jorey Ramer Embedding a nonsponsored mobile content within a sponsored mobile content
US8819659B2 (en) 2005-09-14 2014-08-26 Millennial Media, Inc. Mobile search service instant activation
US8660891B2 (en) 2005-11-01 2014-02-25 Millennial Media Interactive mobile advertisement banners
US8103545B2 (en) 2005-09-14 2012-01-24 Jumptap, Inc. Managing payment for sponsored content presented to mobile communication facilities
US8805339B2 (en) 2005-09-14 2014-08-12 Millennial Media, Inc. Categorization of a mobile user profile based on browse and viewing behavior
US20070100806A1 (en) * 2005-11-01 2007-05-03 Jorey Ramer Client libraries for mobile content
US7702318B2 (en) 2005-09-14 2010-04-20 Jumptap, Inc. Presentation of sponsored content based on mobile transaction event
US20070061246A1 (en) * 2005-09-14 2007-03-15 Jorey Ramer Mobile campaign creation
US10911894B2 (en) 2005-09-14 2021-02-02 Verizon Media Inc. Use of dynamic content generation parameters based on previous performance of those parameters
US8364540B2 (en) 2005-09-14 2013-01-29 Jumptap, Inc. Contextual targeting of content using a monetization platform
US8989718B2 (en) 2005-09-14 2015-03-24 Millennial Media, Inc. Idle screen advertising
US7769764B2 (en) * 2005-09-14 2010-08-03 Jumptap, Inc. Mobile advertisement syndication
US9703892B2 (en) 2005-09-14 2017-07-11 Millennial Media Llc Predictive text completion for a mobile communication facility
US8832100B2 (en) * 2005-09-14 2014-09-09 Millennial Media, Inc. User transaction history influenced search results
US8364521B2 (en) * 2005-09-14 2013-01-29 Jumptap, Inc. Rendering targeted advertisement on mobile communication facilities
US7912458B2 (en) 2005-09-14 2011-03-22 Jumptap, Inc. Interaction analysis and prioritization of mobile content
US7660581B2 (en) 2005-09-14 2010-02-09 Jumptap, Inc. Managing sponsored content based on usage history
US20070060173A1 (en) * 2005-09-14 2007-03-15 Jorey Ramer Managing sponsored content based on transaction history
US8195133B2 (en) 2005-09-14 2012-06-05 Jumptap, Inc. Mobile dynamic advertisement creation and placement
US20080214151A1 (en) * 2005-09-14 2008-09-04 Jorey Ramer Methods and systems for mobile coupon placement
US20090240568A1 (en) * 2005-09-14 2009-09-24 Jorey Ramer Aggregation and enrichment of behavioral profile data using a monetization platform
US20080214204A1 (en) * 2005-11-01 2008-09-04 Jorey Ramer Similarity based location mapping of mobile comm facility users
US8209344B2 (en) 2005-09-14 2012-06-26 Jumptap, Inc. Embedding sponsored content in mobile applications
US20080214154A1 (en) * 2005-11-01 2008-09-04 Jorey Ramer Associating mobile and non mobile web content
US8290810B2 (en) 2005-09-14 2012-10-16 Jumptap, Inc. Realtime surveying within mobile sponsored content
US7577665B2 (en) * 2005-09-14 2009-08-18 Jumptap, Inc. User characteristic influenced search results
US8812526B2 (en) 2005-09-14 2014-08-19 Millennial Media, Inc. Mobile content cross-inventory yield optimization
US8615719B2 (en) 2005-09-14 2013-12-24 Jumptap, Inc. Managing sponsored content for delivery to mobile communication facilities
US8229914B2 (en) * 2005-09-14 2012-07-24 Jumptap, Inc. Mobile content spidering and compatibility determination
US8515400B2 (en) 2005-09-14 2013-08-20 Jumptap, Inc. System for targeting advertising content to a plurality of mobile communication facilities
US8666376B2 (en) * 2005-09-14 2014-03-04 Millennial Media Location based mobile shopping affinity program
US8027879B2 (en) * 2005-11-05 2011-09-27 Jumptap, Inc. Exclusivity bidding for mobile sponsored content
US8688671B2 (en) 2005-09-14 2014-04-01 Millennial Media Managing sponsored content based on geographic region
US8503995B2 (en) 2005-09-14 2013-08-06 Jumptap, Inc. Mobile dynamic advertisement creation and placement
US8175585B2 (en) 2005-11-05 2012-05-08 Jumptap, Inc. System for targeting advertising content to a plurality of mobile communication facilities
US8640231B2 (en) 2006-02-23 2014-01-28 Microsoft Corporation Client side attack resistant phishing detection
US8707451B2 (en) 2006-03-01 2014-04-22 Oracle International Corporation Search hit URL modification for secure application integration
US20070214129A1 (en) * 2006-03-01 2007-09-13 Oracle International Corporation Flexible Authorization Model for Secure Search
US8214394B2 (en) 2006-03-01 2012-07-03 Oracle International Corporation Propagating user identities in a secure federated search system
US7941419B2 (en) * 2006-03-01 2011-05-10 Oracle International Corporation Suggested content with attribute parameterization
US8332430B2 (en) 2006-03-01 2012-12-11 Oracle International Corporation Secure search performance improvement
US8875249B2 (en) * 2006-03-01 2014-10-28 Oracle International Corporation Minimum lifespan credentials for crawling data repositories
US8868540B2 (en) * 2006-03-01 2014-10-21 Oracle International Corporation Method for suggesting web links and alternate terms for matching search queries
US9177124B2 (en) 2006-03-01 2015-11-03 Oracle International Corporation Flexible authentication framework
US11062267B1 (en) 2006-03-30 2021-07-13 Geographic Solutions, Inc. Automated reactive talent matching
US7941525B1 (en) 2006-04-01 2011-05-10 ClickTale, Ltd. Method and system for monitoring an activity of a user
US20080155409A1 (en) * 2006-06-19 2008-06-26 Andy Santana Internet search engine
US10223671B1 (en) * 2006-06-30 2019-03-05 Geographic Solutions, Inc. System, method and computer program products for direct applying to job applications
US7660787B2 (en) * 2006-07-19 2010-02-09 International Business Machines Corporation Customized, personalized, integrated client-side search indexing of the web
US7634458B2 (en) * 2006-07-20 2009-12-15 Microsoft Corporation Protecting non-adult privacy in content page search
US7620634B2 (en) * 2006-07-31 2009-11-17 Microsoft Corporation Ranking functions using an incrementally-updatable, modified naïve bayesian query classifier
US7996487B2 (en) 2006-08-23 2011-08-09 Oracle International Corporation Managing searches on mobile devices
US8359278B2 (en) 2006-10-25 2013-01-22 IndentityTruth, Inc. Identity protection
US8225192B2 (en) * 2006-10-31 2012-07-17 Microsoft Corporation Extensible cache-safe links to files in a web page
CN101187925B (zh) * 2006-11-17 2010-11-03 北京酷讯科技有限公司 自动优化爬虫的抓取方法
WO2008074481A2 (en) * 2006-12-19 2008-06-26 Koninklijke Kpn N.V. Data network service based on profiling client-addresses
US8275741B2 (en) * 2006-12-27 2012-09-25 Research In Motion Limited Method and apparatus for memory management in an electronic device
US10156953B2 (en) * 2006-12-27 2018-12-18 Blackberry Limited Method for presenting data on a small screen
US20080162486A1 (en) * 2006-12-27 2008-07-03 Research In Motion Limited Method and apparatus for storing data from a network address
US8099386B2 (en) * 2006-12-27 2012-01-17 Research In Motion Limited Method and apparatus for synchronizing databases connected by wireless interface
US7979458B2 (en) 2007-01-16 2011-07-12 Microsoft Corporation Associating security trimmers with documents in an enterprise search system
US7953868B2 (en) 2007-01-31 2011-05-31 International Business Machines Corporation Method and system for preventing web crawling detection
US9665543B2 (en) * 2007-03-21 2017-05-30 International Business Machines Corporation System and method for reference validation in word processor documents
US20080235163A1 (en) * 2007-03-22 2008-09-25 Srinivasan Balasubramanian System and method for online duplicate detection and elimination in a web crawler
CA2686540A1 (en) * 2007-04-10 2008-10-16 Accenture Global Services Gmbh System and method of search validation
JP4867799B2 (ja) * 2007-06-05 2012-02-01 沖電気工業株式会社 クローリング方法、そのプログラムおよび装置、エージェント装置、ネットワークシステム
US8843471B2 (en) * 2007-08-14 2014-09-23 At&T Intellectual Property I, L.P. Method and apparatus for providing traffic-based content acquisition and indexing
JP5233250B2 (ja) * 2007-11-09 2013-07-10 日本電気株式会社 サーバ装置、情報処理装置、情報処理方法およびプログラム
US8954867B2 (en) * 2008-02-26 2015-02-10 Biz360 Inc. System and method for gathering product, service, entity and/or feature opinions
US8359651B1 (en) * 2008-05-15 2013-01-22 Trend Micro Incorporated Discovering malicious locations in a public computer network
US8078974B2 (en) * 2008-06-27 2011-12-13 Microsoft Corporation Relating web page change with revisitation patterns
US8775465B2 (en) * 2008-07-30 2014-07-08 Yahoo! Inc. Automatic updating of content included in research documents
CN101650715B (zh) * 2008-08-12 2011-06-29 厦门市美亚柏科信息股份有限公司 一种筛选网页上链接的方法和装置
JP5405190B2 (ja) * 2009-01-15 2014-02-05 株式会社Nttドコモ コンテンツ管理情報収集システム、及びコンテンツ管理情報収集方法
KR20120034600A (ko) 2009-03-20 2012-04-12 에이디 밴티지 네트웍스 엘엘씨 컨텐츠를 검색, 선택 및 표시하는 방법 및 시스템
US8712992B2 (en) * 2009-03-28 2014-04-29 Microsoft Corporation Method and apparatus for web crawling
CN101515300B (zh) 2009-04-02 2011-07-20 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及系统
US10108432B1 (en) * 2009-04-16 2018-10-23 Intuit Inc. Generating a script based on user actions
US20110088100A1 (en) * 2009-10-14 2011-04-14 Serge Rutman Disabling electronic display devices
JP2011107557A (ja) * 2009-11-20 2011-06-02 Fuji Xerox Co Ltd 画像形成装置
US8666996B2 (en) * 2009-12-23 2014-03-04 Mastercard International Incorporated Methods and systems for detecting broken links within a file
US8600979B2 (en) * 2010-06-28 2013-12-03 Yahoo! Inc. Infinite browse
US9043306B2 (en) 2010-08-23 2015-05-26 Microsoft Technology Licensing, Llc Content signature notification
CN102480524B (zh) * 2010-11-26 2014-09-10 中国科学院声学研究所 一种网页爬虫协作方法
WO2012167149A1 (en) * 2011-06-01 2012-12-06 Mycomingle, Llc System and method for internet services aggregation
US8671108B2 (en) 2011-09-02 2014-03-11 Mastercard International Incorporated Methods and systems for detecting website orphan content
US20130159051A1 (en) * 2011-12-15 2013-06-20 Sybase 365, Inc. System and Method for Enhanced Information Gathering
US8577610B2 (en) 2011-12-21 2013-11-05 Telenav Inc. Navigation system with point of interest harvesting mechanism and method of operation thereof
WO2013097742A1 (zh) * 2011-12-30 2013-07-04 北京奇虎科技有限公司 识别被篡改网页以及识别被劫持网址的方法及装置
CN102594934B (zh) * 2011-12-30 2015-03-25 奇智软件(北京)有限公司 一种识别被劫持网址的方法及装置
US20130283097A1 (en) * 2012-04-23 2013-10-24 Yahoo! Inc. Dynamic network task distribution
FR2994297B1 (fr) * 2012-08-01 2015-06-19 Netwave Procede de traitement de donnees de connexion d'une plateforme d'un site internet
FR2994358B1 (fr) * 2012-08-01 2015-06-19 Netwave Systeme de traitement de donnees de connexion a une plateforme d'un site internet
FR2994296B1 (fr) * 2012-08-01 2015-06-19 Netwave Procede de traitement de donnees pour analyse situationnelle
CN102932435B (zh) * 2012-10-18 2016-06-15 北京奇虎科技有限公司 网络检测系统
CN102917053B (zh) * 2012-10-18 2016-03-30 北京奇虎科技有限公司 一种用于判断网页网址重写的方法、设备和系统
US9805018B1 (en) * 2013-03-15 2017-10-31 Steven E. Richfield Natural language processing for analyzing internet content and finding solutions to needs expressed in text
ES2709074T3 (es) * 2013-03-15 2019-04-15 Onective Ag Comparación de una lista de contactos automatizada con una mejora de la privacidad
JP6104729B2 (ja) * 2013-06-17 2017-03-29 株式会社Nttドコモ コンテンツ検索システム、コンテンツ検索方法、及びコンテンツ検索プログラム
US20150074101A1 (en) * 2013-09-10 2015-03-12 Microsoft Corporation Smart search refinement
CN105493095A (zh) * 2013-09-24 2016-04-13 迈克菲股份有限公司 用于样本提交的自适应和递归过滤
US9614869B2 (en) * 2013-11-23 2017-04-04 Universidade da Coruña—OTRI System and server for detecting web page changes
RU2634218C2 (ru) 2014-07-24 2017-10-24 Общество С Ограниченной Ответственностью "Яндекс" Способ определения последовательности просмотра веб-страниц и сервер, используемый в нем
CN104750804A (zh) * 2015-03-24 2015-07-01 南京途牛科技有限公司 一种插件式可配置的垂直领域网络爬虫实现方法
US10210255B2 (en) * 2015-12-31 2019-02-19 Fractal Industries, Inc. Distributed system for large volume deep web data extraction
AU2015401229B2 (en) * 2015-12-28 2019-01-17 Huawei Cloud Computing Technologies Co., Ltd. Website access method, apparatus, and website system
US10681182B1 (en) * 2016-04-06 2020-06-09 Uipco, Llc Multi-device work flow management method and system for managing work flow data collection for users across a diverse set of devices and processes by unifying the work process to be data and device agnostic
CN106156291A (zh) * 2016-06-29 2016-11-23 深圳市彬讯科技有限公司 基于Localstroage的静态资源的缓存方法及其系统
CN106326447B (zh) * 2016-08-26 2019-06-21 北京量科邦信息技术有限公司 一种众包网络爬虫抓取数据的检测方法及系统
US10491622B2 (en) * 2017-01-04 2019-11-26 Synack, Inc. Automatic webpage change detection
US10970354B2 (en) * 2017-07-17 2021-04-06 Songtradr, Inc. Method for processing code and increasing website and client interaction speed
CN108170843B (zh) * 2018-01-17 2019-07-12 百度在线网络技术(北京)有限公司 用于获取数据的方法和装置
KR102222287B1 (ko) 2018-05-17 2021-03-02 동서대학교 산학협력단 은닉 url에 포함된 정형 및 비정형 데이터의 수집을 위한 웹 크롤러 시스템
KR102221045B1 (ko) * 2018-08-08 2021-02-25 동명대학교산학협력단 다중 스레드 방식의 웹 크롤링 시스템
CN109284430A (zh) * 2018-09-07 2019-01-29 杭州艾塔科技有限公司 基于分布式架构的可视化主题网页内容爬取系统及方法
US11361076B2 (en) * 2018-10-26 2022-06-14 ThreatWatch Inc. Vulnerability-detection crawler
CN109740038A (zh) * 2019-01-02 2019-05-10 安徽芃睿科技有限公司 网络数据分布式采集系统及方法
US11366862B2 (en) * 2019-11-08 2022-06-21 Gap Intelligence, Inc. Automated web page accessing
CN111368164B (zh) * 2020-02-24 2023-05-09 支付宝(杭州)信息技术有限公司 一种爬虫识别模型训练、爬虫识别方法、装置、系统、设备及介质
CN111506787B (zh) * 2020-03-06 2023-04-25 百度在线网络技术(北京)有限公司 网页更新的方法、装置、电子设备和计算机可读存储介质
CN111506786B (zh) * 2020-03-06 2023-10-27 百度在线网络技术(北京)有限公司 网页更新的方法、装置、电子设备和计算机可读存储介质
CN111767442B (zh) * 2020-04-29 2023-12-26 百度在线网络技术(北京)有限公司 数据更新方法、装置、搜索服务器、终端及存储介质
KR102550868B1 (ko) 2021-01-22 2023-07-04 인하대학교 산학협력단 교원 업적 검증 시스템
US20230216913A1 (en) * 2021-12-31 2023-07-06 Tangoe Us, Inc. Robotic Process Automation For Telecom Expense Management Information Change Detection And Notification
KR102632300B1 (ko) * 2023-08-30 2024-02-01 (주)잇츠솔루션 뉴럴 네트워크를 기반으로 기업의 환경 분야와 관련된 정보를 관리하는 방법 및 시스템

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185040A (en) * 1988-12-19 1993-02-09 Murata Manufacturing Co., Ltd. Apparatus for forming electrode on electronic component
GB2257386B (en) * 1991-06-24 1995-07-05 Tani Denki Kogyo Kk Screen printing apparatus
US5786701A (en) * 1993-07-02 1998-07-28 Mitel Semiconductor Limited Bare die testing
NL9301820A (nl) * 1993-10-20 1995-05-16 Stork Screens Bv Rakelsamenstel.
US5492266A (en) * 1994-08-31 1996-02-20 International Business Machines Corporation Fine pitch solder deposits on printed circuit board process and product
US6286422B1 (en) * 1994-12-27 2001-09-11 Visteon Global Tech., Inc. Method and apparatus for dispensing viscous material
US5868302A (en) * 1995-09-06 1999-02-09 Matsushita Electric Industrial Co., Ltd. Method and apparatus for mounting electronic component
US5925187A (en) * 1996-02-08 1999-07-20 Speedline Technologies, Inc. Apparatus for dispensing flowable material
US5935210A (en) 1996-11-27 1999-08-10 Microsoft Corporation Mapping the structure of a collection of computer resources
JP2000507791A (ja) 1996-12-16 2000-06-20 サムスン エレクトロニクス カンパニー リミテッド ローカルネットワークにおける電子メールメッセージの送信方法及び装置
US5909634A (en) * 1996-12-20 1999-06-01 Texas Instruments Method and apparatus for forming solder on a substrate
US6631402B1 (en) * 1997-09-26 2003-10-07 Worldcom, Inc. Integrated proxy interface for web based report requester tool set
US6421675B1 (en) 1998-03-16 2002-07-16 S. L. I. Systems, Inc. Search engine
US6638314B1 (en) 1998-06-26 2003-10-28 Microsoft Corporation Method of web crawling utilizing crawl numbers
US6199081B1 (en) 1998-06-30 2001-03-06 Microsoft Corporation Automatic tagging of documents and exclusion by content
JP2000168045A (ja) * 1998-12-02 2000-06-20 Fuji Mach Mfg Co Ltd スクリーン印刷用スキージおよびスクリーン印刷方法
US6547829B1 (en) 1999-06-30 2003-04-15 Microsoft Corporation Method and system for detecting duplicate documents in web crawls
US6434548B1 (en) 1999-12-07 2002-08-13 International Business Machines Corporation Distributed metadata searching system and method
AU4712601A (en) * 1999-12-08 2001-07-03 Amazon.Com, Inc. System and method for locating and displaying web-based product offerings
US6785671B1 (en) * 1999-12-08 2004-08-31 Amazon.Com, Inc. System and method for locating web-based product offerings
US6883135B1 (en) 2000-01-28 2005-04-19 Microsoft Corporation Proxy server using a statistical model
US6687696B2 (en) * 2000-07-26 2004-02-03 Recommind Inc. System and method for personalized search, information filtering, and for generating recommendations utilizing statistical latent class models
JP2002140257A (ja) * 2000-10-31 2002-05-17 Nippon Telegr & Teleph Corp <Ntt> コンテンツ判定方法
US7028039B2 (en) 2001-01-18 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for storing connectivity information in a web database
JP2002312284A (ja) * 2001-04-10 2002-10-25 Clover Network Com:Kk ホームページ改竄検知装置及び改竄検知プログラム
US6950821B2 (en) 2001-05-04 2005-09-27 Sun Microsystems, Inc. System and method for resolving distributed network search queries to information providers
US20040240388A1 (en) * 2003-05-28 2004-12-02 Lee Albion System and method for dynamic assignment of timers in a network transport engine
US20050027670A1 (en) * 2003-07-30 2005-02-03 Petropoulos Jack G. Ranking search results using conversion data

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100705413B1 (ko) * 2005-08-19 2007-04-10 엔에이치엔(주) 웹 페이지 지정 크롤링 가능한 웹 서버 기반의 데스크톱검색 시스템 및 방법
WO2015122620A1 (ko) * 2014-02-14 2015-08-20 (주)엠더블유스토리 디지털콘텐츠의 무결성 보장을 위한 디지털 콘텐츠 모니터링 시스템
KR20210098542A (ko) * 2020-04-29 2021-08-10 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 데이터 업데이트 방법, 장치, 검색 서버, 단말 및 저장매체
US11803597B2 (en) 2020-04-29 2023-10-31 Baidu Online Network Technology (Beijing) Co., Ltd. Data updating method, apparatus, search server, terminal and storage medium

Also Published As

Publication number Publication date
RU2383920C2 (ru) 2010-03-10
AU2004205329A1 (en) 2005-04-14
MY146316A (en) 2012-07-31
CA2478358A1 (en) 2005-03-25
CN1601528A (zh) 2005-03-30
TW200516466A (en) 2005-05-16
EP1519281A3 (en) 2005-04-20
KR101153138B1 (ko) 2012-06-04
AU2004205329B2 (en) 2010-08-26
MY143875A (en) 2011-07-15
US20050071766A1 (en) 2005-03-31
TWI367428B (en) 2012-07-01
JP2005135381A (ja) 2005-05-26
US7685296B2 (en) 2010-03-23
BRPI0403803A (pt) 2005-05-24
EP1519281A2 (en) 2005-03-30
ZA200407180B (en) 2005-07-29
RU2004125187A (ru) 2006-02-20
JP4668567B2 (ja) 2011-04-13
CN1601528B (zh) 2011-04-13

Similar Documents

Publication Publication Date Title
KR101153138B1 (ko) 클라이언트 기반 웹 크롤링 시스템 및 방법
US8229930B2 (en) URL reputation system
Bonchi et al. Web log data warehousing and mining for intelligent web caching
US8595847B2 (en) Systems and methods to control web scraping
KR100781725B1 (ko) 피어 투 피어 인가를 위한 방법 및 시스템
CN109933701B (zh) 一种基于多策略融合的微博数据获取方法
US7779073B2 (en) Computer network
US20070244857A1 (en) Generating an index for a network search engine
CN108206802A (zh) 检测网页后门的方法和装置
TW201824047A (zh) 攻擊請求的確定方法、裝置及伺服器
CN104125209A (zh) 恶意网址提示方法和路由器
JP2005278176A (ja) ネットワークトラフィックの評価及び管理
CN102968591B (zh) 基于行为片段共享的恶意软件特征聚类分析方法及系统
US20080021903A1 (en) Protecting non-adult privacy in content page search
CN108429785A (zh) 一种爬虫识别加密串的生成方法、爬虫识别方法及装置
US20050086213A1 (en) Server apparatus, information providing method and program product therefor
Sethi An optimized crawling technique for maintaining fresh repositories
WO2016173327A1 (zh) 用于检测网站攻击的方法和设备
Liu et al. WRT: Constructing Users' Web Request Trees from HTTP Header Logs
US20110208717A1 (en) Chaffing search engines to obscure user activity and interests
US20200153811A1 (en) Deterministic reproduction of system state using seeded pseudo-random number generators
CN117914621A (zh) 一种基于加密数据的用户行为确定方法、介质及设备
Lee Pre-fetch document caching to improve World-Wide Web user response time
CN117938533A (en) Abnormal traffic identification method, medium and device based on single access destination IP
Kothapalli Measurement, Analysis, and System Implementation of Internet Proxy Servers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee