KR20160135810A - 웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템 - Google Patents

웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템 Download PDF

Info

Publication number
KR20160135810A
KR20160135810A KR1020167029351A KR20167029351A KR20160135810A KR 20160135810 A KR20160135810 A KR 20160135810A KR 1020167029351 A KR1020167029351 A KR 1020167029351A KR 20167029351 A KR20167029351 A KR 20167029351A KR 20160135810 A KR20160135810 A KR 20160135810A
Authority
KR
South Korea
Prior art keywords
content
web
key
browser
extension
Prior art date
Application number
KR1020167029351A
Other languages
English (en)
Other versions
KR101959428B1 (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 KR20160135810A publication Critical patent/KR20160135810A/ko
Application granted granted Critical
Publication of KR101959428B1 publication Critical patent/KR101959428B1/ko

Links

Images

Classifications

    • G06F17/30861
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

방법 및 시스템은 웹 퍼블리셔(web publisher)와 연관된 컴퓨팅 디바이스의 마이크로프로세서를 사용하여, 웹 페이지를 포함하는 콘텐츠를 제공한다. 그 방법은, 웹 퍼블리셔에 의해서, 제 2 컴퓨팅 디바이스에서 콘텐츠를 렌더링하는(rendering) 웹 브라우저와 연관된 적어도 하나의 확장을 포함하는 리스트 및 콘텐츠에 기초하여 생성되는 키에 액세스하는 단계를 포함하고, 키는 그 제공 이후의 특정 시간에 생성된다. 그 방법은 키와 예상 값 간의 차이를 결정하기 위해서 키와 연관된 값을 예상 값에 비교하는 단계를 포함한다.

Description

웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템{SYSTEM FOR MANAGING EXTENSION MODIFICATIONS TO WEB PAGES}
[0001] 본 출원은, 2014년 3월 26일에 “SYSTEM FOR MANAGING EXTENSION MODIFICATIONS TO WEB PAGES”이란 명칭으로 출원된 미국 가특허 출원 번호 제 14/226,013호에 대한 우선권을 청구하고, 그 미국 가특허 출원의 연속 출원이며, 그 미국 가특허 출원의 개시내용은 그 전체가 본원에서 인용에 의해 통합된다.
[0002] 본 출원은 일반적으로 웹 기술에 관한 것이고, 더 상세하게는, 웹 브라우저 확장들 및 웹 페이지들에 관한 것이다.
[0003] 웹-가능 컴퓨팅 디바이스 상에 구현되는 웹 브라우저들은 사용자로 하여금 모든 종류들의 콘텐츠를 액세스하게 허용한다. 웹 브라우저들은 프로그래매틱 코드(programmatic code)를 판독하고 그 코드를 웹 페이지들로서 렌더링하도록 구성되는데, 그러한 렌더링은 다양한 미디어 파일들(예컨대, 이미지, 비디오, 및 오디오 파일들)에 포함된 청각 및 시각 콘텐츠 둘 모두를 렌더링하는 것뿐만 아니라 그 프로그래매틱 코드에 정의된 다른 기능들을 수행하는 것을 포함할 수 있다. 웹 페이지들은 일반적으로 다수의 다른 이용가능한 프로그래밍 언어들 중에서도 (HTML5를 비롯한)HTML, CSS 및 JavaScript와 같은 프로그래밍 언어들을 사용하여 구현된다.
[0004] 일부 브라우저들은 사용자들로 하여금 브라우저에 add-on들 또는 확장들을 설치하게 허용하는데, 그러한 확장들은 브라우저에 기능을 추가하고 그 브라우저의 통합된 부분으로서 동작한다. 브라우저 확장들은 웹 페이지들을 구현하기 위해 사용되는 동일한 프로그래밍 언어들, 이를테면 JavaScript를 사용하여 기록되는 프로그래매틱 코드를 사용하여 구현될 수 있다. 브라우저의 관점에서, 일단 확장들이 설치되면, 그 확장들은 브라우저의 통합된 부분인 웹 페이지들로서 효과적으로 기능한다. 그 또는 그녀가 관심을 갖는 확장들을 설치함으로써, 사용자는 그들이 설치하기로 선정한 확장들의 기능을 포함하는 커스텀 브라우저 경험을 효과적으로 생성할 수 있다.
[0005] 현재의 인터넷 시스템들에서는, 의도된 콘텐츠 전달의 무결성, 보안성 및 신뢰성을 보장하는 것이 난제이다. 퍼블리셔 웹사이트들은 책무성, 예측가능성 및 신뢰적인 콘텐츠 전달의 레벨을 가변적인 성공도들(degrees of success)을 통해 설정하려 시도하였다. 그러나, 제 3자 브라우저 확장들은, 사용자들에게 불명확할 수 있고 잠재적으로는 관련되는 모든 관계자들에게 손해를 주는 방식들로 이러한 신뢰적인 관계를 침해하는 능력을 갖는다. 오늘날, 많은 브라우저들은 브라우저, 컴퓨터 시스템 또는 콘텐츠를 수정하거나 그와 상호작용할 수 있는 확장들의 생성 및 설치를 허용하는데, 일부 경우들에 있어서는 콘텐츠를 수정하는 것이 소정의 관계자들, 이를테면 광고 블로커들(blockers), 광고 주입자들(injectors), 또는 다양한 멀웨어(malware)에 의해서 허용되지도 또는 요구되지도 않는 방식들이다.
[0006] 이러한 제 3자 확장들은 웹 퍼블리셔와 사용자 간의 직접적인 관계들을 변경하는데, 그 관계들은 만약 올바른 제어들을 통해 제공된다면 그 두 측들에 대한 긍정적인 영향을 가질 수 있다. 그러나, 만약 적소에서 어떤 제어들도 이루어지지 않는다면, 많은 퍼블리셔들 및 콘텐츠 제공자들은 오픈 인터넷으로부터 클로즈드 애플리케이션들 또는 페이월들(paywalls) 뒤로 물러설 수 있어서, 사용자들이 유용 콘텐츠를 찾아서 즐기는 것을 더욱 어렵게 만든다. 웹 퍼블리셔들의 콘텐츠가 웹 퍼블리셔들의 사용 조건들의 조항들(terms)에 부합하여 전달되고 있는지 여부를 그 웹 퍼블리셔들이 아는 것은 어렵다. 더욱이, 제 3자 확장들이 콘텐츠를 수정할 수 있을 경우에 사용자들에게 제공되고 그 콘텐츠, 성능 또는 기능을 웹 퍼블리셔들이 제어하는 것은 어렵다.
[0007] 하나의 일반적인 양상에 따라, 방법은 웹 퍼블리셔와 연관된 컴퓨팅 디바이스의 마이크로프로세서를 사용하여, 웹 페이지를 포함하는 콘텐츠를 제공하는 단계를 포함한다. 그 방법은, 웹 퍼블리셔에 의해서, 제 2 컴퓨팅 디바이스에서 콘텐츠를 렌더링하는(rendering) 웹 브라우저와 연관된 적어도 하나의 확장을 포함하는 리스트 및 콘텐츠에 기초하여 생성되는 키에 액세스하는 단계를 포함하고, 키는 그 제공 이후의 특정 시간에 생성된다. 그 방법은 키와 예상 값 간의 차이를 결정하기 위해서 키와 연관된 값을 예상 값에 비교하는 단계를 포함한다.
[0008] 구현들은 다음의 특징들 중 하나 또는 그 초과, 단지 하나의 특징 또는 특징들 서로의 조합을 포함할 수 있다. 그 방법은, 그 비교에 기초하여, 콘텐츠를 수정한 특정 확장을 적어도 하나의 확장의 리스트로부터 결정하는 단계를 포함할 수 있다. 그 결정 단계는 복수의 상이한 브라우저들로부터의 복수의 키들의 예상 값에 대한 반복적 비교들을 사용하여, 웹 퍼블리셔와 연관된 컴퓨팅 디바이스의 마이크로프로세서에 의해서 수행될 수 있다. 그 리스트는 웹 브라우저에 설치된 모든 확장들을 포함할 수 있다. 그 방법은 웹 퍼블리셔에 의해서 식별되는 특정 시간에 웹 브라우저 상에서 렌더링되고 있는 콘텐츠를 잠금하는 단계를 포함할 수 있다. 그 잠금 단계는 웹 브라우저에 의해서 수행될 수 있다. 그 방법은 웹 브라우저를 사용하여 키를 생성하는 단계를 포함할 수 있다. 그 방법은 콘텐츠의 체크섬(checksum)을 사용하여 키를 생성하는 단계를 포함할 수 있다. 그 방법은 트레이스(trace)를 사용하여 키를 생성하는 단계를 포함할 수 있다. 그 방법은 웹 페이지의 문서 객체 모델(document object model)의 텍스트 파일 버전에 기초하여 키를 생성하는 단계를 포함할 수 있다. 그 방법은 키를 사용하여 콘텐츠를 재생성하는 단계를 포함할 수 있다. 특정 확장이 콘텐츠가 웹 브라우저를 사용하여 렌더링되고 있었을 때 그 콘텐츠를 수정할 수 있다.
[0009] 다른 구현들은 컴퓨터 저장 디바이스들에 인코딩되는, 방법들의 액션들을 수행하도록 구성된 대응하는 컴퓨터 프로그램들, 장치 및 시스템들을 포함한다.
[0010] 본원에서 설명된 청구대상의 구현들 중 하나 또는 그 초과는 다음의 장점들 중 하나 또는 그 초과를 제공할 수 있다. 웹 퍼블리셔들은 사용자들에게 제공되고 있는 콘텐츠, 성능 또는 기능을 결정하고 제어할 수 있다. 하나 또는 그 초과의 구현들에 대한 세부사항들이 아래의 설명 및 첨부 도면들에서 기술된다. 다른 특징들이 설명 및 도면들로부터 그리고 청구항들로부터 자명할 것이다.
[0011] 도 1은 브라우저 확장들을 구현하는 예시적인 시스템을 예시하는 블록 다이어그램이다.
[0012] 도 2는 웹 브라우저에서 브라우저 확장의 예에 대한 블록 다이어그램이다.
[0013] 도 3은 브라우저 확장들의 예시적인 분류들 및 동작들에 대한 블록도 다이어그램이다.
[0014] 도 4는 웹 브라우저의 예시적인 사용자 인터페이스에 대한 다이어그램이다.
[0015] 도 5는 예시적인 구현에 따른, 콘텐츠에 대해 수정들을 수행한 브라우저 확장들을 검출하기 위한 프로세스를 예시하는 흐름도이다.
[0016] 도 6은 예시적인 구현에 따른, 콘텐츠에 대해 수정들을 수행한 브라우저 확장들을 검출하기 위한 다른 프로세스를 예시하는 흐름도이다.
[0017] 도 7은 예시적인 실시예에 따른, 본원에서 설명된 기술들을 구현하기 위해 사용될 수 있는 컴퓨팅 디바이스 및 모바일 컴퓨팅 디바이스를 예시하는 다이어그램이다.
[0018] 다양한 도면들에서 유사한 참조 심볼들은 유사한 엘리먼트들을 표시한다.
[0019] 다양한 예들에 있어서, 웹 브라우저는 하나 또는 그 초과의 브라우저 확장들을 포함하거나 그들과 상호작용하도록 구성될 수 있다. 이와 관련해서, "브라우저 확장"은 정의가능한 전체로서 함께 그룹화되거나 패키징되고 그리고 웹 브라우저에 대한 기능을 확장하도록 구성되는 하나 또는 그 초과의 웹 페이지들을 포함할 수 있다. 본원에서 사용되는 바와 같이, "브라우저 확장들"은 웹 브라우저의 기능을 수정하고 개선할 수 있는 작은 소프트웨어 프로그램들이다. 그것들은 HTML, JavaScript 및 CSS와 같은 웹 기술들을 사용하여 기록될 수 있다. 확장들은 사용자 인터페이스를 거의 갖지 않거나 전혀 갖지 않을 수 있다. 일부 구현들에 있어서, 확장들은 브라우저의 "크롬(crome)"을 수정할 수 있는 작은 사용자 인터페이스 아이콘 또는 다른 사용자 인터페이스를 제공할 수 있는데, 이것은 브라우저에 디스플레이되는 웹 페이지 밖의 영역(이를테면, 윈도우 프레임들, 메뉴들, 툴바들 및 스크롤 바들을 포함하는 웹 브라우저 윈도우의 경계들)을 포함하도록 본원에서 정의된다. 아이콘 또는 다른 사용자 인터페이스를 선택하는 것은 브라우저 내에서 확장의 기능을 활성화시킬 수 있다.
[0020] 확장들은 예컨대 광고들을 차단하기 위해서 웹 페이지들을 수정할 수 있다. 일부 경우들에서, 악성 확장들은 웹 퍼블리셔의 의도와는 반대로 웹 페이지들에 콘텐츠, 불법 활성, 또는 광고들을 주입할 수 있고, 따라서 웹 퍼블리셔의 브랜드에 손해를 준다. 본원에서 지칭되는 웹 퍼블리셔는 웹 페이지와 연관된 콘텐츠 제공자, 이를테면 예들로서 온라인 신문 또는 온라인 매장을 의미한다.
[0021] 그러므로, 일부 경우들에 있어서, 웹사이트들을 방문하는 사용자들은 신뢰적인 웹 퍼블리셔의 시스템으로부터 오는 것을 보이는 콘텐츠(기사들, 텍스트, 이미지들, 비디오들, 링크들, 광고들 등)을 가질 수 있지만, 실제로, 콘텐츠는 사용자 또는 웹 퍼블리셔가 인지하지 못한 채 제 3자 콘텐츠에 의해 대체되었다. 일부 경우들에서, 광고주들은 또한 실제로 확인되지 않는 광고들에 대해서 책임을 져야 할 경우에 수익이 손실될 수 있다. 예컨대, 확장들은 광고들을 제거 또는 대체할 수 있거나, 웹 페이지 상에서 엘리먼트들의 순서를 수정할 수 있다. 광고들을 주입하고 있는 확장들은 웹 퍼블리셔의 콘텐츠를 희생하면서 좋은 위치들에 그들의 광고들이 보이도록 보장하기 위해서 페이지 상의 엘리먼트들을 셔플링(shuffle)할 수 있다.
[0022] 본원에서 설명되는 시스템들 및 방법들은 웹 퍼블리셔들이 웹 퍼블리셔에 의해 제공되는 웹 페이지들 상에서 확장 작용들의 관리를 가능하게 하는 방법을 제공한다.
[0023] 도 1은 브라우저 확장들을 구현하는 예시적인 시스템의 블록 다이어그램이다. 도 1의 예에 있어서, 로컬 컴퓨팅 디바이스(102)는, 원격 웹 퍼블리셔(104)에 저장되어 있는 페이지(110)를 포함하는 브라우저 윈도우(108)를 디스플레이(106)를 사용하여 제공하기 위해서, 그 원격 웹 퍼블리셔(104)와 통신하는 것으로 예시된다. 웹 퍼블리셔(104)는 예컨대 서버와 같은 컴퓨팅 디바이스일 수 있다.
[0024] 로컬 컴퓨팅 디바이스(102)는, 브라우저 애플리케이션(112)을 실행하고 웹 퍼블리셔(104)와 통신하도록 구성될 수 있는 임의의 컴퓨팅 디바이스를 가상으로 나타낼 수 있다. 예컨대, 로컬 컴퓨팅 디바이스(102)는 표준 데스크톱 또는 개인용 컴퓨팅 디바이스, 랩톱, 노트북, 또는 넷북 컴퓨터, 테블릿 컴퓨터, 또는 스마트폰, 텔레비전, 또는 다른 모바일 컴퓨팅 디바이스를 포함할 수 있다. 그러한 컴퓨팅 디바이스들, 및 다른 컴퓨팅 디바이스들은 다양한 방식들로 하나 또는 그 초과의 컴퓨터 네트워크들, 이를테면 공용 인터넷, 개인용 인트라넷 또는 다른 네트워크를 통해 웹 퍼블리셔(104)에 액세스하도로 구성될 수 있고, 그로 인해서 그 웹 퍼블리셔(104)에 액세스한다. 그 결과, 디스플레이(106)가 임의의 타입의 디스플레이, 예컨대 모니터, 터치-스크린 또는 임의의 다른 타입의 가시적 또는 청각적 디스플레이를 가상으로 나타내는 것으로 이해될 수 있다.
[0025] 후속하는 예들에 있어서는, 로컬 컴퓨팅 디바이스(102) 및 브라우저 애플리케이션(112)이, 통상적으로 예컨대 웹 퍼블리셔(104)에 의해서 표현되는 웹 서버로부터의 페이지(110)를 식별하고, 액세스하며 렌더링하기 위한 프로토콜들을 사용하여, 인터넷을 통해 웹 퍼블리셔(104)와 통신한다는 것이 일반적으로 가정된다. 그러나, 그러한 예들은 단순히 명확성 및 간결성을 위해 제공되고, 위에서 방금 참조된 바와 같이, 로컬 컴퓨팅 디바이스(102)가 브라우저 애플리케이션(112) 및 브라우저 윈도우(108)와 연관하여 콘텐츠를 획득하거나 프로세싱하거나 제공하는 다양한 방식들을 제한하는 것으로 의도되지 않는다는 것이 인지될 것이다.
[0026] 따라서, 방금 참조된 예들의 타입들에서는, 페이지(110)가 공용 인터넷을 통해 이용가능한 많은 타입들의 웹 페이지들 중 임의의 웹 페이지를 나타낸다는 것이 일반적으로 가정될 수 있다. 예컨대, 간단한 시나리오에 있어서, 페이지(110)는, 로컬 컴퓨팅 디바이스(102)의 사용자에 의해서 요구될 수 있고 브라우저 윈도우(108) 내에서 디스플레이될 수 있는 텍스트, 사운드, 이미지들, 광고들 또는 다른 콘텐츠를 포함하는 실질적으로 정적인 페이지를 나타낼 수 있다. 다른 예들에 있어서, 페이지(110)는 브라우저 윈도우(108)의 맥락 내에서 사용자에 의해 종종 조작될 수 있는 많은 타입들의 동적 또는 상호작용 콘텐츠를 포함할 수 있다. 많은 시나리오들에 있어서, 페이지(110) 및/또는 연관된 실행가능 코드는 웹 퍼블리셔(104)에서 부분적으로 또는 완전히 실행할 수 있는(예컨대, 웹 퍼블리셔(104)의 프로세서, 메모리 및 다른 하드웨어/소프트웨어 자원들을 활용할 수 있음) 동시에 브라우저 윈도우(108)를 통해 사용자에게 연관된 기능 및 특징들을 제공하는(그리고 어쩌면 로컬적으로는 로컬 컴퓨팅 디바이스(102)에서 적어도 부분적으로 실행하는) 애플리케이션을 나타내는 것으로 이해될 수 있다. 방금 참조된 바와 같이, 그러한 웹 페이지들과, 연관된 기능들 및 애플리케이션들은 다양한 종래의 프로그래밍 언어들 및 기술들, 이를테면 예컨대 HTML(hypertext markup language), AJAX(Asynchronous JavaScriptTM), XML(eXtensible Markup Language), JavaScriptTM, JSON(JavaScript object notation), 및 실행될 수 있는 많은 다른 타입들의 코드를 사용하여 구현가능하다.
[0027] 도 1의 예에서, 웹 퍼블리셔(104)에서의 콘텐츠(96)는 페이지 모델(114)을 포함하거나 또는 그와 연관되는 것으로 예시되는 페이지(110)를 포함한다. 일반적으로 말해서, 페이지 모델(114)은 페이지(110)가 기록되는 프로그래밍 언어에 대해서 그 페이지(110)의 구조, 콘텐츠 및 출현을 정의하는 데이터 구조를 제공한다.
[0028] 본원에서 설명된 특정 예들에 있어서, 페이지 모델(114)은 DOM(document object model) 데이터 구조를 나타낼 수 있다. 그러한 DOM은, 방금 참조된 바와 같이, 자신이 페이지(110)의 소스 코드(예컨대, HTML)를 나타내는 데이터 구조(통상, 트리(tree)-유형 데이터 구조)를 나타낸다.
[0029] 웹 퍼블리셔(104)는 로컬 컴퓨팅 디바이스(102)와 같은 다른 컴퓨터들에 콘텐츠(96)를 제공할 수 있는 콘텐츠 관리자(98)를 또한 포함할 수 있다. 일부 구현들에 있어서, 콘텐츠 관리자(98)는, 웹 퍼블리셔(104)가 브라우저 또는 애플리케이션 환경과 교환할 수 있는 규칙들(111)을 정의하기 위해 또한 사용될 수 있다. 콘텐츠 관리자(98) 및 규칙들(111)을 사용하여, 웹 퍼블리셔(104)는 확장들 또는 다른 애플리케이션들에 대한 허가들 또는 권리들을 실시간으로 적용, 제어, 모니터링, 감사(audit), 제공 또는 보류할 수 있다. 일 예로서, 온라인 신문은 그것이 사용자에게 제공되기 이전에 어떤 확장들이 콘텐츠에 대해 제어할 수 있는지에 기초하여 그것이 어떤 콘텐츠(96)를 제공할지를 수정하거나 또는 보류할 수 있다. 일부 구현들에 있어서, 아래에서 더 상세히 논의되는 바와 같이, 웹 퍼블리셔는 소정의 확장-기반 수정들 웹 페이지와의 상호작용들에 대한 감사가능 기록에 액세스할 수 있는데, 그 기록은 요금정산(accounting) 또는 다른 목적들을 위해 사용될 수 있다. 감사가능 기록은 예컨대 데이터 세트(94)로서 데이터 저장부에 저장될 수 있다. 데이터 세트(94)는 도 6에 대해 아래에서 더 상세히 논의되는 바와 같이, 콘텐츠(96)에 대한 수정들을 나타내는 값들과 같은 다른 값들을 또한 저장할 수 있다. 다양한 구현들에 있어서, 데이터 세트(94)는 웹 퍼블리셔(104)로부터 원격으로 저장될 수 있고, 웹 퍼블리셔는 예컨대 도 1에 도시된 바와 같은 프로세서(92)를 사용하여 필요시에 따라 데이터 세트(94)에 액세스할 수 있다. 프로세서(92)는 도 7에 대해 더 상세히 설명되는 바와 같은 마이크로프로세서일 수 있다. 규칙들(111)이 또한 데이터베이스 또는 다른 데이터 저장부에 저장될 수 있다. 일부 경우들에 있어서, 규칙들(111)은 웹 퍼블리셔(104)로부터 원격으로 저장될 수 있고, 웹 퍼블리셔는 예컨대 프로세서(92)를 사용하여 필요시에 따라 규칙들(111)에 액세스할 수 있다.
[0030] 예들로서, 규칙들(111)은 확장 작용의 관리를 가능하게 하기 위해 규칙들을 포함할 수 있다. 예시적인 규칙은 브라우저 확장으로 하여금 페이지를 리포맷하거나, 상이한 종류들의 정보가 렌더링되는 것을 보류하거나, 또는 페이지에 의해서 본래 제공되는 것과 상이한 순서로 사용자에게 정보를 디스플레이하게 허용할 수 있다. 다른 예시적인 규칙은 어떤 제 3자 파트너들이 페이지 상에서 동작하도록 허용되는지를 제어할 수 있다. 다른 예시적인 규칙은 확장으로 하여금 페이지의 엘리먼트들에 대한 변경들 또는 대체들을 선택하게 허용할 수 있다. 변경들 또는 대체들은 도메인마다, 사이트마다, 페이지마다, 기사마다, 또는 다른 방식들로 정의될 수 있다. 또 다른 예로서, 규칙은 어떤 콘텐츠가 다른 퍼블리셔들과 공동-전달될 수 있는지를 정의하기 위한 방식을 다수의 웹 퍼블리셔들에 제공할 수 있다. 이를테면, 온라인 신문 및 온라인 매거진은 온라인 신문으로부터의 뉴스 섹션으로 하여금 온라인 매거진의 헐리우드(Hollywood) 섹션과 함께 전달될 수 있게 하기 위해서 협력할 수 있다.
[0031] 본원에서 설명된 바와 같이, 브라우저 확장들은 브라우저 애플리케이션(112)과 연관하여 그리고 그에 따라 브라우저 윈도우(108)에 대해 추가적인 특징들 또는 기능들을 제공하기 위해 시스템(100)에서 활용될 수 있다. 확장들의 기능은 네트워크 트래픽을 관측 및 수정하는 것 및 페이지(110)의 페이지 모델(114)을 수정하는 것을 포함하지만 이들로 제한되지는 않는다. 다른 기능은 사용자와 상호작용하는 것과, 버튼들 및 다른 사용자 인터페이스 엘리먼트들을 브라우저에 추가하는 것 및 사용자와의 그들의 상호작용을 핸들링하는 것을 포함할 수 있다.
[0032] 위의 설명으로부터 이해될 수 있는 바와 같이, 확장 파일들(122)에 의해 정의되는 확장들은 브라우저 확장들, add-on들, 플러그-인들, 웹 애플리케이션들(웹 앱들), 또는 브라우저 윈도우(108) 또는 페이지(110)를 제공하는데 있어 브라우저 애플리케이션(112)의 출현 또는 기능을 증강시키도록 설계되는 임의의 다른 프로그램 코드를 일반적으로 지칭할 수 있다. 확장 파일들(122)은 특히 웹 페이지(110)에 관련된 네트워크 요청들에 대한 수정들, 이를테면 개별 자원들에 대한 요청들을 취소하는 것, 웹 페이지(110) 또는 참조된 자원들에 대한 요청을 리다이렉팅(redirecting)는 것, 웹 페이지(110)에 관련된 웹 요청들의 요청 및 응답 헤더들을 수정하는 것, 또는 웹 페이지(110)를 리트리브하도록 인증 정보를 기부하는 것을 수행할 수 있다. 예컨대, 확장들은 일부 경우들에서 페이지(110)의 ad 콘텐츠(121)를 다른 ad 콘텐츠로 대체할 수 있거나, 또는 ad 콘텐츠(121)의 출현 또는 디스플레이를 차단할 수 있다. ad 콘텐츠(121)는 디스플레이하기 위해서 웹 퍼블리셔에게 요금이 지불되어진 콘텐츠이다. 만약 예컨대 ad 콘텐츠(121)가 강탈 확장에 의해서 다른 콘텐츠로 대체된다면, 광고주들은 더 이상은 웹 퍼블리셔를 통해 광고하기를 원하지 않을 것이거나, 또는 웹 퍼블리셔에 대한 수익이 감소된 ad 시청들에 기초하여 감소할 수 있다.
[0033] 도 1의 시스템(100)의 간략한 예에 있어서, 확장 파일들(122)은 로컬 컴퓨팅 디바이스(102)에 로컬적으로 저장되는 것으로서 예시된다. 예컨대, 로컬 컴퓨팅 디바이스(102)의 사용자는 브라우저 애플리케이션(112)에 의해서 사용할 확장 파일들(122)을 프로그래밍 및 저장할 수 있다. 그러나, 추가적인 또는 대안적인 예들에 있어서는, 확장 파일들(122) 중 일부 또는 모두가 원격으로 액세스될 수 있다는 것이 인지될 수 있다. 예컨대, 많은 경우들에 있어서, 특정 확장은 브라우저 애플리케이션(112)에 의해서 다음에 액세스될 수 있는 단일 폴더 또는 보관소 내에 패키징될 수 있다. 예컨대, 확장 파일들(122)의 제공자 및/또는 배포자(도 1의 예에서는 상세히 예시되지 않았음)는 확장 파일들(122)을 구성하고 패키징할 수 있고, 그로 인해 시스템(100)의 사용자는 도시된 바와 같이 로컬 컴퓨팅 디바이스(102)에서 확장 파일들(122)을 액세스하는 것, 다운로딩하는 것, 및 설치하는 것을 비롯해 원하는 확장을 다운로딩하여 설치할 수 있다.
[0034] 브라우저 애플리케이션(112)은 브라우저 윈도우(108)에서 사용자에게 디스플레이될 수 있는 정보로 페이지(110)의 페이지 모델(114)을 변환하기 위해 사용되는 렌더링 엔진(126)을 포함할 수 있다. 렌더링 엔진(126)은 프레임워크(144)에 의해서 정의되는 메타 태그들을 분석하기 위해 사용되는 검증 엔진(140)을 포함할 수 있다. 검증 엔진(140)은 퍼블리셔에 의해 정의된 메타 태그들에 따라 페이지(110)와 인터페이싱하거나 이를 수정할 권리들을 적합한 확장들에 승인할 수 있다. 검증 엔진(140)은 이러한 액션들을 실시간으로 수행할 수 있다. 검증 엔진(140)은 퍼블리셔에 의해 정의된 메타 태그들에 따라 페이지(110)와 인터페이싱하거나 이를 수정할 특권을 소정의 확장들로부터 취소할 수 있다. 일부 구현들에 있어서, 검증 엔진(140)은 웹 퍼블리셔(104)와 연관된 계약 조항들을 확장 소유자에게 제시할 수 있고, 확장 소유자가 제안된 계약 조항들을 수락할 때, 검증 엔진(140)은 비준된 협정 조항들에 따라 페이지(110)를 인터페이싱하거나 수정할 특권을 그 확장에 승인할 수 있다. 일부 구현들에 있어서, 검증 엔진(140)은, 예들로서, 프로그램에 따라서 서버(170)와 같은 서버에서 트랜잭션을 로깅(log)하고, 확장 소유자에게 요금청구하고, 그리고 적합한 간격들로 퍼블리셔들을 보상할 수 있다.
[0035] 브라우저 애플리케이션(112)은 확장들을 설치하고, 로딩하고 실행하는 것을 책임질 수 있는 확장 관리자(128)를 포함할 수 있다. 그것은 확장들(122)과 렌더링 엔진(126) 간의 통신을 핸들링하는 것을 책임질 수 있다. 이로써, 그것은 소정의 확장들(122)에 대한 이벤트들을 발송하고, 웹 요청들에 대한 그들의 의도된 수정들을 수집하고, 그것들을 검증 엔진(140)에 송신하고, 결과들을 네트워크 스택에 다시 송신할 수 있다. 이러한 기능 중 부분들 또는 모두는 브라우저 애플리케이션(112)의 다른 컴포넌트들에 의해 실행될 수 있다.
[0036] 확장 관리자(128)는 DOM 엘리먼트들과 같은 소정의 브라우저 엘리먼트들을 웹 퍼블리셔(104)에게 노출시킬 수 있는 통지자(142)를 또한 포함할 수 있다. 도 3에 대해 아래에서 더 상세히 논의되는 바와 같이, DOM 엘리먼트들은, 예컨대, 로컬 컴퓨팅 디바이스(102) 또는 브라우저 애플리케이션(112) 상에 설치되는 소정의 또는 각각의 브라우저 확장의 이름, 각각의 확장에 대한 분류 일람표, 또는 각각의 브라우저 확장이 정해진 웹 페이지 상에서 수행할 수 있는 동작들 또는 액션들(예컨대, 생성, 판독, 업데이트, 삭제)의 리스트를 포함할 수 있다.
[0037] 일부 경우들에 있어서, 확장 관리자(128)는 퍼블리셔들로 하여금 브라우저 확장 DOM 엘리먼트들의 리스트에 걸쳐 프로그램적으로 반복하도록 허용하는 프레임워크(144)(예컨대 JavaScriptTM로 프로그래밍될 수 있음)를 또한 포함할 수 있다. 프레임워크(144)는 특정 확장들이 페이지(110)와 연동할 수 있는 방법을 규제할 수 있는 퍼블리셔-정의 웹 페이지 메타 태그들의 삽입을 용이하게 한다. 프레임워크(144)는 페이지(110)와 연동할 수 있는 확장들의 분류들을 명시할 수 있다. 프레임워크(144)는, 동작들 또는 액션들이 일반적으로 페이지(110)에 어떻게 적용될 수 있는지(이를테면, 업데이트, 판독, 삭제, 기록 등)를 명시할 수 있다. 일부 구현들에 있어서, 프레임워크(144)는, 웹 퍼블리셔(104)가 페이지(110) 상에서 다양한 동작들 또는 액션들을 수행할 권리에 대해서 확장 소유자로부터의 요금지불을 요청할 수 있게 하는 협정 조항들의 정의를 용이하게 할 수 있다.
[0038] 물론, 브라우저 애플리케이션(112)이 도 1과 관련하여 상세히 예시되지 않은 다양한 특징들, 기능들, 동작 모듈들 또는 다른 엘리먼트들을 포함하거나 이들과 연관될 수 있다는 것이 인지될 수 있다. 마찬가지로, 렌더링 엔진(126) 및 확장 관리자(128)와 연관하여 사용되는 용어는 단순히 예를 위한 것이라는 것과, 현존하거나 또는 나중에 존재할 수 있는 다양한 타입들의 브라우저 애플리케이션들(112)이 본원에서 설명된 다양한 개념들을 지칭할 경우 상이한 용어를 사용할 수 있다는 것이 인지될 수 있다.
[0039] 시스템(100)은 또한 원격 서버(170)를 포함할 수 있다. 서버(170)는 중앙 저장 컴포넌트(180), 인가 엔진(172) 및 감사(auditor) 엔진(182)을 포함할 수 있다. 일부 경우들에 있어서, 중앙 저장 컴포넌트(180)는 웹 페이지들 상에서의 다양한 확장들의 행동들에 대응하는 감사 추적(audit trail) 또는 로그를 저장할 수 있다. 인가 엔진(172)은, 브라우저 확장들이 그들이 수행하도록 정의되는 행동들만을 수행한다는 것을 인가하기 위해 사용될 수 있다. 예컨대, 서버(170)는 소정의 브라우저 확장들을 자동적으로 인가하고, 그리고 그러한 인가된 브라우저 확장 분류들을 할당하거나 또는 브라우저 확장들에 의해 수행되는 액션들에 대한 감사 또는 테스트 결과들에 기초하여 디지털 인증서들을 통해 브라우저 확장들을 서명(sign)할 수 있다(즉, 브라우저 확장들이 자신이 수행하고자 주장한 액션들만을 수행한다는 것을 검증하기 위해). 감사 엔진(182)은, 예컨대 중앙 저장 컴포넌트(180)와 함께 다양한 브라우저 확장들의 소정의 액션들을 추적하여 로깅하기 위해서 그리고 중앙 저장 컴포넌트(180)에 또한 저장될 수 있는 확장들과 연관된 허가들 및 정의들에 기초하여 액션들을 평가하기 위해 사용될 수 있다.
[0040] 일부 경우들에 있어서, 브라우저 애플리케이션(112)은 그 브라우저 애플리케이션에 설치된 확장이 소정의 허가들을 갖는다고 결정하기 위해서 중앙 저장 컴포넌트(180)에 실시간으로 액세스할 수 있다. 브라우저 애플리케이션(112)은 페이지(110)와 연관된 웹 퍼블리셔(104)와 그 정보를 공유할 수 있다. 예컨대, 도 3과 관련하여 아래에서 더 상세히 논의되는 바와 같이, 페이지 또는 콘텐츠의 타입을 요청하고 있는 브라우저는 브라우저 애플리케이션(112)이 설치된 확장들(A, B 및 C)을 갖고 이러한 확장들이 액션들(X, Y 및 Z)을 수행할 수 있다는 것을 웹 퍼블리셔(104)에게 통지할 수 있다. 다음으로, 웹 퍼블리셔(104)는 이러한 정보에 기초하여, 콘텐츠 보류와 같은 소정의 액션들을 수행하기로 선택하고, 상이한 형태의 콘텐츠를 서빙하고, 브라우저 애플리케이션(112)의 사용자를 상이한 타입의 콘텐츠(예컨대, PDF 또는 이미지)로 리다이렉팅하고, 기타 등등을 수행할 수 있다. 사용자가 콘텐츠를 수신할 경우에, 사용자는 브라우저 확장이 웹 퍼블리셔(104)에 의해서 제공되는 본래 페이지로부터 콘텐츠를 어떻게 변경하였는지를 볼 수 있다.
[0041] 도 1의 예에서 또한 도시된 바와 같이, 브라우저 애플리케이션(112)은 특정 확장, 이를테면 확장 파일들(122)과 연관된 확장의 기능 중 일부 또는 모두를 구현하도록 구성될 수 있는 확장 관리자(128)를 포함할 수 있다. 예컨대, 확장 관리자(128)는 렌더링 엔진(126)으로 하여금 확장 파일들(122)의 확장과 연관된 특정 파일들 또는 페이지들을 실행하거나 다른 방식으로 렌더링하게 하도록 구성될 수 있다. 확장 관리자(128)는 도 2에 대해 아래에서 더 상세히 논의되는 바와 같이, 백그라운드 페이지들 및 콘텐츠 스크립트들을 실행하도록 또한 구성될 수 있다. 예컨대, 콘텐츠 스크립트는 특정 타입의 콘텐츠(예컨대, 비-링크된 웹페이지, 또는 RSS 피드(feed))의 존재를 검출하기 위해서 브라우저 윈도우(108) 내에서 렌더링하기 위한 브라우저 애플리케이션(112)에 로딩되는 임의의 페이지를 검사하기 위해 기록될 수 있다. 즉, 콘텐츠 스크립트는 브라우저 윈도우(108) 내에서 로딩되고 렌더링되는 임의의 웹 페이지의 콘텐츠에 대해 이러한 기술들을 실행할 수 있다. 콘텐츠 스크립트가 특정된 타입의 콘텐츠를 검출하는 경우에, 콘텐츠 스크립트는 그 특정된 타입의 콘텐츠의 검출된 존재의 확장을 통지하기 위해서 확장에 대한 메시지를 전달할 수 있다. 일부 경우들에 있어서, 확장은 브라우저 윈도우(108)의 실질적인 수정을 수행할 수 있다(예컨대, 브라우저 윈도우(108)에 대한 페이지 액션, 이를테면 확장 아이콘(120)을 디스플레이하는 것을 실행하기 위해서).
[0042] 도 1의 예에 있어서, 브라우저 애플리케이션(112)은 이산적인 기능 모듈들을 포함하는 것으로 예시된다. 그러나, 그러한 예시는 단순히 예를 위한 것이라는 것과 다른 구현들이 가능하다는 것이 인지될 수 있다. 예컨대, 브라우저 애플리케이션(112)의 단일 엘리먼트가 둘 또는 그 초과의 엘리먼트들에 의해 구현될 수 있다. 역으로, 도 1에 예시된 브라우저 애플리케이션의 둘 또는 그 초과의 컴포넌트들이 단일 컴포넌트를 사용하여 실행될 수 있다. 게다가, 도 1의 예에 있어서, 로컬 컴퓨팅 디바이스(102)는 적어도 하나의 프로세서(102a)뿐만 아니라 컴퓨터 판독가능 저장 매체(102b)를 포함하는 것으로 예시된다. 즉, 예컨대, 로컬 컴퓨팅 디바이스(102)는 원하는 결과를 달성하기 위해서 둘 또는 그 초과의 프로세서들을 병렬로 실행하는 것에 의존할 수 있다. 반면에, 컴퓨터 판독가능 저장 매체(102b)는 예컨대 명령들을 저장하기 위해 사용될 수 있는 임의의 통상적인 타입의 컴퓨터 메모리를 나타낼 수 있는데, 그 명령들은 적어도 하나의 프로세서(102a)에 의해서 실행될 경우에 브라우저 애플리케이션(112)으로 하여금 다양한 기능들 및 본원에서 설명되는 다른 관련 기능들을 수행하게 한다. 도 1의 시스템(100)의 추가적인 또는 대안적인 예시적인 구현들이 가능하다.
[0043] 도 2는 웹 브라우저에서 브라우저 확장의 예에 대한 블록 다이어그램이다. 위에서 참조된 바와 같이, 확장 파일들은 다양한 상이한 타입들의 파일들을 포함할 수 있다. 예컨대, 도 2에 도시된 바와 같은 확장(204)은 그 확장(204)에 대한 정보를 제공하는 매니페스트 파일(230), 이를테면 예컨대 확장이 제공할 수 있는 가장 중요한 파일들 및 성능들과 확장이 웹 페이지들 및 브라우저 애플리케이션과 상호작용해야 할 수 있는 허가들을 포함할 수 있다. 예컨대, 매니페스트(230)는 확장(204)이 그에 대해 행동하려 하는 확장의 이름 및 적어도 하나의 콘텐츠 타입(232)을 포함할 수 있다. 예컨대, 콘텐츠 타입은 이미지, 텍스트, 하이퍼링크 등일 수 있다. 매니페스트(230)는 도 3에 대해 아래에서 더 상세히 설명되는 바와 같이, 확장(204)에 의해서 수행될 수 있는 하나 또는 그 초과의 액션들(234) 또는 동작들, 이를테면 판독, 기록, 업데이트, 삭제 등을 또한 표시할 수 있다. 위에서 참조된 바와 같이 확장들은 다양한 다른 타입들의 파일들을 포함할 수 있다는 것이 인지될 수 있다. 예컨대, 확장(204)은 적어도 하나의 HTML 페이지(220), 이를테면 예컨대 브라우저 윈도우(208) 내에서 디스플레이될 웹페이지(201)의 페이지 모델의 콘텐츠를 수정할 수 있는 콘텐츠 스크립트 파일(212) 또는 브라우저 윈도우(208)와 연관된 팝-업 윈도우를 제공하는 브라우저 액션과 연관되는 HTML 페이지를 포함할 수 있다.
[0044] 아래에서 설명되는 바와 같은 콘텐츠 스크립트들(212)과는 달리 확장(204)의 실행에 대해서, 그것의 실행은 도 1에 도시된 브라우저 애플리케이션의 렌더링 엔진과 유사하게 진행하지만 그 렌더링 엔진의 프로세스와 별도의 프로세스로 진행할 수 있다. 콘텐츠 스크립트(212)는 연관된 확장이 웹 페이지들, 예컨대 웹 페이지(201)와 상호작용하게 할 수 있는 스크립트를 나타내거나 또는 이를 포함할 수 있다. 예컨대, 콘텐츠 스크립트(212)는 브라우저에 로딩될 때 웹 페이지(201)와 관련하여 실행하는 JavaScriptTM로서 구현될 수 있다.
[0045] 콘텐츠 스크립트들은 웹 페이지들에서 비링크된 URL들을 찾아 이들을 하이퍼링크들로 변환하고, 텍스트를 더욱 알아보기 쉽게 하기 위해서 폰트 사이즈를 증가시키며, 광고들 또는 다른 콘텐츠를 추가 또는 차단할 수 있다. 콘텐츠 스크립트들은 간접적으로 브라우저 API들을 사용하고, 확장 데이터에 대한 액세스를 획득하며, 메시지들을 그들의 부모 확장으로 교체함으로써 확장 액션들을 요청할 수 있다. 콘텐츠 스크립트들은 도 1에 도시된 페이지 모델(예컨대, DOM)을 사용하여 웹 페이지들과 또한 통신할 수 있다.
[0046] 콘텐츠 스크립트(212) 코드는 웹페이지에 주입되려 항상 시도할 수 있거나, 또는 단지 때로는 콘텐츠 스크립트가 어떻게 기록되는지에 의존하여 주입될 수 있다. 게다가, 확장(204)은 다수의 콘텐츠 스크립트들을 페이지에 삽입할 수 있고, 이러한 콘텐츠 스크립트들 각각은 JavaScriptTM 및 CSS 파일들과 같은 다수의 파일들을 가질 수 있다.
[0047] 콘텐츠 스크립트들은, 일반적으로 말해서, 브라우저 애플리케이션에 의해 방문된 웹 페이지들의 세부사항들을 판독하도록 구성될 수 있고, 그러한 페이지들에 대한 변경들을 수행하도록 추가로 구성될 수 있다. 예컨대, 콘텐츠 스크립트는 페이지(201)의 페이지 모델(예컨대, DOM)을 판독 및/또는 수정하도록 구성될 수 있다. 그러나, 예시적인 구현들에 있어서, 도 1에 대해 위에서 논의된 바와 같이, 콘텐츠 스크립트는 웹 페이지(201)와 연관된 웹 퍼블리셔에 의해 제공되는 규칙들에 기초하여 브라우저 애플리케이션의 엔진을 렌더링함으로써 웹 페이지(201)의 페이지 모델(예컨대, DOM)을 액세스 또는 수정하는 것을 제약 받을 수 있다. 이러한 방식으로, 웹 퍼블리셔들은 소정의 웹 사이트들 상에서의 확장 작용을 관리하거나 추적할 수 있다.
[0048] 도 3은 브라우저 확장들의 예시적인 분류들 및 동작들에 대한 블록도 다이어그램이다. 도 3에 도시된 시스템(300)은 두 개의 컴퓨팅 디바이스들, 즉 디바이스(310) 및 디바이스(320)를 포함한다. 그 디바이스들 각각은 도 1에 대해 위에서 설명된 브라우저 애플리케이션과 같은 브라우저 애플리케이션을 포함할 수 있다. 브라우저 애플리케이션은 도 1에 도시된 웹 퍼블리셔와 같은 웹 퍼블리셔에 노출하는 브라우저 DOM 엘리먼트들, 즉 다양한 브라우저 확장 엘리먼트들을 사용자 동의와 함께 포함할 수 있다. 예컨대, 브라우저 확장 엘리먼트들은 디바이스 상에 설치되는 각각의 브라우저 확장의 이름, 각각의 확장에 대한 분류 일람표, 및 각각의 브라우저 확장이 정해진 웹 페이지 상에서 수행할 수 있는 동작들(예컨대, 생성, 판독, 업데이트, 삭제)의 리스트를 포함할 수 있다.
[0049] 예컨대, 도 3에 도시된 바와 같이, 다양한 브라우저 엘리먼트들(312)은 디바이스(310)의 브라우저 애플리케이션에 의해 웹 퍼블리셔에게 노출될 수 있다. 브라우저 엘리먼트들(312)은 디바이스(310) 상에서 동작하는 브라우저 애플리케이션에 설치된 세 개의 브라우저 확장들의 이름들, 분류들 및 동작들을 포함한다. 제 1 브라우저 확장은 이름 "Ad 서버", 분류 "A" 및 동작들 "판독, 기록"을 갖는다. 제 2 브라우저 확장은 이름 "컨버터", 분류 "B" 및 동작들 "판독"을 갖는다. 제 3 브라우저 확장은 이름 "이메일러", 분류 "C" 및 동작들 "업데이트, 삭제"를 갖는다.
[0050] 다른 예로서, 브라우저 엘리먼트들(322)은 디바이스(320)에서 동작하는 브라우저 애플리케이션과 연관된다. 브라우저 엘리먼트들(322)은 디바이스(320) 상에서 동작하는 브라우저 애플리케이션에 설치된 두 개의 브라우저 확장들의 이름들, 분류들 및 동작들을 포함한다. 제 1 브라우저 확장은 이름 "Ad 서버", 분류 "A" 및 동작들 "판독, 기록"을 갖는다. 제 2 브라우저 확장은 이름 "소셜 상태", 분류 "B" 및 동작들 "판독, 기록, 업데이트"를 갖는다.
[0051] 도 1의 프레임워크(144)와 같은 클라이언트-측 프레임워크(예컨대, JavaScript에서)는 웹 퍼블리셔들로 하여금 브라우저 확장 DOM 엘리먼트들의 리스트(들)에 걸쳐 프로그램적으로 반복하게 허용할 수 있다. 이러한 프레임워크는 특정 확장들이 웹 퍼블리셔에 의해 서빙되는 웹 페이지와 연동할 수 있는 방법을 규제할 수 있는 퍼블리셔-정의 웹 페이지 메타 태그들의 삽입을 용이하게 한다. 확장들의 분류들은 페이지와 연동할 수 있다. 동작들은 일반적으로 웹 페이지에 적용될 수 있다. 프레임워크는, 예컨대 웹 퍼블리셔가 페이지 상에서 다양한 동작들을 수행할 권리에 대해서 확장 소유자로부터의 요금지불을 필요로 할 수 있게 하는 협정 조항들의 정의를 용이하게 할 수 있다.
[0052] 도 4는 웹 브라우저의 예시적인 사용자 인터페이스에 대한 다이어그램이다. 사용자 인터페이스는 도 1에 대해 위에서 논의된 브라우저 애플리케이션과 같은 웹 브라우저의 윈도우 또는 탭(402)에 구현될 수 있다. 탭(402)은 콘텐츠(410)뿐만 아니라 ad(420) 및 ad(422)를 포함하는 웹 페이지(404)를 디스플레이할 수 있다. 일부 경우들에 있어서, 브라우저 애플리케이션에서 동작하는 확장은 ad(420)와 같은 ad들 중 하나를 수정하거나 차단하려 할 수 있다. 일부 경우들에 있어서, 확장은 웹 퍼블리셔에 의해서 제공되지 않는 다른 콘텐츠로 콘텐츠(410)를 대체하려 할 수 있다. 일부 경우들에 있어서, 확장은 다른 ad로 또는 다른 콘텐츠로 ad(422)를 대체하려 할 수 있다.
[0053] 웹 퍼블리셔들이 신뢰적인 브랜드 무결성 및 권한을 유지하기 위해서, 그 웹 퍼블리셔들은 그들이 제공하는 콘텐츠에 대하 더 나은 제어를 필요로 한다. 확장들에 걸친 제어는 두 부분들로 이루어진다. 현재의 비즈니스 모델에서는, 웹 퍼블리셔, 이를테면 신문이 무료 또는 저가 콘텐츠를 최종 사용자에게 계속 전달하기 위해서 ad들을 서빙하도록 조직된다. 게다가, 신문은, 저작권이 있는 기사들과 대조적으로 ad들을 적합하게 서빙함으로써 브랜드 무결성이 유지되는 것을 보장하기 위해, 자신의 광고 파트너들에 대한 법률상 의무들을 갖는다. 이를테면, 초콜렛 공급자는 자신의 광고들이 증가적인 당뇨병 및 비만율에 관한 기사 옆에 배치되는 것은 원하지 않을 수 있다. 오늘날의 ad-블로커 확장들은, 기껏해야, 자신의 사용자들에게 연속적인 고품질 저가 콘텐츠 전달을 보장하기 위해서 퍼블리셔들이 사용하는 수입원들을 제거한다. 오늘날의 사용자들은 광고와 함께 콘텐츠를 수신하기 위해서 서비스 제공자들로부터의 서비스의 묵시적 조항들에 동의하거나, 또는 제한된 광고 또는 광고없는 콘텐츠를 그들에게 제공하는 모델들로 구매함으로써 기피할 기회를 갖는다. 그러나, 위에서 언급된 확장은 단순히 ad들이 서빙되는 것을 차단한다. 다른 시나리오에서는, ad-확장이 그 자체를 위해 신문 ad들을 대신함으로써, 초콜렛 ad가 잘못된 품목 대신으로 서빙될 경우 신문에 대한 법적 책임을 생성한다.
[0054] 확장들은 또한 서비스를 퍼블리셔들에게 제공할 수 있는데, 그렇지 않은 경우에는 퍼블리셔들이 그 서비스를 자체 조달할 수 없을 수 있다. 이를테면, 웹 보유를 최종적으로 확립한 Mamie's Lodge로 불리는 local B&B의 가설적인 예를 고려하자. 신뢰적인 브랜드로서, 그것들은 또한 그들의 예약 사이트에서 로컬 ad들을 서빙하기 시작하였다. Mamie's Lodge는 신뢰적인 확장이 그들의 사이트에서 통화 전환(currency conversion)을 제공할 수 있기를 원할 것이지만, Mamie's Lodge는 그의 사용들이 정확한 전환율들을 받았는지 여부를 제어할 능력을 현재 갖지 않는다.
[0055] 확장들은 또한 사용자들에게 영향을 준다. 예컨대, 사용자인 "Susie"는 매일 온라인 신문의 패션, 날씨, 및 웨딩 섹션을 읽는다고 상상하자. 그녀가 톱라인 뉴스를 또한 읽기를 원하여도, 그 뉴스는 보통 그녀의 리스트의 하단에 있다. 그녀는 그녀의 선호하는 기사들을 먼저 배치하는 개인전용 온라인 신문 홈페이지를 갖는 것을 좋아할 것이다. 그녀는 그녀의 선호하는 기사들을 능동적으로 선택할 수 있지만, 그것을 하는데 시간을 소비하는 것은 원하지는 않을 것이다. 만약 그녀가 자신이 얼마나 많은 시간에 그리고 얼마나 자주 신문의 섹션들을 읽는지를 추적하여 그에 따라 개인전용 홈페이지의 기사 레이아웃을 업데이트할 확장을 설치할 수 있다면, 그녀는 온라인 신문을 한층 더 읽을 것이다. 온라인 신문은 이러한 노력을 지원하길 원할 것이지만 아직은 능력들을 갖고 있지 않다. 만약 신문이 이러한 서비스의 제공자가 누구인지를 제어할 수 있다면, 그들은 브랜드 무결성을 보장하고 더 나은 사용자 경험을 제공할 수 있을 것이다.
[0056] 또 다른 예로서, 확장들은 모바일 디바이스들의 사용자들에게 서비스들을 제공할 것이다. 예컨대, 최신형 스마트 시계를 방금 구입한 사용자 "Tom"을 고려하자. 그는 그의 디바이스들로부터 가능한 오래 가까이 하지 않으려 노력하지만, 그가 항상 찾고 있던 몇몇 헤드라인들이 존재한다. 그는 그의 시계에 대한 소정의 온라인 신문들 푸시 특정 토픽들을 갖기 원할 것이고, 이것은 그의 빠르게 흘러가는 근무시간에 필수적일 것이다. 이러한 퍼블리셔들은 만약 그들이 정확한 전달을 보장할 수 있다면 그들의 콘텐츠를 혼합할 수 있다.
[0057] 도 5는 예시적인 구현에 따른, 콘텐츠에 대해 수정들을 수행한 브라우저 확장들을 검출하기 위한 프로세스의 흐름도이다. 도 5에 도시된 프로세스는 도 1에 도시된 시스템(100)과 같은 컴퓨터 시스템, 예컨대 도 1에 도시된 웹 퍼블리셔(104)에 의해서 적어도 부분적으로 수행될 수 있다. 웹 퍼블리셔는 웹 페이지를 포함하는 콘텐츠를 제공할 수 있다(510). 예컨대, 콘텐츠는 웹 페이지(110)를 포함할 수 있다. 도 1에 도시된 브라우저 애플리케이션(112)은 렌더링 엔진(126)을 사용하여 페이지(110)를 렌더링할 수 있다. 브라우저는 또한 예컨대 페이지(110)의 DOM을 잠금함으로써 웹 퍼블리셔(104)에 의해 명시된 시간에 콘텐츠를 잠금할 수 있다. 예컨대, 브라우저는 예컨대 W3C IFrame Sandbox Attribute의 샌드박스 속성을 사용함으로써 웹 퍼블리셔에 의해 명시된 시간 이후에는 페이지(110)의 DOM 상에서 스크립트들, 플러그인들, 팝업들 또는 브라우저 확장들이 동작하는 것을 막을 수 있다.
[0058] 예컨대 도 1에 도시된 프로세서(92)를 사용하는 웹 퍼블리셔(104)는 콘텐츠(예컨대, 브라우저 애플리케이션(112))에 액세스한 제 1 웹 브라우저와 연관되는 적어도 하나의 확장의 리스트를 액세스할 수 있고, 콘텐츠에 기초하여 웹 브라우저에 의해서 생성된 키를 또한 수신할 수 있다(520). 제 1 웹 브라우저는 키를 생성하기 위해서 콘텐츠에 대해 기능을 실행할 수 있다. 기능의 예로서, 제 1 웹 브라우저는 웹 페이지 상에서 렌더링되는 콘텐츠의 스크린숏을 취할 수 있다. 다른 예로서, 브라우저는 콘텐츠와 포함되는 그 콘텐츠의 송신의 비트들의 수의 카운트를 생성하기 위해서 그 콘텐츠의 체크섬을 실행할 수 있다. 제 1 웹 브라우저는, 다른 예로서, 콘텐츠의 트레이스를 실행할 수 있다. 예컨대, 웹 브라우저는 브라우저 프로세스, 렌더링된 프로세스, 및 브라우저에 의해 렌더링된 콘텐츠에 대한 정보를 기록하기 위란 로그(log)를 생성하거나 서버 및 웹 브라우저에 의해 교환되는 데이터에 대한 정보를 로그하기 위해서 트레이스를 실행할 수 있다. 데이터 교환은 디버깅 제어들, 서버 변수들, 쿠키들, 렌더링되는 콘텐츠 및 다른 정보를 포함할 수 있다. 일부 구현들에 있어서, 트레이스를 실행하는 결과는 브라우저 프로세스와 같은 프로세스에서 발생한 이벤트들에 대한 이벤트 시간들을 포함하는 기록(이를테면 트레이스 파일)이다. 예로서, 트레이스는 퍼블리셔 콘텐츠가 상이한 퍼블리셔로부터의 제 2 콘텐츠 세트와 병합되었다는 기록을 포함할 수 있다. 기록은 최종 사용자 시청을 유도하는 포맷팅의 임의의 수정들을 포함할 수 있다. 기록은 콘텐츠의 배치를 변경하기 위해 나중에 수정들을 수행하거나 또는 콘텐츠 저자에게 비용을 지불하기 위해서 사용될 수 있다.
[0059] 기능의 다른 예들로서, 제 1 웹 브라우저는 DOM을 텍스트 파일로서 저장할 수 있거나, 페이지(110) 상에서 상이한 태그들의 수 및 위치 또는 페이지(110) 상에서 엘리먼트들의 타입을 저장할 수 있다. 기능은, 웹 퍼블리셔(104)와 같은 시스템이 키로부터 콘텐츠를 생성할 뿐 콘텐츠로부터는 키를 생성할 수 없도록, 가역적일 수 있다. 예컨대, 만약 키가 DOM을 텍스트 파일로서 포함한다면, 웹 퍼블리셔는 텍스트 파일을 사용하여 콘텐츠를 재생성할 수 있다. 웹 퍼블리셔는, 예로서, 새로운 키에서 수정되는 폰트 사이즈에 기초하여 콘텐츠의 길이를 변경할 수 있어서, 더 큰 폰트 사이즈에 대한 더욱 간결한 콘텐츠 및 더 작은 폰트 사이즈에 대한 더욱 완전한 콘텐츠가 리턴된다.
[0060] 예컨대 프로세서(92)를 사용하는 웹 퍼블리셔(104)는 키와 연관된 값을 예상 값에 비교할 수 있다(530). 예컨대, 만약 제 1 웹 브라우저가 비트들의 수를 생성하기 위해 콘텐츠에 대해서 체크섬 기능을 실행하였고 그 비트들의 수를 키와 연관시켰다면, 웹 퍼블리셔는 예컨대 그 웹 퍼블리셔에 의해 제공된 본래 콘텐츠에 기초하여, 콘텐츠와 연관될 것으로 그 웹 퍼블리셔가 예상하는 예상된 비트들의 수에 키와 연관된 비트들의 수를 비교할 수 있다. 예상 값은 콘텐츠에 대한 어떠한 수정들도 나타내지 않는 값일 수 있다. 웹 퍼블리셔(104)는 그 값이 예상 값과 동일하지 않다고 결정할 수 있다(540에서 아니오). 이러한 결정은, 제 1 웹 브라우저에 의해 렌더링된 콘텐츠가 웹 퍼블리셔(104)에 의해 본래 제공된 콘텐츠와는 일부 관점에 있어서 상이하였다고 표시할 수 있고, 이는 따라서 브라우저 확장이 콘텐츠가 제 1 웹 브라우저에 의해서 렌더링되었을 때 그 콘텐츠를 수정하였다고 표시할 수 있다. 예컨대, 브라우저 확장은 콘텐츠와 연관된 광고들을 추가 또는 제거하였거나, 텍스트의 위치를 변경하였거나, 텍스트를 삭제하였거나, 웹 페이지의 가시적 엘리먼트들을 강조하였거나, 하이퍼링크들을 추가하였거나, 콘텐츠의 다른 액스펙터들(aspects)을 수정하였을 수 있다. 웹 퍼블리셔(104)는 값과 예상 값 간의 차이를 결정할 수 있다. 예컨대 프로세서(92)를 사용하는 웹 퍼블리셔(104)는 이어서 예컨대 도 6에 대해 아래에서 더 상세히 설명되는 바와 같이 차이에 기초하여 콘텐츠를 수정한 리스트로부터의 특정 브라우저 확장을 결정할 수 있다(550). 일부 구현들에 있어서, 예컨대, 만약 리스트가 단지 하나의 브라우저 확장을 포함한다면, 웹 퍼블리셔는 결정을 회피할 수 있는데, 그 이유는 리스트로부터의 단일 브라우저 확장이 웹 페이지 또는 콘텐츠를 수정하였다고 웹 퍼블리셔가 자동으로 결정할 수도 있기 때문이다. 일부 구현들에 있어서, 웹 퍼블리셔는 어떤 브라우저 확장(들)이 콘텐츠를 수정하였는지를 반복적으로 또는 실시간으로 추론하기 위해서 복수의 리스트들, 복수의 키들, 및 복수의 예상 값들을 분석할 수 있다. 복수의 리스트들, 키들 및 예상 값들은 다양한 웹 브라우저들 및 컴퓨팅 디바이스들로부터 올 수 있다. 예컨대, 웹 퍼블리셔는 어떤 브라우저 확장(들)이 콘텐츠를 변경하였는지를 결정하기 위해서 100 개의 키들의 세트 및 확장들의 100 개의 리스트들을 분석할 수 있다. 일 예에 있어서, 웹 퍼블리셔는 설치된 확장들의 상이한 세트를 각각 가질 수 있는 100 개의 상이한 브라우저들에 동일한 콘텐츠를 송신할 수 있다. 이어서, 웹 퍼블리셔는 어떤 확장들이 콘텐츠를 수정하였는지에 대한 정보를 수신한다. 이어서, 웹 퍼블리셔는 어떤 확장(들)이 콘텐츠를 수정하였을 수 있는지를 결정하기 위해서 그 콘텐츠를 수정한 브라우저들 모두에 공통적인 확장들을 찾을 수 있다. 예컨대, 웹 퍼블리셔는 브라우저들 중 40 개의 브라우저들이 콘텐츠를 수정하였다고 결정할 수 있다. 그러한 40 개의 브라우저들 모두는 동일한 확장 "A"를 갖고, 어떠한 다른 확장들도 공통으로 갖지 않는다. 그 경우에, 웹 퍼블리셔는 확장 "A"가 콘텐츠에 대한 수정을 야기하였을 가능성이 있다고 결정할 수 있다. 대안적으로 또는 추가적으로, 웹 퍼블리셔는, 모든 40 개의 브라우저들이 설치된 확장들 "A", "B" 및 "C"을 갖고 그리고 다른 60 개의 브라우저들 중 일부도 또한 설치된 확장들 "B" 및 "C"를 갖지만 여전히 다른 60 개의 브라우저들은 콘텐츠를 수정하지 않았다고 결정할 수 있다. 그 경우에, 웹 퍼블리셔는 또한 확장 "A"가 콘텐츠에 대한 수정을 야기하였을 가능성이 있다는 것을 검출할 수 있다. 웹 퍼블리셔는 복수의 분들, 시간들, 날들, 또는 심지어 주들(weeks)에 걸쳐 반복적인 비교들을 사용할 수 있고, 이러한 비교들은 웹 퍼블리셔에 의해 제공된 콘텐츠에 대한 확장들에 의해서 이루어진 수정들에 관한 업데이트된 데이터를 웹 퍼블리셔에 제공하기 위해서 계속적으로 진행될 수 있다.
[0061] 도 5에 도시된 프로세스는 다양한 위치들에서, 동시에, 실시간으로, 사용자의 관점에서 어떤 지연도 없이, 다수의 컴퓨팅 디바이스들에서 동작하는 다수의 웹 브라우저들 상에서 동작할 수 있다. 다양한 구현들에 있어서, 예컨대, 도 6에 대해 아래에서 더 상세히 논의되는 바와 같이, 웹 퍼블리셔(104)는 콘텐츠를 렌더링하는 웹 브라우저에 설치되거나 웹 브라우저에서 동작하는 모든 브라우저 확장들의 리스트를 수신할 수 있다. 다양한 구현들에 있어서, 도 5에 도시된 프로세스 중 일부 또는 모두는 제 3자 컴퓨터에 의해 수행될 수 있다. 예컨대, 단계들(520-550)에서의 분석들 중 일부 또는 모두는 제 3자 컴퓨팅 디바이스에 의해 수행될 수 있다. 그러한 예에 있어서, 제 3자 컴퓨팅 디바이스는 웹 퍼블리셔(104)에 대한 분석 결과들을 제공하거나 또는 그 분석 결과들에 액세스하기 위해 이용가능할 수 있다. 예컨대, 일 구현에 있어서, 웹 브라우저는 웹 브라우저에 설치된 모든 확장들의 리스트 및 콘텐츠에 기초하여 웹 브라우저에 의해 생성된 키를 제 3자 서버(이를테면 도 1에 도시된 서버(170))에 송신할 수 있다. 제 3자 서버는, 만약 어떠한 브라우저 확장도 웹 페이지 상의 콘텐츠를 수정하지 않았다면, 키에 대한 소정의 값을 수신할 것으로 예상할 수 있다. 만약 리스트의 브라우저 확장들 중 임의의 브라우저 확장이 웹 페이지 상의 콘텐츠를 수정하였다면, 키의 값은 제 3자 서버가 수신할 것으로 예상하는 값과 상이할 수 있다. 제 3자 서버는 상이한 값들을 통합하고, 웹 퍼블리셔에 대한 보고를 생성할 수 있다. 예컨대, 보고는 콘텐츠를 수정한 확장들의 리스트 및 각각의 확장이 콘텐츠의 어떤 애스펙트들을 수정하였는지를 포함할 수 있고, 제 3자 서버는 예컨대 보고를 웹 퍼블리셔에 송신하거나 또는 웹 퍼블리셔가 보안 로그인을 통해 소정의 웹 사이트로부터 다운로딩하기 위해 그 보고를 이용가능하게 할 수 있다.
[0062] 도 6은 예시적인 구현에 따른, 콘텐츠에 대해 수정들을 수행한 브라우저 확장들을 검출하기 위한 다른 프로세스를 예시하는 흐름도이다. 도 6에 도시된 프로세스는 도 1에 도시된 시스템(100)과 같은 컴퓨터 시스템, 예컨대 도 1에 도시된 웹 퍼블리셔(104)에 의해서 적어도 부분적으로 수행될 수 있다. 웹 퍼블리셔는 웹 페이지를 포함하는 콘텐츠를 제공할 수 있다(610). 웹 페이지는 예컨대 온라인 신문의 부분일 수 있다. 다른 컴퓨팅 디바이스에서의 웹 브라우저는 특정 시간에 콘텐츠를 잠금할 수 있다(612). 예컨대, 웹 브라우저는 예컨대 W3C IFrame Sandbox Attribute의 샌드박스 속성을 사용함으로써 웹 퍼블리셔에 의해 명시된 시간 이후에는 페이지(110)의 DOM 상에서 스크립트들, 플러그인들, 팝업들 또는 브라우저 확장들이 동작하는 것을 막을 수 있다.
[0063] 웹 퍼블리셔는 콘텐츠에 액세스하는 웹 브라우저와 연관된 모든 확장들의 리스트에 액세스할 수 있고, 웹 퍼블리셔는 또한 콘텐츠에 기초하여 웹 브라우저에 의해 생성된 키에 액세스할 수 있다(620). 웹 퍼블리셔는 키와 연관된 값을 예상 값에 비교할 수 있다(630). 웹 퍼블리셔는 그 값이 예상 값과 동일한지를 결정할 수 있다(640). 만약 그렇다면, 웹 퍼블리셔는 콘텐츠를 계속 제공할 수 있다(610). 만약 그렇지 않다면(640에서 아니오), 웹 퍼블리셔는 값과 예상 값 간의 차이를 결정하고, 또한 콘텐츠를 수정한 특정 브라우저 확장을 결정하기 위해서 데이터 세트에 충분한 데이터가 존재하는지를 결정할 수 있다(650). 예컨대, 데이터 세트는 도 1에 도시된 바와 같은 데이터 세트(94)일 수 있다. 하나의 예시적인 구현으로서, 웹 퍼블리셔는 콘텐츠에 액세스하는 웹 브라우저와 연관된 모든 확장들의 리스에 액세스할 수 있다(620). 만약 웹 브라우저와 연관된 모든 확장들의 리스트에 단지 하나의 브라우저 확장만이 존재한다면, 웹 퍼블리셔는 어떤 브라우저 확장(하나의 브라우저 확장)이 콘텐츠를 수정하였는지를 결정하기 위해서 충분한 데이터를 가질 수 있다. 다른 예로서, 모든 브라우저 확장들의 리스트는 도 3의 브라우저 엘리먼트들(312)을 포함할 수 있다. 그 예에서, 만약 엘리먼트(예컨대, ad)가 웹 브라우저 상에서 렌더링되는 콘텐츠로부터 삭제되었다면, 웹 퍼블리셔는 브라우저 엘리먼트들(312)로부터의 브라우저 확장들과 연관된 동작들에 기초하여, 리스트로부터의 단지 하나의 특정 확장만이 콘텐츠를 삭제할 수도 있었다고 결정할 수도 있다. 그러한 예에 있어서, 특정 확장은 브라우저 엘리먼트들(312)에 도시된 "이메일러" 브라우저 확장(단지 가능한 동작으로서 삭제 동작을 갖는 브라우저 엘리먼트들(312)로부터의 확장)일 것이다. 그 경우에, 웹 퍼블리셔는 어떤 확장이 콘텐츠를 수정하였는지를 결정하기 위해서 충분한 데이터를 가질 것이다. 만약 그렇다면(650에서 예), 웹 퍼블리셔는 콘텐츠를 수정한 특정 브라우저 확장을 결정할 수 있다(660). 만약 그렇지 않다면(650에서 아니오), 웹 퍼블리셔는 나중의 비교를 위해서 데이터 세트에 값을 저장할 수 있고(652), 콘텐츠를 계속 제공할 수 있다(610). 그러한 예에 있어서, 웹 퍼블리셔는 어떤 브라우저 확장이 콘텐츠에 대한 수정들을 수행하였는지를 결정하기 위해서 다양한 다른 컴퓨팅 디바이스들 및 웹 브라우저들로부터의 데이터를 사용하여 다수의 반복적인 비교들을 수행할 수 있다. 반복적인 비교들은 다수의 초들, 분들, 시간들, 또는 심지어 날들에 걸쳐 수행될 수 있다. 웹 퍼블리셔는 웹 서브와 연관된 데이터베이스에 또는 원격 데이터 저장부에 데이터 세트(94)를 저장할 수 있다.
[0064] 도 7은 본원에서 설명된 기술들과 사용될 수 있는, 일반적인 컴퓨터 디바이스(700) 및 일반적인 모바일 컴퓨터 디바이스(750)의 예를 도시하는 다이어그램이다. 컴퓨팅 디바이스(700)는 다양한 형태들의 디지털 컴퓨터들, 이를테면 랩톱들, 테스크톱들, 워크스테이션들, 개인 정보 단말들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적합한 컴퓨터들을 나타내려 의도된다. 컴퓨팅 디바이스(750)는 다양한 형태들의 모바일 디바이스들, 이를테면 개인 정보 단말들, 셀룰러 텔레폰들, 스마트 폰들, 및 다른 유사한 컴퓨팅 디바이스들을 나타내려 의도된다. 본원에서 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예시적인 것으로 의도된다.
[0065] 컴퓨팅 디바이스(700)는 프로세서(702), 메모리(704), 저장 디바이스(706), 메모리(704) 및 고속 확장 포트들(710)에 연결하는 고속 인터페이스(708), 및 저속 버스(714) 및 저장 디바이스(706)에 연결하는 저속 인터페이스(712)를 포함한다. 컴포넌트들(702, 704, 706, 708, 710, 및 712) 각각은 다양한 버스들을 사용하여 상호연결되고, 공통 마더보드 상에 장착되거나 또는 적합할 때 다른 방식들로 장착될 수 있다. 프로세서(702)는 고속 인터페이스(708)에 결합된 디스플레이(716)와 같은 외부 입력/출력 디바이스 상에 GUI에 대한 그래픽 정보를 디스플레이하기 위해서 메모리(704) 내에 또는 저장 디바이스(706) 상에 저장되는 명령들을 비롯해서, 컴퓨팅 디바이스(700) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에 있어서는, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수의 타입들의 메모리와 함께, 적절할 때, 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(700)이 연결될 수 있는데, 각각의 디바이스는 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 다중-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0066] 메모리(704)는 컴퓨팅 디바이스(700) 내에 정보를 저장한다. 일 구현에 있어서, 메모리(704)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현에 있어서, 메모리(704)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(704)는 또한 다른 형태의 컴퓨터-판독가능 매체, 이를테면 자기 또는 광학 디스크일 수 있다.
[0067] 저장 디바이스(706)는 컴퓨팅 디바이스(700)를 위한 대용량 저장부를 제공할 수 있다. 일 구현에 있어서, 저장 디바이스(706)는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 비롯해서, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 디바이스들의 어레이와 같은 컴퓨터-판독가능 매체일 수 있거나 이를 포함할 수 있다. 컴퓨터 프로그램 제품은 정보 캐리어로 유형적으로(tangibly) 구현될 수 있다. 컴퓨터 프로그램 제품은 또한, 실행될 경우에 위에서 설명된 것들과 같은 하나 또는 그 초과의 방법들을 수행하는 명령들을 포함할 수 있다. 정보 캐리어는 컴퓨터- 또는 기계-판독가능 매체, 이를테면 메모리(704), 저장 디바이스(706), 또는 프로세서(702) 상의 메모리이다.
[0068] 고속 제어기(708)는 컴퓨팅 디바이스(700)에 대한 대역폭-집약적 동작들을 관리하는데 반해, 저속 제어기(712)는 더 낮은 대역폭-집약적 동작들을 관리한다. 기능들의 그러한 할당은 단지 예시적인 것이다. 일 구현에 있어서, 고속 제어기(708)는 메모리(704), 디스플레이(716)(예컨대, 그래픽 프로세서 또는 가속기를 통해), 및 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(710)에 결합된다. 구현에 있어서, 저속 제어기(712)는 저장 디바이스(706) 및 저속 확장 포트(714)에 결합된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트는 예컨대 네트워크 어뎁터를 통해서 하나 또는 그 초과의 입력/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
[0069] 컴퓨팅 디바이스(700)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 표준 서버(720)로서 또는 그러한 서버들의 그룹으로 여러 번 구현될 수 있다. 그것은 또한 랙(rack) 서버 시스템(724)의 이루로서 구현될 수 있다. 또한, 그것은 랩톱 컴퓨터(722)와 같은 개인용 컴퓨터로 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(700)로부터의 컴포넌트들은 디바이스(750)와 같은 모바일 디바이스의 다른 컴포넌트들(미도시)과 결합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(700, 750) 중 하나 또는 그 초과를 포함할 수 있고, 전체적인 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(700, 750)로 구성될 수 있다.
[0070] 컴퓨팅 디바이스(750)는 다른 컴포넌트들 중에서도, 프로세서(752), 메모리(764), 디스플레이(754)와 같은 입력/출력 디바이스, 통신 인터페이스(766), 및 트랜시버(768)를 포함한다. 디바이스(750)는 또한 추가적인 저장부를 제공하기 위해서 마이크로드라이브 또는 다른 디바이스와 같은 저장 디바이스가 제공될 수 있다. 컴포넌트들(750, 752, 764, 754, 766, 및 768) 각각은 다양한 버스들을 사용하여 상호연결되고, 컴포넌트들 중 몇몇은 공통 마더보드 상에 장착되거나 또는 적합할 때 다른 방식들로 장착될 수 있다.
[0071] 프로세서(752)는 메모리(764)에 저장된 명령들을 비롯해서, 컴퓨팅 디바이스(750) 내의 명령들을 실행할 수 있다. 프로세서는 별개의 그리고 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서는, 예컨대, 디바이스(750)의 다른 컴포넌트들의 조정, 이를테면 사용자 인터페이스들의 제어, 디바이스(750)에 의한 애플리케이션들 실행, 및 디바이스(750)에 의한 무선 통신을 제공할 수 있다.
[0072] 프로세서(752)는 디스플레이(754)에 결합된 디스플레이 인터페이스(756) 및 제어 인터페이스(758)를 통해 사용자와 통신할 수 있다. 디스플레이(754)는, 예컨대, TFT LCD(Thin-Film-Transistor Liquid Crystal Display) 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 다른 적합한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(756)는 그래픽 및 다른 정보를 사용자에게 제시하기 위해서 디스플레이(754)를 구동하기 위한 적합한 회로를 포함할 수 있다. 제어 인터페이스(758)는 사용자로부터 커맨드들을 수신하고, 프로세서(752)에 제공하기 위해서 그 커맨드들을 변환할 수 있다. 또한, 다른 디바이스들과의 디바이스(750)의 근거리 통신을 가능하게 하기 위해서 외부 인터페이스(762)가 프로세서(752)와의 통신에 제공될 수 있다. 외부 인터페이스(762)는, 예컨대, 일부 구현들에 있어서의 유선 통신 또는 다른 구현들에 있어서의 무선 통신을 제공할 수 있고, 다수의 인터페이스들이 또한 사용될 수 있다.
[0073] 메모리(764)는 컴퓨팅 디바이스(750) 내에 정보를 저장한다. 메모리(764)는 컴퓨터-판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들, 또는 비-휘발성 메모리 유닛 또는 유닛들 중 하나 또는 그 초과로서 구현될 수 있다. 확장 메모리(774)가 또한 제공되고 확장 인터페이스(772)를 통해 디바이스(750)에 연결될 수 있는데, 그 확장 인터페이스는 예컨대 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있다. 그러한 확장 메모리(774)는 디바이스(750)를 위한 가외 저장 공간을 제공할 수 있거나, 디바이스(750)에 대한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 특히, 확장 메모리(774)는 위에서 설명된 프로세스들을 실행하거나 보충하기 위한 명령들을 포함할 수 있고, 보안 정보 역시 포함할 수 있다. 따라서, 예컨대, 확장 메모리(774)는 디바이스(750)를 위한 보안 모듈로서 제공될 수 있고, 디바이스(750)의 보안 사용을 허용하는 명령들로 프로그래밍될 수 있다. 또한, 보안 애플리케이션들은 추가적인 정보와 함께 SIMM 카드들을 통해 제공될 수 있다.
[0074] 메모리는, 예컨대, 아래에서 논의된 바와 같이 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 구현에 있어서, 컴퓨터 프로그램 제품이 정보 캐리어로 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 경우에 위에서 설명된 것들과 같은 하나 또는 그 초과의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 예컨대 트랜시버(768) 또는 외부 인터페이스(762)를 통해 수용될 수 있는 컴퓨터- 또는 기계-판독가능 매체, 이를테면 메모리(764), 확장 메모리(774), 또는 프로세서(752) 상의 메모리이다.
[0075] 디바이스(750)는, 필요한 경우에 디지털 신호 프로세싱 회로를 포함할 수 있는 통신 인터페이스(766)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(766)는 다양한 모드들 또는 프로토콜들, 이를테면 다른 것들 중에서도 GSM 음성 호들, SMS, EMS, 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS 하에서의 통신들을 제공할 수 있다. 그러한 통신은 예컨대 라디오-주파수 트랜시버(768)를 통해 발생할 수 있다. 게다가, 예컨대 블루투스, WiFi 또는 다른 그러한 트랜시버(미도시)를 사용하는 단거리 통신이 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(770)은, 적합할 때 디바이스(750) 상에서 실행하는 애플리케이션들에 의해 사용될 수 있는 추가적인 내비게이션- 및 위치-관련 무선 데이터를 그 디바이스(750)에 제공할 수 있다.
[0076] 디바이스(750)는 또한 오디오 코덱(760)을 사용하여 청각적으로 통신할 수 있고, 그 오디오 코덱은 사용자로부터 음성 정보를 수신하고 그것을 유용한 디지털 정보로 변환할 수 있다. 오디오 코덱(760)은 마찬가지로 사용자에 대한 청각 사운드를 이를테면 예컨대 디바이스(750)의 핸드셋 내의 스피커를 통해 생성할 수 있다. 그러한 사운드는 음성 텔레폰 호들로부터의 사운드를 포함할 수 있고, 기록된 사운드(예컨대, 음성 메시지들, 음악 파일들 등)를 포함할 수 있으며, 디바이스(750) 상에서 동작하는 애플리케이션들에 의해 생성되는 사운드를 또한 포함할 수 있다.
[0077] 컴퓨팅 디바이스(750)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 셀룰러 텔레폰(780)으로서 구현될 수 있다. 그것은 또한 스마트 폰(782), 개인 정보 단말, 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
[0078] 본원에서 설명된 시스템들 및 기술들의 다양한 구현들이 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC들(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능하고 및/또는 해석가능한 하나 또는 그 초과의 컴퓨터 프로그램들의 구현을 포함할 수 있는데, 그 적어도 하나의 프로그램가능 프로세서는 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그들로 데이터 및 명령들을 전송하기 위해 결합되는 특수용 또는 범용적일 수 있는 프로그램가능 프로세서일 수 있다.
[0079] 이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로서 또한 공지되어 있음)은 프로그램가능 프로세서에 대한 기계 명령들을 포함하고, 고레벨 절차 및/또는 오브젝트-지향 프로그래밍 언어로 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에서 사용되는 바와 같이, "기계-판독가능 매체", "컴퓨터-판독가능 매체"란 용어들은 기계 명령들을 기계-판독가능 신호로 수신하는 기계-판독가능 매체를 비롯해서, 기계 명령들 및/또는 데이터를 프로그래밍가능 프로세서에 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, PLD들(Programmable Logic Devices))을 지칭한다. "기계-판독가능 신호"란 용어는 기계 명령들 및/또는 데이터를 프로그래밍가능 프로세서에 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0080] 사용자와의 상호작용을 제공하기 위해서, 본원에서 설명된 시스템들 및 기술들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에서 구현될 수 있다. 사용자와 상호작용을 제공하기 위해서 다른 종류들의 디바이스들이 역시 사용될 수 있는데; 예컨대, 사용자에게 제공되는 피드백은 임의의 형태의 감지 피드백(예컨대, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백)일 수 있고; 그리고 사용자로부터의 입력은 청각, 스피치 또는 촉각 입력을 비롯한 임의의 형태로 수신될 수 있다.
[0081] 본원에서 설명된 시스템들 및 기술들은, 백 엔드 컴포넌트(예컨대, 데이터 서버로서)를 포함하거나 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나 프론트 엔드 컴포넌트(예컨대, 사용자가 본원에 설명된 시스템들 및 기술들의 구현과 상호작용할 수 있게 하는 웹 브라우저 또는 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터) 또는 그러한 백 엔드, 미들웨어 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템들의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해서 상호연결될 수 있다. 통신 네트워크들의 예들은 LAN("local area network"), WAN("wide area network") 및 인터넷을 포함한다.
[0082] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고, 통신 네트워크를 통해서 통상 상호작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터들 상에서 실행되며 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
[0083] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 다양한 수정들이 본 발명의 사상 및 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다.
[0084] 또한, 도면들에 묘사된 로직 흐름들은 바람직한 결과들을 달성하기 위해서 도시된 특정 순서 또는 순차적인 순서를 필요로 하지 않는다. 또한, 다른 단계들이 제공될 수 있거나, 단계들이 설명된 흐름들로부터 제거될 수 있고, 다른 컴포넌트들이 설명된 시스템들에 추가되거나 설명된 시스템들로부터 제거될 수 있다. 그에 따라서, 다른 구현들은 아래의 청구항들의 범위 내에 있다.

Claims (20)

  1. 방법으로서,
    웹 퍼블리셔(web publisher)와 연관된 컴퓨팅 디바이스의 마이크로프로세서를 사용하여, 웹 페이지를 포함하는 콘텐츠를 제공하는 단계;
    상기 웹 퍼블리셔에 의해서, 제 2 컴퓨팅 디바이스에서 상기 콘텐츠를 렌더링하는(rendering) 웹 브라우저와 연관된 적어도 하나의 확장을 포함하는 리스트 및 상기 콘텐츠에 기초하여 생성되는 키에 액세스하는 단계 ― 상기 키는 상기 제공 단계 이후의 특정 시간에 생성됨 ―; 및
    상기 키와 예상 값 간의 차이를 결정하기 위해서 상기 키와 연관된 값을 상기 예상 값에 비교하는 단계를 포함하는, 방법.
  2. 제 1항에 있어서,
    상기 비교에 기초하여, 상기 콘텐츠를 수정한 특정 확장을 상기 적어도 하나의 확장의 리스트로부터 결정하는 단계를 더 포함하는, 방법.
  3. 제 2항에 있어서,
    상기 결정 단계는 복수의 상이한 브라우저들로부터의 복수의 키들의 상기 예상 값에 대한 반복적 비교들을 사용하여, 상기 웹 퍼블리셔와 연관된 컴퓨팅 디바이스의 마이크로프로세서에 의해서 수행되는, 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 리스트는 상기 웹 브라우저에 설치된 모든 확장들을 포함하는, 방법.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 웹 퍼블리셔에 의해서 식별되는 특정 시간에 상기 웹 브라우저 상에서 렌더링되고 있는 상기 콘텐츠를 잠금하는 단계를 더 포함하는, 방법.
  6. 제 5항에 있어서,
    상기 잠금 단계는 상기 웹 브라우저에 의해서 수행되는, 방법.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    상기 웹 브라우저를 사용하여 상기 키를 생성하는 단계를 더 포함하는, 방법.
  8. 제 7항에 있어서,
    상기 콘텐츠의 체크섬(checksum)을 사용하여 상기 키를 생성하는 단계를 더 포함하는, 방법.
  9. 제 7항에 있어서,
    트레이스(trace)를 사용하여 상기 키를 생성하는 단계를 더 포함하는, 방법.
  10. 제 7항에 있어서,
    상기 웹 페이지의 문서 객체 모델(document object model)의 텍스트 파일 버전에 기초하여 상기 키를 생성하는 단계를 더 포함하는, 방법.
  11. 제 1항 내지 제 10항 중 어느 한 항에 있어서,
    상기 키를 사용하여 상기 콘텐츠를 재생성하는 단계를 더 포함하는, 방법.
  12. 시스템으로서,
    명령들의 세트를 저장하는 메모리; 및
    상기 명령들의 세트를 실행하도록 구성된 프로세서를 포함하고, 상기 명령들은 상기 시스템으로 하여금,
    웹 페이지를 포함하는 콘텐츠를 제공하게 하고;
    컴퓨팅 디바이스에서 상기 콘텐츠를 렌더링하는 웹 브라우저와 연관된 적어도 하나의 확장을 포함하는 리스트 및 상기 콘텐츠에 기초하여 생성되는 키를 수신하게 하고 ― 상기 키는 특정 시간에 생성됨 ―;
    상기 키와 예상 값 간의 차이를 결정하기 위해서 상기 키와 연관된 값을 상기 예상 값에 비교하게 하며; 그리고
    상기 차이를 사용하여 상기 리스트로부터 특정 확장을 결정하게 하는, 시스템.
  13. 제 12항에 있어서,
    상기 시스템은 복수의 키들의 복수의 예상 값들에 대한 반복적 비교들을 사용하여 상기 특정 확장을 결정하는, 시스템.
  14. 제 12항 또는 제 13항 중 어느 한 항에 있어서,
    상기 리스트는 상기 웹 브라우저에 설치된 모든 확장들을 포함하는, 시스템.
  15. 제 12항 또는 제 14항 중 어느 한 항에 있어서,
    상기 프로세서는 상기 시스템으로 하여금 웹 퍼블리셔에 의해 식별되는 특정 시간에 상기 웹 브라우저 상에서 렌더링되고 있는 상기 콘텐츠를 잠금하게 하기 위한 명령들의 세트를 실행하도록 추가로 구성되는, 시스템.
  16. 제 12항 또는 제 15항 중 어느 한 항에 있어서,
    상기 키는 상기 웹 브라우저에 의해서 생성되는, 시스템.
  17. 명령들을 포함하는 비-일시적 컴퓨터 판독가능 매체로서,
    상기 명령들은 실행될 때 컴퓨터 시스템의 마이크로프로세서로 하여금,
    웹 페이지를 포함하는 콘텐츠를 제공하게 하고;
    컴퓨팅 디바이스에서 상기 콘텐츠를 렌더링하는 웹 브라우저와 연관된 적어도 하나의 확장을 포함하는 리스트 및 상기 콘텐츠에 기초하여 생성되는 키를 수신하게 하고 ― 상기 키는 특정 시간에 생성됨 ―;
    상기 키와 예상 값 간의 차이를 결정하기 위해서 상기 키와 연관된 값을 상기 예상 값에 비교하게 하며; 그리고
    상기 키 및 상기 예상 값을 사용하여, 상기 리스트로부터 특정 확장을 결정하게 하는, 비-일시적 컴퓨터 판독가능 매체.
  18. 제 17항에 있어서,
    상기 특정 확장은 상기 콘텐츠가 상기 웹 브라우저를 사용하여 렌더링되고 있었을 때 상기 콘텐츠를 수정한, 비-일시적 컴퓨터 판독가능 매체.
  19. 제 17항 또는 제 18항 중 어느 한 항에 있어서,
    상기 리스트는 상기 컴퓨팅 디바이스에서 상기 콘텐츠를 렌더링하는 상기 웹 브라우저와 연관된 모든 확장들을 포함하는, 비-일시적 컴퓨터 판독가능 매체.
  20. 제 17항 내지 제 19항 중 어느 한 항에 있어서,
    상기 명령들은 추가로 상기 컴퓨터 시스템으로 하여금 상기 콘텐츠를 잠금하기 위한 특정 시간을 상기 웹 브라우저에 제공하게 하는, 비-일시적 컴퓨터 판독가능 매체.
KR1020167029351A 2014-03-26 2015-03-25 웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템 KR101959428B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,013 US9930095B2 (en) 2014-03-26 2014-03-26 System for managing extension modifications to web pages
US14/226,013 2014-03-26
PCT/US2015/022467 WO2015148651A1 (en) 2014-03-26 2015-03-25 System for managing extension modifications to web pages

Publications (2)

Publication Number Publication Date
KR20160135810A true KR20160135810A (ko) 2016-11-28
KR101959428B1 KR101959428B1 (ko) 2019-03-18

Family

ID=52829376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167029351A KR101959428B1 (ko) 2014-03-26 2015-03-25 웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템

Country Status (7)

Country Link
US (1) US9930095B2 (ko)
EP (1) EP3123361B1 (ko)
JP (1) JP6318266B2 (ko)
KR (1) KR101959428B1 (ko)
CN (1) CN106462590B (ko)
AU (1) AU2015236109B2 (ko)
WO (1) WO2015148651A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9532222B2 (en) 2010-03-03 2016-12-27 Duo Security, Inc. System and method of notifying mobile devices to complete transactions after additional agent verification
US9544143B2 (en) 2010-03-03 2017-01-10 Duo Security, Inc. System and method of notifying mobile devices to complete transactions
US9467463B2 (en) 2011-09-02 2016-10-11 Duo Security, Inc. System and method for assessing vulnerability of a mobile device
WO2015017587A1 (en) * 2013-07-30 2015-02-05 FSLogix, Inc. Managing configurations of computing terminals
US9930095B2 (en) * 2014-03-26 2018-03-27 Google Llc System for managing extension modifications to web pages
ES2758755T3 (es) * 2015-06-01 2020-05-06 Duo Security Inc Método para aplicar normas de salud de punto final
US10666763B2 (en) * 2016-09-07 2020-05-26 Adobe Inc. Automatic integrity checking of content delivery network files
US20180143949A1 (en) * 2016-11-18 2018-05-24 Adobe Systems Incorporated Web Content Extension System and Platform
US10412113B2 (en) 2017-12-08 2019-09-10 Duo Security, Inc. Systems and methods for intelligently configuring computer security
US10628513B2 (en) * 2018-04-24 2020-04-21 Microsoft Technology Licensing, Llc Providing isolated extensibility for webpages with a unified manifest and omni-accessible platform script
US10938879B2 (en) * 2018-06-04 2021-03-02 Akamai Technologies, Inc. Third-party Ad acceleration
CN110851754A (zh) * 2018-07-27 2020-02-28 北京京东尚科信息技术有限公司 网页访问方法及系统、计算机系统和计算机可读存储介质
US10740103B2 (en) * 2018-10-26 2020-08-11 Google Llc Probabilistic techniques for formatting digital components
US11538038B2 (en) * 2019-05-31 2022-12-27 Paypal, Inc. Systems and methods for remote detection of computer device attributes
US11321101B2 (en) 2019-07-10 2022-05-03 Vmware, Inc. Deployment and isolation of plugins in a virtualized computing environment
US11153295B2 (en) * 2019-08-28 2021-10-19 Vmware, Inc. Authentication of plugins in a virtualized computing environment
US11295007B2 (en) * 2019-12-03 2022-04-05 Tableau Software, LLC Sandboxed application extensions
CN111666585B (zh) * 2020-04-16 2023-08-18 北京百度网讯科技有限公司 子应用访问的方法、装置、电子设备以及可读存储介质
CN111639285B (zh) * 2020-06-01 2022-08-09 黎明职业大学 一种关联浏览器中标签页、书签以及书签夹的信息处理方法
CN112363784A (zh) * 2020-10-26 2021-02-12 深圳市明源云科技有限公司 在应用程序中显示窗口的方法和装置
US11792234B1 (en) 2022-11-11 2023-10-17 Netskope, Inc. Browser extension identification and isolation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271511A1 (en) * 2008-04-29 2009-10-29 Zahur Peracha Automatic context-based baselining for transactions
US20110247071A1 (en) * 2010-04-06 2011-10-06 Triumfant, Inc. Automated Malware Detection and Remediation
US8196112B1 (en) * 2008-02-15 2012-06-05 Amazon Technologies, Inc. Systems and methods for testing widgets in computer environments
US20130055340A1 (en) * 2011-08-26 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991399A (en) * 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6356951B1 (en) * 1999-03-01 2002-03-12 Sun Microsystems, Inc. System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US6477550B1 (en) * 1999-03-16 2002-11-05 Mcafee.Com Corporation Method and system for processing events related to a first type of browser from a second type of browser
US7155737B1 (en) * 1999-05-11 2006-12-26 Entrust, Inc. Integrating user specified extensions into an information access system
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email
US7506022B2 (en) * 2001-05-04 2009-03-17 Microsoft.Corporation Web enabled recognition architecture
US20030142560A1 (en) * 2001-12-07 2003-07-31 Pioneer Corporation Data recording medium, reproduction apparatus, recording apparatus, reproducing method, recording method, computer-readable recorded medium in which reproducing program is recorded, and computer-readable recorded medium in which recording program is recorded
JP2003296192A (ja) 2002-04-04 2003-10-17 Certrust Kk 電子署名・電子文書保管システム
US20050154887A1 (en) * 2004-01-12 2005-07-14 International Business Machines Corporation System and method for secure network state management and single sign-on
US7653712B1 (en) * 2004-09-30 2010-01-26 Emc Corporation Methods and apparatus for processing configuration data
JP4788212B2 (ja) 2005-07-13 2011-10-05 富士ゼロックス株式会社 デジタル署名プログラム及びデジタル署名システム
SG139580A1 (en) * 2006-07-20 2008-02-29 Privylink Pte Ltd Method for generating cryptographic key from biometric data
US7963839B2 (en) * 2006-09-19 2011-06-21 Mudalla Technology, Inc. Regulated gaming exchange
JP4224095B2 (ja) * 2006-09-28 2009-02-12 株式会社東芝 情報処理装置、情報処理プログラムおよび情報処理システム
US20090019525A1 (en) * 2007-07-13 2009-01-15 Dachuan Yu Domain-specific language abstractions for secure server-side scripting
US7975308B1 (en) * 2007-09-28 2011-07-05 Symantec Corporation Method and apparatus to secure user confidential data from untrusted browser extensions
JP2009146235A (ja) 2007-12-16 2009-07-02 Softbank Corp 広告システム及び広告方法
US8225097B2 (en) * 2008-01-28 2012-07-17 Seagate Technology Llc Anchor point-based digital content protection
JP2011253211A (ja) 2008-09-25 2011-12-15 Access Co Ltd アプリケーション制御方法、アプリケーション制御プログラム、サーバ装置、クライアント装置、およびアプリケーション制御システム
KR101074624B1 (ko) 2008-11-03 2011-10-17 엔에이치엔비즈니스플랫폼 주식회사 브라우저 기반 어뷰징 방지 방법 및 시스템
CN101546334A (zh) * 2009-04-23 2009-09-30 腾讯科技(深圳)有限公司 在浏览器中提示网页信息搜索结果的方法、装置及浏览系统
US20100318964A1 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis
JP5386295B2 (ja) 2009-10-15 2014-01-15 シャープ株式会社 広告表示システムおよび広告表示方法
EP2367128B1 (de) * 2010-03-16 2015-10-14 Stepover GmbH Verfahren und Vorrichtung zur elektronischen Signatur
US10580051B2 (en) * 2010-05-18 2020-03-03 Google Llc Background element associated with an application installed in a browser application
US8788849B2 (en) * 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US9646100B2 (en) * 2011-03-14 2017-05-09 Verisign, Inc. Methods and systems for providing content provider-specified URL keyword navigation
US8638935B2 (en) * 2012-01-12 2014-01-28 Apple Inc. System and method for key space division and sub-key derivation for mixed media digital rights management content
US9135445B2 (en) 2012-03-19 2015-09-15 Google Inc. Providing information about a web application or extension offered by website based on information about the application or extension gathered from a trusted site
KR101369253B1 (ko) 2012-05-10 2014-03-06 주식회사 안랩 웹 페이지의 정보 변조 차단 장치 및 방법
US20140047359A1 (en) * 2012-08-08 2014-02-13 Arnstein Osnes Teigene Mechanism for adding new search modes to user agent
US8977707B2 (en) * 2012-09-20 2015-03-10 International Business Machines Corporation Delivering offers
US9355223B2 (en) * 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US9853956B2 (en) * 2014-02-11 2017-12-26 Texas Instruments Incorporated JSON encryption and hashing with indication added to key-value
US9930095B2 (en) 2014-03-26 2018-03-27 Google Llc System for managing extension modifications to web pages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196112B1 (en) * 2008-02-15 2012-06-05 Amazon Technologies, Inc. Systems and methods for testing widgets in computer environments
US20090271511A1 (en) * 2008-04-29 2009-10-29 Zahur Peracha Automatic context-based baselining for transactions
US20110247071A1 (en) * 2010-04-06 2011-10-06 Triumfant, Inc. Automated Malware Detection and Remediation
US20130055340A1 (en) * 2011-08-26 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, information processing method, and computer program product

Also Published As

Publication number Publication date
EP3123361A1 (en) 2017-02-01
US9930095B2 (en) 2018-03-27
US20150281318A1 (en) 2015-10-01
WO2015148651A1 (en) 2015-10-01
EP3123361B1 (en) 2021-05-05
CN106462590B (zh) 2020-02-07
JP2017513129A (ja) 2017-05-25
KR101959428B1 (ko) 2019-03-18
AU2015236109A1 (en) 2016-09-29
JP6318266B2 (ja) 2018-04-25
AU2015236109B2 (en) 2017-12-07
CN106462590A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
KR101959428B1 (ko) 웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템
US11120401B2 (en) User generated content publishing system
US9916293B2 (en) Module specification for a module to be incorporated into a container document
US9692787B1 (en) System for controlling browser extensions
JP5876043B2 (ja) 広告プライバシ管理
JP5237272B2 (ja) ウェブビーコンの認証方法とそのシステム
US8056092B2 (en) Method and apparatus for widget-container hosting and generation
US7730082B2 (en) Remote module incorporation into a container document
US20080082627A1 (en) Method and Apparatus for Widget Container/Widget Tracking and Metadata Manipulation
US20070136201A1 (en) Customized container document modules using preferences
KR20110009675A (ko) 웹 브라우저 상의 광고 표시를 선택적으로 보장하는 방법 및 시스템
US9183002B2 (en) Method and system for providing a widget for displaying multimedia content
Love Progressive Web Application Development by Example: Develop fast, reliable, and engaging user experiences for the web
US9402112B1 (en) Two-stage playback: verifying user intent to watch an embedded video
US20230198743A1 (en) Blockchain ledger growth management
Sfetcu Web design & development
US20170142063A1 (en) Web content display system and method
CN116954788A (zh) 信息管理方法、装置、设备、介质及程序产品
Marshall et al. Creating Offline Web Applications Using HTML5
Marshall Creating offline web applications using HTML5: a thesis presented in partial fulfillment of the requirements for the degree of Master of Information Sciences in Computer Science,[Massey University, Albany, New Zealand]
Madusanka Visualforce developer's guide
Convers Grays 2.0: A Web 2.0 on-line Medical Social Bookmarking system using the Google App Engine and Django

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant