本申請要求2014年3月26日提交的、名為“SYSTEM FOR MANAGING EXTENSION MODIFICATIONS TO WEB PAGES(用于管理對網(wǎng)頁的擴展修改的系統(tǒng))”的美國非臨時專利申請?zhí)?4/226,013的優(yōu)先權(quán)并且為其繼續(xù)申請,其公開內(nèi)容通過引用全部并入本文。
技術(shù)領(lǐng)域
本申請一般地涉及Web技術(shù),更具體地涉及Web瀏覽器擴展和網(wǎng)頁。
背景技術(shù):
在支持Web的計算設(shè)備上實現(xiàn)的Web瀏覽器允許用戶訪問所有類型的內(nèi)容。Web瀏覽器被配置為讀取程序性代碼并且將該代碼渲染為網(wǎng)頁,其可以包括渲染包含在各種媒體文件(例如圖像、視頻、和音頻文件)中的音頻和視覺內(nèi)容,以及執(zhí)行在程序性代碼中定義的其他功能。網(wǎng)頁通常使用編程語言來被實現(xiàn),所述編程語言除了多種其他可用的編程語言外還諸如HTML(包括HTML5)、CSS、和JavaScript。
一些瀏覽器允許用戶向瀏覽器安裝附加件或擴展,其中這樣的擴展向瀏覽器添加功能并且作為瀏覽器的整合部分操作。瀏覽器擴展可以使用程序性代碼實現(xiàn),該程序性代碼使用與用于實現(xiàn)網(wǎng)頁的相同編程語言——諸如JavaScript編寫。從瀏覽器角度看,一旦安裝了擴展,其就有效地充當(dāng)作為瀏覽器的整合部分的網(wǎng)頁。通過安裝他或她感興趣的擴展,用戶能夠有效地創(chuàng)建包括他們選擇安裝的擴展的功能的定制瀏覽器體驗。
在當(dāng)前的互聯(lián)網(wǎng)系統(tǒng)中,確保所意圖的內(nèi)容遞送(Content Delivery)的可靠性、安全性、和完整性具有挑戰(zhàn)性。發(fā)布者網(wǎng)站已經(jīng)嘗試在不同程度上成功地建立了一定程度的可計量性、可預(yù)見性、和可信內(nèi)容發(fā)布。然而,第三方瀏覽器擴展有能力以用戶不清楚并且對涉及的各方有潛在破壞性的方式潛入該可信關(guān)系。今天,許多瀏覽器允許創(chuàng)建和安裝能夠改變?yōu)g覽器、計算機系統(tǒng)、或內(nèi)容或者與其交互的擴展,在一些情況下,修改內(nèi)容是某些方不允許或不期望的方式,諸如廣告攔截器、廣告注入器、或各種惡意軟件。
這些第三方擴展改變Web發(fā)布者和用戶之間的直接關(guān)系,其如果被提供有恰當(dāng)?shù)目刂?,能夠?qū)τ陔p方有積極作用。然而,如果控制不到位,則許多發(fā)布者和內(nèi)容提供者會由于關(guān)閉的應(yīng)用或付費墻(paywall)而回避開放的互聯(lián)網(wǎng),使用戶更加難以找到和享受有用內(nèi)容。Web發(fā)布者難以知道他們的內(nèi)容的發(fā)布是否與Web發(fā)布者使用條件條款相符。此外,當(dāng)?shù)谌綌U展能夠修改內(nèi)容時,Web發(fā)布者難以控制提供給用戶的該內(nèi)容、效能、或功能。
技術(shù)實現(xiàn)要素:
根據(jù)一個大體方面,一種方法包括使用與Web發(fā)布者相關(guān)聯(lián)的計算設(shè)備的微處理器來提供包括網(wǎng)頁的內(nèi)容。該方法包括由Web發(fā)布者訪問包括與在第二計算設(shè)備處渲染內(nèi)容的Web瀏覽器相關(guān)聯(lián)的至少一個擴展的列表、和基于該內(nèi)容所生成的關(guān)鍵字,該關(guān)鍵字在所述提供后的特定時間被生成。該方法包括將與關(guān)鍵字相關(guān)聯(lián)的值與預(yù)期值進行比較以確定該關(guān)鍵字與該預(yù)期值之間的差。
實施方式可以單獨或相互組合地包括以下特征中的一個或多個。該方法可以包括基于所述比較來由至少一個擴展的所述列表確定修改了所述內(nèi)容的特定擴展。該確定可以由與所述Web發(fā)布者相關(guān)聯(lián)的所述計算設(shè)備的所述微處理器使用來自多個不同瀏覽器的多個關(guān)鍵字與預(yù)期值的迭代比較來執(zhí)行。該列表可以包括安裝在所述Web瀏覽器中的所有擴展。該方法可以包括在由所述Web發(fā)布者標(biāo)識的特定時間鎖定在所述Web瀏覽器上正在渲染的內(nèi)容。所述鎖定可以由Web瀏覽器來執(zhí)行。該方法可以包括使用所述Web瀏覽器生成所述關(guān)鍵字。該方法可以包括使用所述內(nèi)容的校驗和來創(chuàng)建關(guān)鍵字。該方法可以包括使用蹤跡(trace)來創(chuàng)建關(guān)鍵字。該方法可以包括基于所述網(wǎng)頁的文檔對象模型的文本文件版本來創(chuàng)建所述關(guān)鍵字。該方法可以包括使用所述關(guān)鍵字來重新創(chuàng)建內(nèi)容。特定擴展可以在內(nèi)容被使用Web瀏覽器來渲染時修改該內(nèi)容。
其他實施方式包括在計算機存儲設(shè)備上編碼的、被配置為執(zhí)行方法的動作的對應(yīng)的系統(tǒng)、裝置、和計算機程序。
本文所述的主題的一個或多個實施方式可以提供一個或多個下述優(yōu)點。Web發(fā)布者能夠確定和控制向用戶提供的內(nèi)容、效能、或功能。在附圖和以下描述中闡述一個或多個實施方式的細節(jié)。其他特征將從說明書和附圖以及權(quán)利要求書而顯而易見。
附圖說明
圖1是圖示實現(xiàn)瀏覽器擴展的示例系統(tǒng)的框圖。
圖2是Web瀏覽器中的瀏覽器擴展的示例的框圖。
圖3是瀏覽器擴展的示例分類和操作的框圖。
圖4是Web瀏覽器的示例用戶界面的圖。
圖5是圖示根據(jù)示例實施方式的、用于檢測已經(jīng)作出對內(nèi)容的修改的瀏覽器擴展的過程的流程圖。
圖6是圖示根據(jù)示例性實施方式的、用于檢測已經(jīng)對內(nèi)容作出修改的瀏覽器擴展的另一過程的流程圖。
圖7是圖示根據(jù)示例性實施方式的、能夠被用來實現(xiàn)此處所述的技術(shù)的計算設(shè)備和移動計算設(shè)備的圖。
各附圖中相似的附圖標(biāo)記指示相似的元件。
具體實施方式
在各個示例中,Web瀏覽器可以包括或被配置為與一個或多個瀏覽器擴展交互。在該場境中,“瀏覽器擴展”可以包括一個或多個網(wǎng)頁,其一起被封裝或分組成可定義整體并且被配置來擴展Web瀏覽器的功能。如本文所述,“瀏覽器擴展”是能夠修改和增強Web瀏覽器的功能的小軟件程序。它們可以使用Web技術(shù)——諸如HTML、JavaScript、和CSS來編寫。擴展可以具有很少的用戶界面或不具有用戶界面。在一些實施方式中,擴展可以提供可以修改瀏覽器的“chrome”的小用戶界面圖標(biāo)或其他用戶界面,其在此處被定義為包括在瀏覽器中顯示的網(wǎng)頁外的區(qū)域(諸如Web瀏覽器窗口的邊界,其包括窗口框架、菜單、工具欄、和滾動條)。選擇圖標(biāo)或其他用戶界面可以激活瀏覽器內(nèi)的擴展的功能。
擴展可以修改網(wǎng)頁,例如攔截廣告。在一些情況下,惡意擴展可能違背Web發(fā)布者的意圖而將內(nèi)容、非法活動、或廣告注入網(wǎng)頁,由此損害Web發(fā)布者的品牌。此處被稱作Web發(fā)布者的意指與網(wǎng)頁相關(guān)聯(lián)的內(nèi)容提供者,作為示例諸如在線報紙或在線商店。
因此,在一些情況下,訪問網(wǎng)站的用戶可能具有看起來來自可信Web發(fā)布者的系統(tǒng)的內(nèi)容(文章、文本、圖像、視頻、鏈接、廣告等),但實際上該內(nèi)容已經(jīng)在用戶或Web發(fā)布者不知曉的情況下被第三方內(nèi)容替換。在一些情況下,廣告主在為未真正被看到的廣告而被收費時,還能夠損失收入。例如,擴展可以去除或替換廣告,或可以修改網(wǎng)頁上的元素的順序。注入廣告的擴展會打亂頁面上的元素而以Web發(fā)布者的內(nèi)容為代價來確保它們的廣告出現(xiàn)在首要位置。
本文所述的系統(tǒng)和方法為Web發(fā)布者提供使得能夠?qū)τ蒞eb發(fā)布者提供的網(wǎng)頁的擴展行為進行管理的方法。
圖1是實現(xiàn)瀏覽器擴展的示例系統(tǒng)的框圖。在圖1的示例中,本地計算設(shè)備102被圖示為與遠程Web發(fā)布者104通信以便使用顯示器106來提供瀏覽器窗口108,其包含在遠程Web發(fā)布者104處存儲的頁面110。例如,Web發(fā)布者104可以是諸如服務(wù)器的計算設(shè)備。
本地計算設(shè)備102實際上可以表示可能被配置來執(zhí)行瀏覽器應(yīng)用112并且與Web發(fā)布者104通信的任何計算設(shè)備。例如,本地計算設(shè)備102可以包括:標(biāo)準(zhǔn)臺式或個人計算設(shè)備,膝上型、筆記本、或上網(wǎng)本計算機,平板計算機,或智能電話,電視,或者其他移動計算設(shè)備。這樣的計算設(shè)備以及其他計算設(shè)備可以被配置為以各種方式通過一個或多個計算機網(wǎng)絡(luò)——諸如公用互聯(lián)網(wǎng)、專用內(nèi)聯(lián)網(wǎng)、或其他網(wǎng)絡(luò)——來訪問Web發(fā)布者104。因此,顯示器106可以被理解為實際上表示任何類型的顯示器,例如監(jiān)視器、觸摸屏、或者其他任何類型的視覺或聽覺顯示器。
在下面的示例中,一般假設(shè)本地計算設(shè)備102和瀏覽器應(yīng)用112通常使用用于識別、訪問、和渲染例如來自由Web發(fā)布者104表示的Web服務(wù)器的頁面110的協(xié)議,來通過互聯(lián)網(wǎng)與Web發(fā)布者104通信。然而,將認識到僅為了清楚和簡明起見提供了這樣的示例,并且如上文提及的,這樣的示例不旨在限制本地計算設(shè)備102可以獲得、處理、或提供與瀏覽器應(yīng)用112和瀏覽器窗口108相關(guān)聯(lián)的內(nèi)容的各種方式。
因此,在剛剛提及的示例的類型中,一般可以假設(shè)頁面110表示可通過公用互聯(lián)網(wǎng)獲得的許多類型的網(wǎng)頁中的任何一個。例如,在簡單的場景下,頁面110可以表示基本上靜態(tài)的網(wǎng)頁,其包括文本、聲音、圖像、廣告、或者本地計算設(shè)備102的用戶所期望并且可以在瀏覽器窗口108內(nèi)顯示的其他內(nèi)容。在其他示例中,頁面110可以包括許多類型的動態(tài)或交互式內(nèi)容,所述內(nèi)容通??梢栽跒g覽器窗口108的場境內(nèi)由用戶操縱。在許多場景下,頁面110和/或相關(guān)聯(lián)的可執(zhí)行代碼可以被理解為表示可以在Web發(fā)布者104處部分或全部執(zhí)行的應(yīng)用(例如,可以利用Web發(fā)布者104的處理器、存儲器、和其他硬件/軟件資源),同時經(jīng)由瀏覽器窗口108來向用戶提供相關(guān)聯(lián)的功能和特征(以及可能在本地計算設(shè)備102處本地至少部分地本地執(zhí)行)。如剛剛所提及的,這樣的網(wǎng)頁和相關(guān)聯(lián)的功能和應(yīng)用可使用各種常規(guī)編程語言和技術(shù)來實現(xiàn),所述常規(guī)編程語言和技術(shù)諸如:例如超文本標(biāo)記語言(HTML)、異步JavaScriptTM(AJAX)、可擴展標(biāo)記語言(XML)、JavaScriptTM、JavaScript對象表示法(JSON)、以及可以被執(zhí)行的許多其他類型的代碼。
在圖1的示例中,Web發(fā)布者104處的內(nèi)容96包括頁面110,其被圖示為包括頁面模型114或與其相關(guān)聯(lián)。一般而言,頁面模型114提供針對編寫頁面110的編程語言來定義頁面110的結(jié)構(gòu)、內(nèi)容、和外觀的數(shù)據(jù)結(jié)構(gòu)。
在此處所述的特定示例中,頁面模型114可以表示文檔對象模型(DOM)數(shù)據(jù)結(jié)構(gòu)。如剛剛所提及的,這樣的DOM表示本身表示頁面110的源代碼(例如HTML)的數(shù)據(jù)結(jié)構(gòu)(通常,樹狀數(shù)據(jù)結(jié)構(gòu))。
Web發(fā)布者104還可以包括可以將內(nèi)容96提供給諸如本地計算設(shè)備102的其他計算機的內(nèi)容管理器98。在一些實施方式中,內(nèi)容管理器98還可以被用來定義Web發(fā)布者104能夠與瀏覽器或應(yīng)用環(huán)境交換的規(guī)則111。使用內(nèi)容管理器98和規(guī)則111,Web發(fā)布者104可以對擴展或其他應(yīng)用的許可或權(quán)限進行實時地應(yīng)用、控制、監(jiān)視、審核、提供、或保留。作為一個示例,在線報紙可以在向用戶提供基于可能有權(quán)控制該內(nèi)容的應(yīng)用來提供的內(nèi)容96之前,對其進行保留或修改。在一些實施方式中,如下文更詳細所討論的,Web發(fā)布者可以訪問某些基于擴展的修改或者與網(wǎng)頁的交互的審核記錄,其能夠被用于核算或其他目的。例如,審核記錄可以作為數(shù)據(jù)集94來被存儲在數(shù)據(jù)庫中。如下文關(guān)于圖6所更詳細討論的,數(shù)據(jù)集94還可以存儲其他值,諸如指示對內(nèi)容96的修改的值。在各個實施方式中,數(shù)據(jù)集94可以離Web發(fā)布者104遠程地來被存儲并且Web發(fā)布者可以例如使用如圖1所示的處理器92來按需訪問數(shù)據(jù)集94。處理器92可以是如關(guān)于圖7更詳細所述的微處理器。規(guī)則111也可以被存儲在數(shù)據(jù)庫或其他數(shù)據(jù)存儲中。在一些情況下,存儲規(guī)則111可以離Web發(fā)布者104遠程地來被存儲,并且Web發(fā)布者可以例如使用處理器92來按需訪問規(guī)則111。
例如,規(guī)則111可以包括使得能夠?qū)U展行為進行管理的規(guī)則。示例規(guī)則可以允許瀏覽器擴展重新格式化網(wǎng)頁、保留不同種類的信息而不渲染,或以不同于由網(wǎng)頁起初提供的順序來向用戶顯示信息。另一示例規(guī)則可以控制允許哪些第三方合作人在網(wǎng)頁上操作。另一示例規(guī)則可以允許擴展作出對網(wǎng)頁的元素的變更或替代的選擇。可以以每域、每網(wǎng)站、每頁面、每文章、或者以其他方式來限定所述變更或替代。作為另一示例,規(guī)則可以給予多個Web發(fā)布者一種方式來限定哪些內(nèi)容能夠與其他發(fā)布者共同分發(fā)(co-deliver)。例如,在線報紙和在線雜志能夠協(xié)作來使得來自在線報紙的新聞版塊能夠與在線雜志的好萊塢版塊一起分發(fā)。
如此處所述,瀏覽器擴展可以在系統(tǒng)100中被利用來提供附加特征或功能性,所述特征或功能性與瀏覽器應(yīng)用112相關(guān)聯(lián),并且由此與瀏覽器窗口108相關(guān)。擴展的功能可以包括但不限于觀察和修改網(wǎng)絡(luò)流量以及修改頁面110的頁面模型114。其他功能可以包括與用戶交互,以及向瀏覽器添加按鈕和其他用戶界面元素并且處理它們與用戶的交互。
如可以從以上描述所理解的,由擴展文件122定義的擴展通常指代瀏覽器擴展、附加件、插件、Web應(yīng)用(Web app)、或者被設(shè)計成擴大瀏覽器應(yīng)用112在提供瀏覽器窗口108或頁面110中的外觀或功能的任何其他程序代碼。擴展文件122可以專門執(zhí)行對與網(wǎng)頁110相關(guān)的網(wǎng)絡(luò)請求的修改,所述請求諸如取消對于個體資源的請求、重定向?qū)τ诰W(wǎng)頁110或所引用資源的請求、修改與網(wǎng)頁110相關(guān)的Web請求的請求和響應(yīng)報頭,或貢獻證明(authentication)信息以檢索網(wǎng)頁110。例如,在一些情況下,擴展可以利用其他廣告內(nèi)容替換頁面110中的廣告內(nèi)容121,或可以攔截廣告內(nèi)容121的出現(xiàn)或顯示。廣告內(nèi)容121是已經(jīng)向Web發(fā)布者付費以顯示的內(nèi)容。例如,如果廣告內(nèi)容121被通過劫持擴展被替換為其他內(nèi)容,則廣告主將不再希望通過Web發(fā)布者做廣告,或者Web發(fā)布者的收入可能基于降低的廣告查看量而減少。
在圖1的系統(tǒng)100的簡化示例中,擴展文件122被圖示為被本地地存儲在本地計算設(shè)備102上。例如,本地計算設(shè)備102的用戶可以編程和存儲擴展文件122以供瀏覽器應(yīng)用112使用。然而,在附加或替選示例中,可以認識到可以遠程地訪問擴展文件122中的一些或全部。例如,在許多情況下,特定擴展可能被封裝在單個文件夾或存檔中,其之后可以由瀏覽器應(yīng)用122訪問。如圖所示,例如,擴展文件122的提供者和/或分發(fā)者(在圖1的示例中未具體示出)可以構(gòu)建和封裝擴展文件122,并且系統(tǒng)100的用戶由此下載和安裝期望的擴展,包括在本地計算設(shè)備102處訪問、下載、和安裝擴展文件122。
瀏覽器應(yīng)用112可以包括渲染引擎126,其被用來將頁面110的頁面模型114轉(zhuǎn)換為能夠在瀏覽器窗口108中顯示給用戶的信息。渲染引擎126可以包括驗證引擎140,其被用來解析由框架144定義的元標(biāo)簽。根據(jù)發(fā)布者定義的元標(biāo)簽,驗證引擎140可以授予適當(dāng)擴展某些權(quán)利來修改頁面110或與其相接口。驗證引擎140可以實時地執(zhí)行這些動作。根據(jù)發(fā)布者定義的元標(biāo)簽,驗證引擎140可以撤回某些擴展修改頁面110或與其相接口的特權(quán)。在一些實施方式中,驗證引擎140可以向擴展所有者呈現(xiàn)與Web發(fā)布者104相關(guān)聯(lián)的合同條款,以及在擴展所有者接受提議的合同條款后,驗證引擎140根據(jù)生效的合同的條款來授予該擴展修改頁面110或與其相接口的特權(quán)。在一些實施方式中,作為示例,驗證引擎140可以將交易以編程方式記錄在服務(wù)器——諸如服務(wù)器170處,向擴展所有者開賬單,并且以適當(dāng)間隔補償發(fā)布者。
瀏覽器應(yīng)用112可以包括可以負責(zé)安裝、加載、和執(zhí)行擴展的擴展管理器128。其可以負責(zé)處理擴展122與渲染引擎126之間的通信。正因如此,其可以將事件調(diào)度到某些擴展122、收集它們對web請求的期望的修改、將它們發(fā)送到驗證引擎140、以及將結(jié)果發(fā)送回網(wǎng)絡(luò)堆棧??梢杂蔀g覽器應(yīng)用112的其他組件執(zhí)行該功能的部分或全部。
擴展管理器128還可以包括通知器142,其可以向Web發(fā)布者104披露某些瀏覽器元素,諸如DOM元素。如下文關(guān)于圖3所更詳細討論的,例如,DOM元素可以包括:安裝在本地計算設(shè)備102或瀏覽器應(yīng)用112上的某些或每個瀏覽器擴展的名稱、每個擴展的分類列舉(classification enumeration)、或者每個瀏覽器擴展可以在給定網(wǎng)頁上執(zhí)行的操作或動作(例如創(chuàng)建、讀取、更新、刪除)的列表。
在一些情況下,擴展管理器128還可以包括允許發(fā)布者在瀏覽器擴展DOM元素的列表上以編程方式迭代的框架144(其可以以例如JavaScriptTM編程)。框架144促進發(fā)布者定義的網(wǎng)頁元標(biāo)簽的插入,所述網(wǎng)頁元標(biāo)簽可以規(guī)定特定擴展可以如何與頁面110互操作??蚣?44可以指定可以與頁面110互操作的擴展的分類??蚣?44可以指定通常如何將操作或動作應(yīng)用于頁面110,諸如更新、讀取、刪除、寫入等。在一些實施方式中,框架144可以促進合同條款的定義,通過該合同條款Web發(fā)布者104可以向擴展所有者要求為在頁面110上執(zhí)行各個操作或動作付費。
當(dāng)然,可以認識到瀏覽器應(yīng)用112可以包括在圖1的場境下未具體圖示的各種特征、功能、操作模塊或其他元件或者與以上相關(guān)聯(lián)。類似地,可以認識到與渲染引擎126和擴展管理器128關(guān)聯(lián)使用的術(shù)語僅為了示例起見,并且可以認識到現(xiàn)有的或未來可能存在的各種類型的瀏覽器應(yīng)用112在參照此處所述的各個概念時可以使用不同的術(shù)語。
系統(tǒng)100還可以包括遠程服務(wù)器170。服務(wù)器170可以包括中央存儲組件180、認證(certification)引擎172、和審核引擎182。在一些情況下,中央存儲組件180可以存儲與網(wǎng)頁上的各個擴展的行為相對應(yīng)的審核蹤跡(trail)或日志。認證引擎172可以被用來證實瀏覽器擴展僅執(zhí)行它們被限定來執(zhí)行的行為。例如,服務(wù)器170可以自動地認證某些瀏覽器擴展,并且基于由該瀏覽器擴展執(zhí)行的動作的審核或測試結(jié)果(即,驗證瀏覽器擴展僅執(zhí)行它們聲稱執(zhí)行的動作),來為那些所認證的瀏覽器擴展分類指派數(shù)字證書或用數(shù)字證書簽署瀏覽器擴展。審核引擎182可以被用來例如結(jié)合中央存儲組件180來跟蹤和記錄各個瀏覽器擴展的某些動作,或者被用來基于與擴展相關(guān)聯(lián)的權(quán)限和定義來評價動作,其也可以被存儲在中央存儲組件180中。
在一些情況下,瀏覽器應(yīng)用112可以實時地訪問中央存儲組件180來確定安裝在瀏覽器應(yīng)用中的擴展具有某些權(quán)限。瀏覽器應(yīng)用112可以與頁面110相關(guān)聯(lián)的Web發(fā)布者104共享該信息。例如,如在下文關(guān)于圖3所更詳細討論的,正請求內(nèi)容的頁面或類型的瀏覽器可以向Web發(fā)布者104通知瀏覽器應(yīng)用112安裝有擴展A、B、和C,并且這些擴展可以進行動作X、Y、和Z。然后,Web發(fā)布者104可以基于該信息來選擇執(zhí)行某些動作,諸如:保留內(nèi)容、派發(fā)不同形式的內(nèi)容、將瀏覽器應(yīng)用112的用戶重定向到不同類型的內(nèi)容(例如PDF或圖像)等。當(dāng)用戶接收該內(nèi)容時,該用戶可以看到瀏覽器擴展已經(jīng)如何改變了來自由Web發(fā)布者104提供的原始頁面的內(nèi)容。
如圖1的示例中所示,瀏覽器應(yīng)用112可以包括擴展管理器128,其可以被配置來實現(xiàn)特定擴展——諸如與擴展文件122相關(guān)聯(lián)的擴展的一些或全部功能。例如,擴展管理器128可以被配置為使得渲染引擎126執(zhí)行或者以其他方式渲染與擴展文件122的擴展相關(guān)聯(lián)的特定文件或頁面。如在下文中關(guān)于圖2所更詳細討論的,擴展管理器128還可以被配置來執(zhí)行后臺頁面和內(nèi)容腳本。例如,可以編寫內(nèi)容腳本來檢查在瀏覽器應(yīng)用122中加載的以用于在瀏覽器窗口108內(nèi)渲染的任何頁面,以便檢測特定類型的內(nèi)容(例如非鏈接網(wǎng)頁、或RSS饋送)的存在。即,內(nèi)容腳本可以在瀏覽器窗口108內(nèi)加載和渲染的任何網(wǎng)頁的內(nèi)容上執(zhí)行這樣的技術(shù)。在內(nèi)容腳本檢測到特定類型的內(nèi)容的事件下,內(nèi)容腳本可以將消息傳遞到擴展以便向該擴展通知檢測到存在特定類型的內(nèi)容。在一些情況下,擴展可以執(zhí)行瀏覽器窗口108的實際修改(例如,執(zhí)行關(guān)于瀏覽器窗口108的頁面動作,諸如顯示擴展圖標(biāo)120)。
在圖1的示例中,瀏覽器應(yīng)用112被圖示包括分立功能模塊。然而,可以認識到這樣的示例僅出于示例的目的,并且其他實施方式也是可能的。例如,可以由兩個或更多元素來實現(xiàn)瀏覽器應(yīng)用112的單個元件。相反,可以使用單個組件來執(zhí)行圖1中所圖示的瀏覽器應(yīng)用的兩個或更多組件。此外,在圖1的示例中,本地計算設(shè)備102被圖示為至少包括一個處理器102a、以及計算機可讀存儲介質(zhì)102b。即,例如,本地計算設(shè)備102可以依賴并行執(zhí)行的兩個或更多處理器以實現(xiàn)所期望的結(jié)果。同時,計算機可讀存儲介質(zhì)102b可以表示例如可以被用來存儲指令的任何常規(guī)類型的計算機存儲器,該指令當(dāng)由至少一個處理器102a執(zhí)行時使得瀏覽器應(yīng)用112執(zhí)行各個功能,以及本文所述的其他相關(guān)功能。圖1的系統(tǒng)100的附加或替選示例實施方式也是可能的。
圖2是Web瀏覽器中的瀏覽器擴展的示例的框圖。如上所提及的,擴展文件可以包括各種不同類型的文件。例如,如圖2所示的擴展204可以包括給出關(guān)于擴展204的信息的清單文件230,諸如例如擴展可以提供的最重要文件和能力以及擴展可能具有的與網(wǎng)頁和瀏覽器應(yīng)用進行交互的權(quán)限。例如清單230可以包括擴展的名稱和擴展204試圖作用于其上的至少一個內(nèi)容類型232。例如,內(nèi)容類型可以是圖像、文本、超級鏈接等。如下文關(guān)于圖3更詳細所述的,清單230還可以指示可以由擴展204執(zhí)行的一個或多個動作234或操作,諸如讀取、寫入、更新、刪除等。可以認識到,擴展可以如上所提及的包括各種其他類型的文件。例如,擴展204可以包括至少一個HTML頁面220,諸如例如與提供與瀏覽器窗口208相關(guān)聯(lián)的彈出窗口的瀏覽器動作相關(guān)聯(lián)的HTML頁面,或者與能夠修改待在瀏覽器窗口208內(nèi)顯示的網(wǎng)頁201的頁面模型的內(nèi)容的內(nèi)容腳本文件212相關(guān)聯(lián)的HTML頁面。
就擴展204的執(zhí)行而言,不同于如下所述的內(nèi)容腳本212,其執(zhí)行可以類似于圖1中所示的瀏覽器應(yīng)用的渲染引擎進行,但以與其分離的過程進行。內(nèi)容腳本212可以表示或包括使的相關(guān)聯(lián)的擴展能夠與例如網(wǎng)頁201的網(wǎng)頁交互的腳本。例如,內(nèi)容腳本212可以被實現(xiàn)為在網(wǎng)頁201的場境中執(zhí)行為被加載到瀏覽器內(nèi)的JavaScriptTM。
內(nèi)容腳本可以找到網(wǎng)頁中的非鏈接URL并且將它們轉(zhuǎn)換為超級鏈接,增加字體大小以使文字更清晰可讀,以及添加或攔截廣告或其他內(nèi)容。內(nèi)容腳本可以間接使用瀏覽器API、獲得擴展數(shù)據(jù)的訪問權(quán)、并且通過與它們的父擴展交換消息來請求擴展動作。內(nèi)容腳本還能夠使用圖1中所示的頁面模型(例如DOM)來與網(wǎng)頁通信。
內(nèi)容腳本212代碼可以總是嘗試被注入到網(wǎng)頁中,或可以取決于如何編寫內(nèi)容腳本僅在有些時候被注入。此外,擴展204能夠?qū)⒍鄠€內(nèi)容腳本插入到頁面內(nèi),并且這些內(nèi)容腳本中的每一個都可以具有多個文件,諸如JavaScriptTM和CSS文件。
一般而言,內(nèi)容腳本可以被配置來讀取由瀏覽器應(yīng)用訪問的網(wǎng)頁的詳情,并且可以進一步被配置為作出這樣的網(wǎng)頁的改變。例如,內(nèi)容腳本可以被配置為讀取和/或修改頁面201的頁面模型(例如DOM)。然而,在示例實施方式中,如上文關(guān)于圖1所討論的,可以基于由與網(wǎng)頁201相關(guān)聯(lián)的Web發(fā)布者提供的規(guī)則,通過瀏覽器應(yīng)用的渲染引擎來限制內(nèi)容腳本訪問或修改網(wǎng)頁201的頁面模型(例如DOM)。以這種方式,Web發(fā)布者可以管理或跟蹤某些網(wǎng)頁上的擴展行為。
圖3是瀏覽器擴展的示例分類和操作的框圖。圖3所示的系統(tǒng)300包括兩個計算設(shè)備,設(shè)備310和設(shè)備320。所述設(shè)備中的每個設(shè)備可以包括瀏覽器應(yīng)用,諸如上面關(guān)于圖1所述的瀏覽器應(yīng)用。該瀏覽器應(yīng)用可以包括瀏覽器DOM元素,其在經(jīng)用戶同意的情況下,將各個瀏覽器擴展元素披露給Web發(fā)布者,諸如圖1所示的Web發(fā)布者。例如,瀏覽器擴展元素可以包括被安裝在該設(shè)備上的每個瀏覽器擴展的名稱、每個擴展的分類列舉、以及每個瀏覽器擴展可以在給定網(wǎng)頁上執(zhí)行的操作的列表(例如創(chuàng)建、讀取、更新、刪除)。
例如,如圖3所示,可以由設(shè)備310的瀏覽器應(yīng)用將各個瀏覽器元素312披露給Web發(fā)布者。瀏覽器元素312包括在設(shè)備310上操作的瀏覽器應(yīng)用上安裝的三個瀏覽器擴展的名稱、分類、和操作。第一瀏覽器擴展具有名稱“Adserver(廣告服務(wù)器)”、分類“A”、和操作“讀,寫”。第二瀏覽器擴展具有名稱“Converter(轉(zhuǎn)換器)”、分類“B”、和操作“讀”。第三瀏覽器擴展具有名稱“Emailer(電子郵件器)”、分類“C”、和操作“更新,刪除”。
作為另一示例,瀏覽器元素322與設(shè)備320處的瀏覽器應(yīng)用相關(guān)聯(lián)。瀏覽器元素322包括在設(shè)備320上操作的瀏覽器應(yīng)用上安裝的兩個瀏覽器擴展的名稱、分類、和操作。第一瀏覽器擴展具有名稱“Adserver”,分類“A”、和操作“讀,寫”。第二瀏覽器擴展具有名稱“SocialStatus(社交狀態(tài))”、分類“B”、和操作“讀,寫,更新”。
客戶端側(cè)框架(例如以JavaScript形式)——諸如圖1的框架144可以允許Web發(fā)布者在瀏覽器擴展DOM元素的列表上以編程方式迭代。該框架促進發(fā)布者定義的網(wǎng)頁元標(biāo)簽的插入,所述網(wǎng)頁元標(biāo)簽規(guī)定特定擴展可以如何與由Web發(fā)布者派發(fā)的網(wǎng)頁互操作。多個分類的擴展可以與頁面互操作。操作通常可以被應(yīng)用于網(wǎng)頁??蚣芸梢源龠M定義合同條款,例如通過該合同條款,Web發(fā)布者可以向擴展所有者要求為在頁面上執(zhí)行各個操作的權(quán)利付費。
圖4是Web瀏覽器的示例用戶界面的圖。該用戶界面可以在諸如上面關(guān)于圖1所討論的瀏覽器應(yīng)用的Web瀏覽器的標(biāo)簽402或窗口中實現(xiàn)。標(biāo)簽402可以顯示網(wǎng)頁404,其包括內(nèi)容410以及廣告420和廣告422。在一些情況下,在瀏覽器應(yīng)用中操作的擴展可能試圖修改或攔截廣告中的一個——諸如廣告420。在一些情況下,擴展可能試圖用不由Web發(fā)布者提供的其他內(nèi)容替換內(nèi)容410。在一些情況下,擴展可能試圖用另一廣告或其他內(nèi)容替換廣告422。
為了使Web發(fā)布者保持可信品牌的完整性和權(quán)威,他們需要更好地控制他們提供的內(nèi)容。對擴展的控制是雙重的。在當(dāng)前商業(yè)模型中,諸如報紙的Web發(fā)布者被組織來派發(fā)廣告以便繼續(xù)向終端用戶分發(fā)免費或低成本的內(nèi)容。此外,報紙對其廣告合伙人具有通過緊靠著恰當(dāng)?shù)男侣剤蟮肋m當(dāng)?shù)嘏砂l(fā)廣告來確保保持品牌完整性的法律義務(wù)。例如,巧克力供應(yīng)者不希望其廣告被置于與升高糖尿病和肥胖率相關(guān)的新聞報道旁邊。當(dāng)今的廣告攔截器擴展充其量只能去除發(fā)布者用來確保向其用戶連續(xù)高質(zhì)量低成本分發(fā)的收入來源。當(dāng)今的用戶同意來自服務(wù)提供者的隱含的服務(wù)條款以接收與廣告相結(jié)合的內(nèi)容,或者有機會通過購進向他們提供有限廣告或無廣告內(nèi)容的模型以選擇退出(opt-out)。但上述擴展僅攔截廣告的派發(fā)。在另一場景下,廣告擴展用自己的廣告替換報紙廣告,當(dāng)巧克力廣告被派發(fā)在緊靠錯誤文章時造成了報紙的責(zé)任。
擴展還能夠向發(fā)布者提供其無法以其他方式自給自足的服務(wù)。例如,考慮如下假定的示例:叫作Mamie’s Lodge(媽媽的小屋)的本地含早旅館(B&B)終于已經(jīng)建立了web展示(web-presence)。作為可信品牌,他們已經(jīng)開始在他們的預(yù)訂站點上派發(fā)本地廣告。Mamie’s Lodge想要使得可信擴展能夠在他們的網(wǎng)站上提供貨幣兌換,但Mamie’s Lodge目前不具有能力來控制其用戶是否得到準(zhǔn)確的匯率。
擴展還會影響用戶。例如,想象用戶“Susie”每天閱讀在線報紙的時尚、天氣、和婚禮版面。她還喜歡閱讀頭條新聞,但這通常處于她的列表的底部。她想要將她最喜歡的文章放在首位的個性化在線報紙主頁。她能夠主動地選擇她最喜歡的文章,但會更希望不在這方面花時間。如果她能夠安裝會跟蹤她閱讀報紙的版面時間和頻率并且相應(yīng)地更新個性化主頁的文章布局的擴展,則她會更多地閱讀在線報紙。在線報紙想要支持該努力,但還不具有該能力。如果報紙能夠控制該服務(wù)的提供者是誰,則它們能夠確保品牌完整性并且提供更好的用戶體驗。
作為另一示例,擴展能夠向移動設(shè)備的用戶提供服務(wù)。例如,考慮剛購買了最新的智能手表的用戶“Tom”。他正嘗試盡可能地遠離他的設(shè)備,但有幾個標(biāo)題他總是在留意。他想要使某些在線報紙將特定主題推送到他的手表,這是他的快節(jié)奏的工作日所必需的。這些發(fā)布者如果其能夠保證正確分發(fā)則可以共同混合他們的內(nèi)容。
圖5是根據(jù)示例實施方式的用于檢測已經(jīng)作出對內(nèi)容的修改的瀏覽器擴展的過程的流程圖。圖5所示的過程至少部分可以由計算機系統(tǒng)執(zhí)行,所述計算機系統(tǒng)諸如圖1所示的系統(tǒng)100,例如圖1所示的Web發(fā)布者104。Web發(fā)布者可以提供包括網(wǎng)頁的內(nèi)容(510)。例如,該內(nèi)容可以包括網(wǎng)頁110。圖1所示的瀏覽器應(yīng)用112可以使用渲染引擎126來渲染頁面110。瀏覽器還可以在由Web發(fā)布者104指定的時間鎖定內(nèi)容,例如通過鎖定頁面110的DOM來鎖定。例如,在由Web發(fā)布者指定的時間后,例如通過使用W3C IFrame Sandbox Attribute的沙箱屬性,瀏覽器可以防止腳本、插件、彈出式窗口、或瀏覽器擴展在頁面110的DOM上操作。
例如,Web發(fā)布者104使用圖1所示的處理器92,可以訪問與訪問內(nèi)容(例如瀏覽器應(yīng)用112)的第一Web瀏覽器相關(guān)聯(lián)的至少一個擴展的列表,并且還可以接收由Web瀏覽器基于該內(nèi)容來生成的關(guān)鍵字(520)。第一Web瀏覽器可以在內(nèi)容上執(zhí)行功能以生成關(guān)鍵字。作為功能的示例,第一Web瀏覽器可以對網(wǎng)頁上所渲染的內(nèi)容進行截圖。作為另一示例,瀏覽器可以執(zhí)行內(nèi)容的校驗和以生成在對內(nèi)容的傳輸中該內(nèi)容所包括的位的數(shù)目的計數(shù)。作為另一示例,第一Web瀏覽器可以執(zhí)行對內(nèi)容的蹤跡。例如,Web瀏覽器可以執(zhí)行蹤跡以創(chuàng)建日志來記錄關(guān)于瀏覽器過程、所渲染的過程、和由瀏覽器渲染的內(nèi)容的信息的,或者來記錄關(guān)于由服務(wù)器和Web瀏覽器交換的數(shù)據(jù)的信息。該數(shù)據(jù)交換可以包括調(diào)試控制、服務(wù)器變量、cookies、所渲染的內(nèi)容、以及其他信息。在一些實施方式中,執(zhí)行蹤跡的結(jié)果是包括用于在諸如瀏覽器過程的過程中發(fā)生的事件的事件時間的記錄(諸如蹤跡文件)。作為示例,蹤跡能夠包括發(fā)布者內(nèi)容與來自不同發(fā)布者的第二內(nèi)容集合并的記錄。記錄能夠包括導(dǎo)致最終用戶視圖的格式的任何修改。記錄能夠被用來在未來作出修改以變更內(nèi)容的順序或向內(nèi)容作者付費。
作為功能的其他示例,第一Web瀏覽器可以將DOM保存為文本文件,或者可以保存頁面110上的不同標(biāo)簽的數(shù)目和位置,或者頁面110上的元素的類型。該功能是可逆的,使得諸如Web發(fā)布者104的系統(tǒng)可以從關(guān)鍵字并且從不僅僅來自內(nèi)容的關(guān)鍵字生成內(nèi)容。例如,如果關(guān)鍵字包括作為文本文件的DOM,則Web發(fā)布者可以使用該文本文件來重新創(chuàng)建內(nèi)容。作為示例,Web發(fā)布者能夠基于在新的關(guān)鍵字中所修改的字體大小來改變內(nèi)容的長度,對于較大字體大小返回更簡潔的內(nèi)容,以及對于較小字體大小返回更完整的內(nèi)容。
例如,Web發(fā)布者104可以使用處理器92來將與關(guān)鍵字相關(guān)聯(lián)的值與預(yù)期的值比較(530)。例如,如果第一Web瀏覽器在內(nèi)容上執(zhí)行校驗和函數(shù)以生成多個位并且將位的數(shù)目與關(guān)鍵字相關(guān)聯(lián),Web發(fā)布者能夠?qū)⑴c關(guān)鍵字相關(guān)聯(lián)的位的數(shù)目與Web發(fā)布者例如基于由Web發(fā)布者提供的初始內(nèi)容來預(yù)期將與內(nèi)容相關(guān)聯(lián)的預(yù)期位數(shù)目比較。所預(yù)期的值可以是表示對內(nèi)容無修改的值。Web發(fā)布者104可以確定該值與預(yù)期的值不相同(540,否)。該確定可以指示由第一Web瀏覽器渲染的內(nèi)容在某些方面不同于由Web發(fā)布者104初始提供的內(nèi)容,其進而可以指示瀏覽器擴展在內(nèi)容由第一Web瀏覽器渲染時對其進行了修改。例如,瀏覽器擴展可能已經(jīng)添加或去除了與內(nèi)容相關(guān)聯(lián)的廣告、改變了文本的位置、刪除了文本、高亮了網(wǎng)頁的可視元素、添加了超級鏈接、或修改了內(nèi)容的其他方面。Web發(fā)布者104可以確定該值與預(yù)期的值之間的差。例如在下文關(guān)于圖6所更詳細描述的,然后,Web發(fā)布者104可以例如使用處理器92基于該差來從列表確定修改了該內(nèi)容的特定瀏覽器擴展(550),。在一些實施方式中,例如,如果列表僅包含一個瀏覽器擴展,則Web發(fā)布者可以避免該確定,因為Web發(fā)布者能夠自動地確定來自該列表的該單個瀏覽器擴展修改了網(wǎng)頁或內(nèi)容。在一些實施方式中,Web發(fā)布者可以迭代地或?qū)崟r地分析多個列表、多個關(guān)鍵字、和多個預(yù)期的值,以推斷哪些瀏覽器擴展修改了內(nèi)容。多個列表、關(guān)鍵字、和預(yù)期值可以來自各個的Web瀏覽器和計算設(shè)備。例如,Web發(fā)布者可以分析擴展的100個列表和100個關(guān)鍵字的集合來確定哪些瀏覽器擴展改變了內(nèi)容。在一個示例中,Web發(fā)布者可以將相同內(nèi)容發(fā)送到均可以安裝有不同擴展集的100個不同的瀏覽器。然后,Web發(fā)布者接收關(guān)于哪些擴展修改了內(nèi)容的信息。然后,Web發(fā)布者可以查找修改了內(nèi)容的瀏覽器中的全部瀏覽器所共同的、擴展以確定哪些擴展可能已經(jīng)修改了內(nèi)容。例如,Web發(fā)布者可以確定瀏覽器中的40個瀏覽器修改了內(nèi)容。在那40個瀏覽器中,都具有相同擴展“A”并且沒有其他的共同擴展。在那種情況下,Web發(fā)布者能夠確定擴展“A”很可能導(dǎo)致了對內(nèi)容的修改。替選地或另外地,Web發(fā)布者可以確定所有40個瀏覽器已經(jīng)安裝有擴展“A”、“B”、和“C”,并且確定其他60個瀏覽器中的一些瀏覽器也已經(jīng)安裝有擴展“B”和“C”,但其他60個瀏覽器未修改內(nèi)容。在那種情況下,Web發(fā)布者也能夠檢測到擴展“A”很可能導(dǎo)致了對內(nèi)容的修改。Web發(fā)布者可以在幾分鐘、幾小時、幾天、或甚至幾周內(nèi)使用迭代比較,并且這樣的比較可以是連續(xù)和不間斷的,以向Web發(fā)布者提供與由擴展對Web發(fā)布者所提供的內(nèi)容作出的修改相關(guān)的更新的數(shù)據(jù)。
圖5所示的過程可以在各個位置處的多個計算設(shè)備中操作的多個Web瀏覽器上從用戶的角度同時、實時、沒有任何延遲地操作。在各個實施方式中,例如,如以下關(guān)于圖6所更詳細討論的,Web發(fā)布者104可以接收在渲染內(nèi)容的Web瀏覽器中安裝或操作的所有瀏覽器擴展的列表。在各個實施方式中,圖5中所示的過程中的一些或所有可以由第三方計算機實現(xiàn)。例如,可以由第三方計算設(shè)備執(zhí)行步驟520-550中的分析中一些或全部。在這樣的示例中,第三方計算設(shè)備可以為Web發(fā)布者104提供或使得其能夠訪問分析的結(jié)果。例如,在一個實施方式中,Web瀏覽器可以向第三方服務(wù)器(諸如圖1所示的服務(wù)器170)發(fā)送在Web瀏覽器中所安裝的所有擴展的列表,以及由Web瀏覽器基于內(nèi)容來生成的關(guān)鍵字。如果瀏覽器擴展沒有修改網(wǎng)頁上的內(nèi)容,則第三方服務(wù)器可以預(yù)期接收關(guān)鍵字的一定值。如果列表中的瀏覽器擴展中的任何一個修改了網(wǎng)頁上的內(nèi)容,則關(guān)鍵字的值可以不同于第三方服務(wù)器預(yù)期接收的值。第三方服務(wù)器可以合并不同值并且為Web發(fā)布者創(chuàng)建報告。例如,該報告可以包括已經(jīng)修改了內(nèi)容的擴展的列表,以及每個擴展已經(jīng)修改了內(nèi)容的哪些方面,并且例如,第三方服務(wù)器可以將報告發(fā)送至Web發(fā)布者或使報告對于Web發(fā)布者可用以經(jīng)由安全登錄來從某個網(wǎng)站下載。
圖6是圖示了根據(jù)示例實施方式的、用于檢測已經(jīng)對內(nèi)容作出修改的瀏覽器擴展的另一過程的流程圖。圖6所示的過程可以至少部分地由計算機系統(tǒng)實現(xiàn),所述計算機系統(tǒng)諸如圖1所示的系統(tǒng)100,例如圖1所示的Web發(fā)布者104。Web發(fā)布者可以提供包括網(wǎng)頁的內(nèi)容(610)。例如,網(wǎng)頁可以是在線報紙的一部分。另一計算設(shè)備處的Web瀏覽器可以在特定時間鎖定內(nèi)容(612)。例如在由Web發(fā)布者指定的時間后,例如通過使用W3C IFrame Sandbox Attribute的沙箱屬性,Web瀏覽器可以防止腳本、插件、彈出窗口、或瀏覽器擴展在頁面110的DOM上操作。
Web發(fā)布者可以訪問與訪問該內(nèi)容的Web瀏覽器相關(guān)聯(lián)的所有擴展的列表,并且Web發(fā)布者還可以訪問由Web瀏覽器基于內(nèi)容來生成的關(guān)鍵字(620)。Web發(fā)布者可以將與關(guān)鍵字相關(guān)聯(lián)的值與預(yù)期的值比較(630)。Web發(fā)布者可以確定該值是否與預(yù)期值的相同(640)。如果相同,則Web發(fā)布者可以繼續(xù)提供內(nèi)容(610)。如果不相同(640,否),則Web發(fā)布者可以確定該值與預(yù)期的值之間的差,并且還確定在數(shù)據(jù)集中是否存在足夠的數(shù)據(jù)以確定修改了內(nèi)容的特定瀏覽器擴展(650)。例如,數(shù)據(jù)集可以是如圖1所示的數(shù)據(jù)集94。作為一個說明性實施方式,Web發(fā)布者可以訪問與訪問該內(nèi)容的Web瀏覽器相關(guān)聯(lián)的所有擴展的列表(620)。如果在與Web瀏覽器相關(guān)聯(lián)的所有擴展的列表中僅存在一個瀏覽器擴展,則Web發(fā)布者可以具有足夠的數(shù)據(jù)來確定哪個瀏覽器擴展修改了內(nèi)容——該一個瀏覽器擴展。作為另一示例,所有瀏覽器擴展的列表可以包括圖3中的瀏覽器元素312。在該示例中,如果元素(例如廣告)從正在Web瀏覽器上渲染的內(nèi)容被刪除,則Web發(fā)布者可能能夠基于與瀏覽器擴展相關(guān)聯(lián)的操作來從瀏覽器元素312確定僅來自該列表的一個特定擴展才能夠刪除內(nèi)容。在該示例中,該特定擴展會是在瀏覽器元素312中所示的“Emailer”瀏覽器擴展——具有刪除操作作為可能的操作的來自瀏覽器元素312的僅有的擴展。在該情況下,Web發(fā)布者將具有足夠的數(shù)據(jù)來確定哪個擴展修改了內(nèi)容。如果是(650,是),則Web發(fā)布者可以確定修改了內(nèi)容的特定瀏覽器擴展(660)。如果不是(650,否),則Web發(fā)布者可以將該值存儲在數(shù)據(jù)集中以用于未來的比較(652),并且可以繼續(xù)提供內(nèi)容(610)。在這樣的示例中,Web發(fā)布者可以使用來自各個其他計算設(shè)備的數(shù)據(jù)和Web瀏覽器來作出多次迭代比較以確定哪個瀏覽器擴展對內(nèi)容作出了修改??梢栽趲酌?、幾小時、或者甚至幾天內(nèi)執(zhí)行該迭代比較。Web發(fā)布者可以將數(shù)據(jù)集94存儲在與Web服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)庫中或存儲在遠程數(shù)據(jù)存儲處。
圖7是示出了可以與這里描述的技術(shù)一起使用的通用計算機設(shè)備700和通用移動計算機設(shè)備750的示例的圖。計算設(shè)備700意圖表示各種形式的數(shù)字計算機,諸如膝上型計算機、桌面計算機、工作站、個人數(shù)字助理、服務(wù)器、刀片服務(wù)器、大型主機、和其他適當(dāng)?shù)挠嬎銠C。計算設(shè)備750意圖表示各種形式的移動設(shè)備,諸如個人數(shù)字助理、蜂窩電話、智能電話、和其他相似的計算設(shè)備。這里所示的組件、其連接和關(guān)系、以及其功能僅意欲作為示例性。
計算設(shè)備700包括處理器702、存儲器704、存儲設(shè)備706、連接到存儲器704和高速擴展端口710的高速接口708、以及連接到低速總線714和存儲設(shè)備706的低速接口712。組件702、704、706、710、和712中的每個組件使用各種總線來互連并且可以安裝在公共主板上或者視情況以其他方式來安裝。處理器702能夠處理用于在計算設(shè)備700內(nèi)執(zhí)行的指令,其包括存儲于存儲器704中或者存儲設(shè)備706上以顯示用于外部輸入/輸出設(shè)備——諸如耦合到高速接口708的顯示器716上的GUI的圖形信息。在其他實施方式中,可以視情況連同多個存儲器和多種類型的存儲器一起使用多個處理器和/或多個總線。此外,可以連接多個計算設(shè)備700,其中每個設(shè)備提供必要操作的一部分(例如作為服務(wù)器組、或者刀片服務(wù)器群、或者多處理器系統(tǒng))。
存儲器704存儲計算設(shè)備700內(nèi)的信息。在一個實施方式中,存儲器704是一個或者多個易失性存儲器單元。在另一實施方式中,存儲器704是一個或者多個非易失性存儲器單元。存儲器704也可以是另一形式的計算機可讀介質(zhì),諸如磁盤或者光盤。
存儲設(shè)備706能夠為計算設(shè)備700提供大容量存儲。在一個實施方式中,存儲設(shè)備706可以是計算機可讀介質(zhì)或者包含計算機可讀介質(zhì),諸如軟盤設(shè)備、硬盤設(shè)備、光盤設(shè)備、或者磁帶設(shè)備、閃存或其他類似的固態(tài)存儲器設(shè)備、或者設(shè)備陣列,包括在存儲區(qū)域網(wǎng)絡(luò)或者其他配置中的設(shè)備。計算機程序產(chǎn)品能夠以信息載體來有形地體現(xiàn)。計算機程序產(chǎn)品也可以包含指令,所述指令在被執(zhí)行時執(zhí)行一個或多個方法,諸如上文描述的那些方法。信息載體是計算機或者機器可讀介質(zhì),諸如存儲器704、存儲設(shè)備706、或在處理器702上的存儲器。
高速控制器708管理計算設(shè)備700的帶寬密集型操作,而低速控制器712管理較低的帶寬密集型操作。這樣的功能分配僅是示例性的。在一個實施方式中,高速控制器708耦合到存儲器704、顯示器716(例如通過圖形處理器或者加速器來耦合)、并且耦合到可以接受各種擴展卡(未示出)的高速擴展端口710。在該實施方式中,低速控制器712耦合到存儲設(shè)備706和低速擴展端口714??梢园ǜ鞣N通信端口(例如USB、藍牙、以太網(wǎng)、無線以太網(wǎng))的低速擴展端口可以耦合到一個或者多個輸入/輸出設(shè)備——諸如鍵盤、指示設(shè)備、掃描儀,或者例如通過網(wǎng)絡(luò)適配器耦合到聯(lián)網(wǎng)設(shè)備——諸如交換機或者路由器。
如圖中所示,可以以多個不同形式來實現(xiàn)計算設(shè)備700。例如,計算設(shè)備700可以被實現(xiàn)為標(biāo)準(zhǔn)服務(wù)器720、或者多次被實現(xiàn)在這樣的服務(wù)器的群組中。其也可以被實現(xiàn)為架式服務(wù)器系統(tǒng)724的一部分。此外,計算設(shè)備700還可以被實現(xiàn)在諸如膝上型計算機722的個人計算機中。替選地,來自計算設(shè)備700的組件可以與諸如設(shè)備750的移動設(shè)備(未示出)中的其他組件組合。這樣的設(shè)備中的每個設(shè)備可以包含計算設(shè)備700、750中的一個或者多個計算設(shè)備,并且整個系統(tǒng)可以由相互通信的多個計算設(shè)備700、750組成。
除其它組件之外,計算設(shè)備750包括處理器752、存儲器764、輸入/輸出設(shè)備——諸如顯示器754、通信接口766、以及收發(fā)器768。設(shè)備750也可以被提供有諸如微型驅(qū)動器或者其他設(shè)備的存儲設(shè)備以提供附加的存儲。使用各種總線來互連組件750、752、764、754、766、和768中的每個組件,并且組件中的若干組件可以被安裝在公用母板上或者視情況以其他方式來安裝。
處理器752能夠執(zhí)行計算設(shè)備750內(nèi)的指令,包括存儲于存儲器764中的指令。處理器可以被實現(xiàn)為芯片的芯片組,所述芯片包括單獨和多個模擬和數(shù)字處理器。例如,處理器可以提供設(shè)備750的其他組件的協(xié)調(diào),諸如對用戶界面、設(shè)備750運行的應(yīng)用、和設(shè)備750進行的無線通信的控制。
處理器752可以通過耦合到顯示器754的控制接口758和顯示接口756來與用戶通信。例如,顯示器754可以是TFTLCD(薄膜晶體管液晶顯示器)或者OLED(有機發(fā)光二極管)顯示器或者其他適當(dāng)?shù)娘@示技術(shù)。顯示接口756可以包括用于驅(qū)動顯示器754以向用戶呈現(xiàn)圖形和其他信息的適當(dāng)電路??刂平涌?58可以從用戶接收命令并且對其進行轉(zhuǎn)換以用于向處理器752提交。此外,可以提供與處理器752通信的外部接口762以便使得設(shè)備750能夠與其他設(shè)備的近區(qū)域通信。例如,外部接口762在一些實施方式中可以提供有線通信或者在其他實施方式中提供無線通信,并且也可以使用多個接口。
存儲器764存儲計算設(shè)備750內(nèi)的信息。存儲器764可以被實現(xiàn)為一個或多個計算機可讀介質(zhì)、一個或多個易失性存儲器單元、或者一個或多個非易失性存儲器單元中的一個或多個。擴展存儲器774也可以被提供并且通過例如可以包括SIMM(單列直插內(nèi)存模塊)卡接口的擴展接口772連接到設(shè)備750。擴展存儲器774可以為設(shè)備750提供額外存儲空間或者也可以存儲用于設(shè)備750的應(yīng)用或者其他信息。具體而言,擴展存儲器774可以包括用于執(zhí)行或補充上文描述的過程的指令并且也可以包括安全信息。因此,例如,可以提供擴展存儲器774作為設(shè)備750的安全模塊,并且擴展存儲器774可以被編程有許可安全使用設(shè)備750的指令。此外,還可以經(jīng)由SIMM卡將安全應(yīng)用連同附加信息一起提供。
如下文所討論的,例如,存儲器可以包括閃存和/或NVRAM存儲器。在一個實施方式中,計算機程序產(chǎn)品以信息載體來有形地體現(xiàn)。計算機程序產(chǎn)品包含指令,所述指令在被執(zhí)行時實施諸如上文所描述的那些方法的一個或多個方法。信息載體是例如可以通過收發(fā)器768或外部接口762來接收的計算機或機器可讀介質(zhì),諸如存儲器764、擴展存儲器774、或在處理器752上的存儲器。
設(shè)備750可以通過通信接口766無線通信,該通信接口可以在必要的情況下包括數(shù)字信號處理電路。通信接口766可以在各種模式或協(xié)議下提供通信,所述模式或協(xié)議除其他外諸如GSM語音呼叫、SMS、EMS、或者MMS消息收發(fā)、CDMA、TDMA、PDC、WCDMA、CDMA2000、或者GPS。例如,這樣的通信可以通過射頻收發(fā)器768來發(fā)生。此外,短程通信可以諸如使用藍牙、Wi-Fi、或者其他這樣的收發(fā)器(未示出)來發(fā)生。此外,GPS(全球定位系統(tǒng))接收器模塊770可以向設(shè)備750提供附加的導(dǎo)航相關(guān)和位置相關(guān)的無線數(shù)據(jù),該無線數(shù)據(jù)可以由在設(shè)備750上運行的應(yīng)用視情況使用。
設(shè)備750也可以使用音頻編解碼器760來可聽地通信,該音頻編解碼器760可以從用戶接收語音信息并且將其轉(zhuǎn)換成可使用的數(shù)字信息。同樣,音頻編解碼器760可以諸如通過例如設(shè)備750的送受話器中的揚聲器為用戶生成可聽聲音。這樣的聲音可以包括來自語音電話呼叫的聲音、可以包括已記錄的聲音(例如語音消息、音樂文件等)、并且也可以包括在設(shè)備750上操作的應(yīng)用所生成的聲音。
如圖所示,可以以多種不同形式來實現(xiàn)計算設(shè)備750。例如,計算設(shè)備750可以被實現(xiàn)為蜂窩電話780。計算設(shè)備750也可以被實現(xiàn)為智能電話782、個人數(shù)字助理、或者其他類似移動設(shè)備的部分。
這里描述的系統(tǒng)和技術(shù)的各種實施方式可以以數(shù)字電子電路、集成電路、專門設(shè)計的ASIC(專用集成電路)、計算機硬件、固件、軟件、和/或其組合中來實現(xiàn)。這些各種實施方式可以包括一個或多個計算機程序中的實施方式,所述計算機程序可以在包括至少一個可編程處理器、至少一個輸入設(shè)備和至少一個輸出設(shè)備的可編程系統(tǒng)上執(zhí)行和/或解釋,所述可編程處理器是專用或通用的,被耦合以從存儲系統(tǒng)接收數(shù)據(jù)和指令并且向所述存儲系統(tǒng)傳送數(shù)據(jù)和指令。
這些計算機程序(也稱為程序、軟件、軟件應(yīng)用、或者代碼)包括用于可編程處理器的機器指令并且可以用高級過程語言和/或面向?qū)ο蟮木幊陶Z言、和/或用匯編/機器語言來實現(xiàn)。如這里所使用,術(shù)語“機器可讀介質(zhì)”、“計算機可讀介質(zhì)”指代被用來向可編程處理器提供機器指令和/或數(shù)據(jù)的任何計算機程序產(chǎn)品、裝置和/或設(shè)備(例如磁盤、光盤、存儲器、可編程邏輯器件(PLD)),包括接收作為機器可讀信號的機器指令的機器可讀介質(zhì)。術(shù)語“機器可讀信號”指代被用來向可編程處理器提供機器指令和/或數(shù)據(jù)的任何信號。
為了提供與用戶的交互,這里描述的系統(tǒng)和技術(shù)可以在具有下述的計算機上實現(xiàn):用于向用戶顯示信息的顯示器設(shè)備(例如CRT(陰極射線管)或者LCD(液晶顯示器)監(jiān)視器),以及用戶通過其可以向計算機提供輸入的鍵盤和指示設(shè)備(例如鼠標(biāo)或軌跡球)。還能夠使用其他類型的設(shè)備來提供與用戶的交互;例如,向用戶提供的反饋可以是任何形式的感官反饋(例如視覺反饋、聽覺反饋、或者觸覺反饋);并且能夠用包括聲音、語音、或者觸覺輸入的任何形式接收來自用戶的輸入。
這里描述的系統(tǒng)和技術(shù)能夠以計算系統(tǒng)來實現(xiàn),該計算系統(tǒng)包括:后端組件(例如作為數(shù)據(jù)服務(wù)器),或者包括中間件組件(例如應(yīng)用服務(wù)器),或者包括前端組件(例如具有圖形用戶界面或者網(wǎng)上瀏覽器(用戶可以通過其可以與這里所描述的系統(tǒng)和技術(shù)的實施方式進行交互的圖形用戶界面或者web瀏覽器的客戶端計算機),或者這樣的后端、中間件、或者前端組件的任何組合。系統(tǒng)的組件可以由任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信(例如通信網(wǎng)絡(luò))互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)、和互聯(lián)網(wǎng)。
計算系統(tǒng)能夠包括客戶端和服務(wù)器??蛻舳撕头?wù)器一般相互遠離并且通常通過通信網(wǎng)絡(luò)交互??蛻舳撕头?wù)器的關(guān)系依靠計算機程序來產(chǎn)生,所述計算機程序在相應(yīng)計算機上運行并且相互具有客戶端-服務(wù)器關(guān)系。
已經(jīng)對多個實施方式進行了描述。然而,將理解在不偏離本發(fā)明的精神和范圍的情況下可以進行各種修改。
此外,圖中描繪的邏輯流程不需要所示的特定順序或者依次順序來實現(xiàn)所期望的結(jié)果。此外,可以提供其他步驟或者可以從所描述的流程消除步驟,并且可以向所描述的系統(tǒng)添加其他組件或者從其去除其他組件。因此,其他實施方式在所附權(quán)利要求書的范圍內(nèi)。