# Patent

## Title
Analysis of web application state

## Abstract

Disclosed are various embodiments for obtaining captures of network pages from an electronic commerce system, wherein each of the captures comprises attributes of the respective one of the network pages and capture data of one of the network pages in a browser. The system identifies a correlated pair of the captures having a positive degree of correlation between the attributes of a respective pair of the network pages. The system generates a differential for the correlated pair, wherein the differential comprises distinctions between the capture data of the correlated pair of captures. The system generates a notice associated with the correlated pair, wherein the differential exceeds a predefined threshold.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is a continuation of pending U.S. patent application Ser. No. 13/449,620, entitled “Analysis of Web Application State,” filed Apr. 18, 2012. This application is incorporated by reference herein in its entirety.


BACKGROUND
Browser applications may render the network pages of an electronic commerce system or other network site to have an appearance that differs depending upon the particular browser used. Furthermore, a given browser may render a network page differently based upon changes made to the network page.



BRIEF DESCRIPTION OF THE DRAWINGS
Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
FIGS. 1A and 1B are drawings of a networked environment according to various embodiments of the present disclosure.
FIGS. 2A and 2B are flowcharts illustrating examples of functionality implemented as portions of a master client application executed in a master client in the networked environments of FIGS. 1A and 1B according to various embodiments of the present disclosure.
FIGS. 3A and 3B are flowcharts illustrating examples of functionality implemented as portions of a slave client application executed in a slave client in the networked environments of FIGS. 1A and 1B according to various embodiments of the present disclosure.
FIG. 4 is a flowchart illustrating examples of functionality implemented as portions of a capture differential engine executed in a computing environment in the networked environments of FIGS. 1A and 1B according to various embodiments of the present disclosure.
FIG. 5 is a schematic block diagram that provides one example illustration of a computing environment employed in the networked environments of FIGS. 1A and 1B according to various embodiments of the present disclosure.
FIG. 6 is a schematic block diagram that provides one example illustration of a client employed in the networked environments of FIGS. 1A and 1B according to various embodiments of the present disclosure.



DETAILED DESCRIPTION
The present disclosure relates to techniques for capturing and validating the appearance of network pages. For example, a given network page may have a different appearance based upon the browser application used to render the network page, or a given browser may change the appearance of a network page after an update to the page. In order to validate the appearance of different versions of network pages in various browsers, captures must be taken of renderings of the network pages by these various browsers at different points in time. Each of the captures may include various data about the rendering of the network page and the communication session with the electronic commerce system or other network page server. Various client computers, each using different browsers, may be used to perform a capture of a network page or a sequence of network pages that may be stored in a data store for later validation.
A capture differential engine may be used to compare captures of network pages in order to validate that their appearance is consistent across different browsers and/or changes to the network pages. The capture differential engine may examine attributes of the various captures to ensure that the network pages represented in a given pair of captures are suitable for comparison. The attributes of a pair of captures need not be identical to be suitable for comparison, rather the attributes may be correlated to determine a sufficient degree of similarity. In the following discussion, a general description of the system and its components is provided, followed by a discussion of the operation of the same.
With reference to FIG. 1A, shown is a networked environment 100 according to various embodiments. The networked environment 100 includes a computing environment 103 in data communication with a network intermediary 105, one or more master clients 106, and one or more slave clients 108 by way of a network 109. The network intermediary 105 may cache communications between master clients 106 and the computing environment 103 to be reproduced for the slave clients 108. The network 109 includes, for example, the Internet, intranets, extranets, wide area networks (WANs), local area networks (LANs), wired networks, wireless networks, or other suitable networks, etc., or any combination of two or more such networks. In some embodiments, the network intermediary 105, master clients 106, and/or the slave clients 108 may be virtual machines executed in the computing environment 103 or other computing device.
The computing environment 103 may comprise, for example, a server computer or any other system providing computing capability. Alternatively, the computing environment 103 may comprise a plurality of servers or other computing devices that are arranged, for example, in one or more server banks or computer banks or other arrangements. For example, the computing environment 103 may comprise a cloud computing resource, a grid computing resource, and/or any other distributed computing arrangement. The computing environment 103 may be located in a single installation or may be distributed among many different geographical locations.
Various applications and/or other functionality may be executed in the computing environment 103 according to various embodiments. Also, various data is stored in a data store 112 that is accessible to the computing environment 103. The data store 112 may be representative of a plurality of data stores 112 as can be appreciated. The data stored in the data store 112, for example, is associated with the operation of the various applications and/or functional entities described below.
The components executed on the computing environment 103, for example, include an electronic commerce system 121, a capture differential engine 123, and other applications, services, processes, systems, engines, or functionality not discussed in detail herein. The electronic commerce system 121 is executed in order to facilitate the online purchase of items from one or more electronic marketplaces over the network 109. The electronic commerce system 121 also performs various backend functions associated with the online presence of an electronic marketplace in order to facilitate the online purchase of items. For example, the electronic commerce system 121 may generate content pages such as, for example, web pages and/or other types of network content that are provided to clients 106 for the purposes of promoting and selecting items for purchase, rental, download, lease, or any other forms of consumption.
The capture differential engine 123 is executed to identify differences among captures of network pages. To this end, the capture differential engine 123 may use the captures, user data, catalog data, and/or other data from the data store 112. In order for a user to identify the particular captures to be compared, the capture differential engine 123 may render a display on a client over the network 109 by a browser, a client application, and/or other application.
The data stored in the data store 112 includes, for example, workflow definitions 131, catalog data 133, user data 136, captures 138, and potentially other data. The workflow definitions 131 define the activities, actions, and/or steps to be carried out in order to automate all or a portion of the capture of one or more network pages. In some embodiments, the workflow definitions 131 may be expressed using functional logic as may be expressed, for example, in terms of programmed code. In other embodiments, the workflow definition 131 may be expressed using, for example, extensible markup language (XML), Business Process Execution Language (BPEL), XML Process Definition Language (XPDL), or other such languages.
The catalog data 133 may include items 134 that are offered in the marketplace of the electronic commerce system 121, as well as other information associated with the items 134. The various data stored in catalog data 133 may include, for example, titles, descriptions, classifications, quantities, conditions, images, options, weights, customer reviews, customer ratings, keywords, prices, promotions, shipping configuration, tax configuration, unique identifiers, and any other data related to items 134. An item 134 may refer to a product, good, service, software download, multimedia download, supply chain, or any combination, bundle, or package thereof, that may be offered for sale, purchase, rental, lease, download, and/or any other form of consumption and/or acquisition as may be appreciated.
The capture data 138 includes various data about the rendering of network pages by various browser applications and the communication sessions through which the network pages are delivered from the electronic commerce system 121 to the clients. Each capture may include a screenshot of the rendered network page, the document object model (DOM) tree created for the network page by a browser, various attributes associated with the communication session, and/or other possible data associated with the network page. Each capture may further include data associated with the DOM tree, such as relative positions of the elements of the DOM tree, coordinates for positioning the elements, and/or other data associated with the DOM tree. The attributes may include a user login state, a browser identifier, a uniform resource identifier (URI), a version identifier for the network page, and/or other attributes associated with the communication session. The captures may be organized into albums that present a sequence of captures representing all or a portion of the sequence of network pages encountered during a communication session.
The master client 106 is representative of a plurality of master client devices that may be coupled to the network 109. The master client 106 may comprise, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a desktop computer, a laptop computer, a tablet computer system, or other devices with like capability. Various applications and/or other functionality may be executed in the master client 106 according to various embodiments. Also, various data is stored in a data store 161 that is accessible to the master client 106. The data store 161 may be representative of a plurality of data stores 161 as can be appreciated. The data stored in the data store 161, for example, is associated with the operation of the various applications and/or functional entities described below.
The master client 106 may be configured to execute various applications such as a browser 162, state monitor 163, master client application 165, and/or other applications. The browser 162 may be executed in a master client 106, for example, to access and render network pages, such as web pages, or other network content served up by the computing environment 103 and/or other servers. The state monitor 163 may be executed to monitor and report various state data associated with a communication session between the browser 162 and the electronic commerce system 121.
The master client application 165 may be executed to capture a rendering of a network page by the browser 162 and attributes associated with the communication session between the browser 162 and the electronic commerce system 121. In addition, the master client application 165 translates the activities of the browser 162 and the activities undertaken to capture renderings of select ones of the network pages into actions 167. The actions 167 represent an intermediate form of the various activities that permit a slave client using any type of browser 162 to duplicate the activities of the master client associated with capturing a network page.
The slave client 108 is representative of a plurality of slave client devices that may be coupled to the network 109. The slave client 108 may comprise, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a desktop computer, a laptop computer, a tablet computer system, or other devices with like capability. Various applications and/or other functionality may be executed in the slave client 108 according to various embodiments. Also, various data is stored in a data store 181 that is accessible to the slave client 108. The data store 181 may be representative of a plurality of data stores as can be appreciated. The data stored in the data store 181, for example, is associated with the operation of the various applications and/or functional entities described below.
The slave client 108 may be configured to execute various applications such as a browser 162, state monitor 163, slave client application 185, and/or other applications. The slave client application 185 may be executed to capture a rendering of a network page by the browser 162 and attributes associated with the communication session between the browser 162 and the electronic commerce system 121. In addition, the slave client application 185 may obtain and act upon actions 167 from a master client 106, as well as transmit stored captures 138 to a master client 106 and/or other computing device.
Next, a general description of the operation of the various components of the networked environment 100 is provided. To begin, the browser 162 of the master client 106 issues a network page request 191 for a network page of the electronic commerce system 121. In some embodiments, a user directs the browser 162 to the network page. In other embodiments, the master client application 165 executes a workflow definition 131 that directs the browser 162 to the network page.
The network page request 191 passes through the network intermediary 105 prior to being forwarded to the computing environment 103. The network intermediary 105 is configured with the identity of one or more master clients 106 and one or more slave clients 108 associated with each of the master clients 106. The network intermediary 105 caches any network page request 191 from the master client 106 for a network page of the electronic commerce system 121, as well as the associated network page response 192 to the request from the electronic commerce system 121.
As the browser 162 is directed to carry out various activities, such as issuing network page requests 191, the activities are translated into actions 167. The actions 167 may be communicated to the slave clients 108 and enable the slave clients 108 to issue network page requests 191 that masquerade as network page requests 191 from duplicate of the associated master client 106. The masquerading techniques may involve manipulating network addresses, duplicating browser session cookies, and/or other techniques as can be appreciated. Thus, if a network page request 191 is received from a slave client 108 matching attributes of a network page request 191 previously received from a master client 106, the slave client 108 will receive the network page response 192 previously cached by the network intermediary 105. In this scenario, the network page request 191 sent by the slave client 108 destined for the computing environment 103 will not be forwarded to the destination, and the network page response 192 will be sent by network intermediary 105 masquerading as the computing environment 103.
A portion of the network pages rendered in the clients may be selected for capture. In some embodiments, the master client application 165 executes the workflow definition 131 containing various criteria for capturing a given one of the network pages. As a non-limiting example, the workflow definition 131 may contain a sequence of network pages to render, wherein a given network page may contain criteria to capture the page if the network page is a page for an item containing more than fifty user reviews. The state of the session between the browser 162 and the electronic commerce system 121 may be monitored by the state monitor 163 and may be used to identify the present state of various attributes of the session, including attributes that may be criteria for capturing a network page.
The state of the attributes may be reported to the master client application 165. In embodiments of the master client application 165 executing the workflow definition 131, the master client application 165 may use the values of the attributes to automatically select the network pages to be captured and stored in the capture data 138 of the data store 161. In other embodiments, a user may manually select the network pages to be captured and stored in the capture data 138 of the data store 161 based upon the values of the attributes and/or other criteria as can be appreciated.
For the network pages selected for capture in the master client 106, various data for each of the network pages may be stored in the capture data 138 such as, for example, a screen capture of the network page as rendered in the browser 162, a DOM tree as created from the network page by the browser 162, data associated with placement of the elements of the DOM tree, various attributes of the network page session as reported by the state monitor 163, and/or other data associated with the network page. The master client application 165 further translates the capture activities of the master client 106 into actions 167 that are communicated to the slave clients 108. As a consequence of translating the browsing and capture activities of the master client 106 into actions for the slave client(s) 108, the same network page data is rendered and captured by the associated clients, albeit using the rendering of a browser 162 that may be unique to each client.
Upon termination of a browsing session in a workflow definition 131 or by direction from a user, the master client application 165 may collect the captures 138 from each slave client 108. The captures from the master client 106 and the slave clients 108 associated with the master client 106 may be transmitted to the master client 106 and/or computing environment 103 for further analysis and processing.
To this end, the capture differential engine 123 obtains various criteria with which to select and compare captures. The specified criteria may be compared against the attributes for each of the captures as collected by the clients such as, for example, user login state, time of rendering, the URI of the network page, a product identifier of a product in the network page, type of browser used for the rendering, and/or other attributes as can be appreciated. As a non-limiting example, the criteria may be highly specific such as compare a capture of page X taken on Monday with another capture of page X taken by the same client using the same browser 162 on Tuesday. Alternatively, the criteria may be generalized such as, for example, compare all similar captures taken within two specific capture sessions.
Upon identifying a pair of captures to be compared, the capture differential engine 123 may compare the captures using various techniques such as, for example, comparing images of the renderings by performing a pixel-by-pixel comparison identifying the locations in which the pixels of the image differ, a mean squares comparison of the images, and/or other image similarity techniques. The pixel comparison may be further adapted to compare only sub-regions of a rendered page rather than the entirety of the page. As another example, the captures may be compared by measuring differences in the dimensions of the DOM tree created for each capture by a respective browser 162. As a further example, images of the captures may be compared by one or more users who are then asked to identify the degree of similarity between the images. Furthermore, one or more of these techniques may be combined and the results weighted to generate a differential reflecting the degree of similarity among each pair of captures. Captures having a differential beyond a threshold value may trigger a notification of a potential problem with the respective network pages.
Referring next to FIG. 1B, shown is another embodiment of the networked environment 100. This embodiment of the networked environment 100 differs from FIG. 1A due to the removal of the network intermediary 105 and the addition of page data 187. The page data 187 includes at least a DOM tree as created by the browser 162 of the master client 106 and may further include other components of the network page such as images, videos, other network pages, and/or other data necessary to render the network page in the slave client 108.
The operation of this embodiment of the networked environment 100 differs in the techniques used by the slave client 108 to retrieve the network pages as directed by the master client 106. In this embodiment, the master client 106 provides the slave client 108 with page data 187 in addition to the actions 167. Some components of the network page may not be provided in the page data 187 and may need to be retrieved from the electronic commerce system 121 or other source by the slave client 108. In some embodiments, the master client 106 provides the slave client 108 with page data 187 without the actions 167. In these embodiments, the slave client 108 may capture all or a portion of the network pages rendered from the page data 187.
Turning now to FIG. 2A, shown is a flowchart that provides one example of the operation of a portion of the master client application 165 according to various embodiments. It is understood that the flowchart of FIG. 2A provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the master client application 165 as described herein. As an alternative, the flowchart of FIG. 2A may be viewed as depicting an example of steps of a method implemented in the master client 106 (FIG. 1A) according to one or more embodiments.
Beginning with box 203, the master client application 165 may notify the network intermediary 105 (FIG. 1A) of the master client role of the master client 106, and potentially the identity of the slave client(s) 108 (FIG. 1A) associated with the master client 106. Next, in box 206, the master client application 165 may direct the browser 162 (FIG. 1A) to render a network page of the electronic commerce system 121 (FIG. 1A) based upon a workflow definition 131 (FIG. 1A).
Then, in box 209, the master client application 165 translates the activities of the browser 162 into actions 167 (FIG. 1A) and transmits the actions 167 to the slave client(s) 108 of the master client 106. The actions 167 transmitted may further contain browser session cookies and/or other data sufficient to duplicate the communication session between the master client 106 and the electronic commerce system 121 within each of the slave clients 108. Subsequently, in box 212, the master client application 165 determines whether the currently rendered network page of the master client 106 should be captured. As discussed previously, the capture decision may be based upon attributes of the network page and capture criteria of a workflow definition 131, or the capture decision may be made by an operator of the master client 106. If the network page should not be captured, execution of the master client application 165 may return to box 206. Alternatively, if the network page should be captured, execution of the master client application 165 proceeds to box 215.
In box 215, the master client application 165 may store various data associated with the network page in the capture data 138 (FIG. 1A). The capture data 138 may include, for example, a screen capture of the network page as rendered in the browser 162, a DOM tree as created from the network page by the browser 162, data associated with placement of the elements of the DOM tree, various attributes of the network page session as reported by the state monitor 163 (FIG. 1A), and/or other data associated with the network page. Next, in box 218, the master client application 165 translates the capture activities of the master client 106 into actions 167 that are transmitted to the slave clients 108. Transmitting the actions 167 to the slave clients 108 permits the same network page data to be rendered and captured by the all the associated clients, while using the rendering of a browser 162 that may be unique to each client.
Then, in box 221, the master client application 165 determines if any further pages remain to be rendered. The determination may be known if no further pages remain in a workflow definition 131 or if the operator of the master client 106 determines the browsing session is complete. If additional pages remain to be rendered, execution of the master client application 165 returns to box 206. Alternatively, if the browsing session is complete, execution of the master client application 165 proceeds to box 224. In box 224, the master client application 165 collects the captures from each of the slave clients 108 using the file transfer protocol (FTP), hypertext transfer protocol (HTTP), and/or other data transfer protocols as can be appreciated. Thereafter, this portion of the master client application 165 ends as shown.
Referring now to FIG. 2B, shown is a flowchart that provides another example of the operation of a portion of the master client application 165 according to various embodiments. The flowchart of FIG. 2B resembles FIG. 2A with the exception that box 203 is removed and box 209 has been replaced with box 210. In box 210, the master client application 165 translates the activities of the browser 162 (FIG. 1A) into actions 167 (FIG. 1A) and transmits the actions to the slave client(s) 108 (FIG. 1A) of the master client 106 (FIG. 1A). The actions transmitted may further contain a DOM tree created from the network page by the browser 162, browser cookies and/or other data sufficient to duplicate the communication session between the master client 106 and the electronic commerce system 121 (FIG. 1A) within each of the slave clients 108. The page data transferred to the slave clients 108 should be sufficient to permit each slave client 108 to render the network page within the local browser 162 without modifying the state of the communication session established by the master client 106.
Moving on to FIG. 3A, shown is a flowchart that provides one example of the operation of a portion of the slave client application 185 according to various embodiments. It is understood that the flowchart of FIG. 3A provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the slave client application 185 as described herein. As an alternative, the flowchart of FIG. 3A may be viewed as depicting an example of steps of a method implemented in the slave client 108 (FIG. 1A) according to one or more embodiments.
Beginning with box 303, the slave client application 185 may notify the network intermediary 105 (FIG. 1A) of the slave client role of the slave client 108 (FIG. 1A), and potentially the identity of the master client 106 (FIG. 1A) associated with the slave client 108. Next, in box 306, the slave client application 185 may obtain an action 167 (FIG. 1A) from the master client 106. The action may contain a URI, browser cookies, and/or other data associated with duplicating the browsing session of the master client 106 in the slave client 108. To this end, the slave client application 185 may direct the browser 162 (FIG. 1A) to render a network page of the electronic commerce system 121 (FIG. 1A) using the data provided in the action 167.
Subsequently, in box 309, the slave client application 185 determines whether a capture action 167 was received for the currently rendered network page of the slave client 108. If a capture action 167 is not received, execution of the slave client application 185 may return to box 306. Alternatively, if the page should be captured, execution of the slave client application 185 proceeds to box 312. In box 312, the slave client application 185 may store various data associated with the network page in the capture data 138 (FIG. 1A). The capture data 138 may include, for example, a screen capture of the network page as rendered in the browser 162, a DOM tree as created from the network page by the browser 162, data associated with placement of the elements of the DOM tree, various attributes of the network page session as reported by the state monitor 163 (FIG. 1A), and/or other data associated with the network page.
Then, in box 315, the slave client application 185 determines if a collection request has been received from the master client application 165. If no collection request is received, execution of the slave client application 185 returns to box 306. Alternatively, if a collection request is received, execution of the slave client application 185 proceeds to box 318. In box 318, the slave client application 185 collects the capture data 138 from the data store 181 (FIG. 1A) and transmits the capture data 138 to a destination specified by the master client 106 using FTP, HTTP, and/or other data transfer protocols as can be appreciated. Thereafter, this portion of the slave client application 185 ends as shown.
Turning now to FIG. 3B, shown is a flowchart that provides another example of the operation of a portion of the slave client application 185 according to various embodiments. The flowchart of FIG. 3B resembles FIG. 3A with the exception that box 303 is removed and box 306 has been replaced with box 307. In box 307, the slave client application 185 may obtain an action 167 (FIG. 1A) from the master client 106 (FIG. 1A). The action 167 may contain a DOM tree created from the network page by the browser 162 (FIG. 1A), browser session cookies and/or other data sufficient to masquerade or duplicate the communication session between the master client 106 and the electronic commerce system 121 (FIG. 1A) within each of the slave clients 108 (FIG. 1A) without modifying the state of the communication session established by the master client 106.
Referring next to FIG. 4, shown is a flowchart that provides one example of the operation of a portion of the capture differential engine 123 according to various embodiments. It is understood that the flowchart of FIG. 4 provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the capture differential engine 123 as described herein. As an alternative, the flowchart of FIG. 4 may be viewed as depicting an example of steps of a method implemented in the computing environment 103 (FIG. 1A) according to one or more embodiments.
Beginning with box 403, the capture differential engine 123 obtains various criteria with which to select and compare captures. Next, in box 406, the capture differential engine 123 correlates the specified criteria against the attributes for each of the captures as collected by the clients such as, for example, user login state, time of rendering, the URI of the network page, a product identifier of a product in the network page, type of browser 162 (FIG. 1A) used for the rendering, and/or other attributes as can be appreciated. As a result, the capture differential engine 123 identifies pairs of captures having attributes that are correlated to a minimum threshold degree.
Next, in box 409, the capture differential engine 123 may compare the captures using various techniques such as, for example, comparing images of the renderings by performing a pixel-by-pixel comparison identifying the locations in which the pixels of the image differ. The pixel comparison may be further adapted to compare only sub-regions of a rendered page rather than the entirety of the page. As another example, the captures may be compared by measuring differences in the dimensions of the DOM tree created for each capture by a respective browser 162. As a further example, images of the captures may be compared by one or more users who are then asked to identify the degree of similarity between the images. Furthermore, one or more of these techniques may be combined and the results weighted to generate a differential reflecting the degree of similarity among each pair of captures.
Subsequently, in box 412, the capture differential engine 123 determines whether the differential meets a threshold value. If the differential for the capture pair does not meet the threshold value, execution of the capture differential engine 123 proceeds to box 418. Alternatively, if the capture differential meets the threshold, in box 415, the capture differential engine 123 generates a notification of a potential problem with the respective network pages. Next, in box 418, the capture differential engine 123 determines if additional capture pairs exist to be examined. If additional capture pairs do exist, execution of the capture differential engine 123 returns to box 409. Alternatively, if no additional capture pair exists to be examined, execution of this portion of the capture differential engine 123 ends as shown.
With reference to FIG. 5, shown is a schematic block diagram of the computing environment 103 according to an embodiment of the present disclosure. The computing environment 103 may comprise one or more computing devices 500. The computing device 500 includes at least one processor circuit, for example, having a processor 503 and a memory 506, all of which are coupled to a local interface 509. To this end, the computing device 500 may comprise, for example, at least one server computer or like device. The local interface 509 may comprise, for example, a data bus with an accompanying address/control bus or other bus structure as can be appreciated.
Stored in the memory 506 are both data and several components that are executable by the processor 503. In particular, stored in the memory 506 and executable by the processor 503 are the electronic commerce system 121, capture differential engine 123, and potentially other applications. Also stored in the memory 506 may be a data store 112 and other data. In addition, an operating system may be stored in the memory 506 and executable by the processor 503.
It is understood that there may be other applications that are stored in the memory 506 and are executable by the processors 503 as can be appreciated. Where any component discussed herein is implemented in the form of software, any one of a number of programming languages may be employed such as, for example, C, C++, C#, Objective C, Java, Javascript, Perl, PHP, Visual Basic, Python, Ruby, Delphi, Flash, or other programming languages.
A number of software components are stored in the memory 506 and are executable by the processor 503. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor 503. Examples of executable programs may be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of the memory 506 and run by the processor 503, source code that may be expressed in proper format such as object code that is capable of being loaded into a random access portion of the memory 506 and executed by the processor 503, or source code that may be interpreted by another executable program to generate instructions in a random access portion of the memory 506 to be executed by the processor 503, etc. An executable program may be stored in any portion or component of the memory 506 including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.
The memory 506 is defined herein as including both volatile and nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. Thus, the memory 506 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, or a combination of any two or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other like memory device.
Also, the processor 503 may represent multiple processors 503 and the memory 506 may represent multiple memories 506 that operate in parallel processing circuits, respectively. In such a case, the local interface 509 may be an appropriate network 109 (FIG. 1A) that facilitates communication between any two of the multiple processors 503, between any processor 503 and any of the memories 506, or between any two of the memories 506, etc. The local interface 509 may comprise additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor 503 may be of electrical or of some other available construction.
With reference to FIG. 6, shown is a schematic block diagram of the client 106, 108 according to an embodiment of the present disclosure. The client 106, 108 includes at least one processor circuit, for example, having a processor 603 and a memory 606, both of which are coupled to a local interface 609. To this end, the client 106, 108 may comprise, for example, at least one server computer or like device. The local interface 609 may comprise, for example, a data bus with an accompanying address/control bus or other bus structure as can be appreciated.
Stored in the memory 606 are both data and several components that are executable by the processor 603. In particular, stored in the memory 606 and executable by the processor 603 are the browser 162, the state monitor 163, the client applications 165, 185, and potentially other applications. Also stored in the memory 606 may be a data store 161, 181 and other data. In addition, an operating system may be stored in the memory 606 and executable by the processor 603.
It is understood that there may be other applications that are stored in the memory 606 and are executable by the processors 603 as can be appreciated. Where any component discussed herein is implemented in the form of software, any one of a number of programming languages may be employed such as, for example, C, C++, C#, Objective C, Java, Javascript, Perl, PHP, Visual Basic, Python, Ruby, Delphi, Flash, or other programming languages.
A number of software components are stored in the memory 606 and are executable by the processor 603. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor 603. Examples of executable programs may be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of the memory 606 and run by the processor 603, source code that may be expressed in proper format such as object code that is capable of being loaded into a random access portion of the memory 606 and executed by the processor 603, or source code that may be interpreted by another executable program to generate instructions in a random access portion of the memory 606 to be executed by the processor 603, etc. An executable program may be stored in any portion or component of the memory 606 including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.
The memory 606 is defined herein as including both volatile and nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. Thus, the memory 606 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, or a combination of any two or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other like memory device.
Also, the processor 603 may represent multiple processors 603 and the memory 606 may represent multiple memories 606 that operate in parallel processing circuits, respectively. In such a case, the local interface 609 may be an appropriate network 109 (FIG. 1A) that facilitates communication between any two of the multiple processors 603, between any processor 603 and any of the memories 606, or between any two of the memories 606, etc. The local interface 609 may comprise additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor 603 may be of electrical or of some other available construction.
Although the electronic commerce system 121, capture differential engine 123, master client application 165, slave client application 185, and other various systems described herein may be embodied in software or code executed by general purpose hardware as discussed above, as an alternative the same may also be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies may include, but are not limited to, discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits having appropriate logic gates, or other components, etc. Such technologies are generally well known by those skilled in the art and, consequently, are not described in detail herein.
The flowcharts of FIGS. 2A-4 show the functionality and operation of an implementation of portions of the master client application 165, slave client application 185, and capture differential engine 123. If embodied in software, each block may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processor 503 in a computer system or other system. The machine code may be converted from the source code, etc. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).
Although the flowcharts of FIGS. 2A-4 show a specific order of execution, it is understood that the order of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession in FIGS. 2A-4 may be executed concurrently or with partial concurrence. Further, in some embodiments, one or more of the blocks shown in FIGS. 2A-4 may be skipped or omitted. In addition, any number of counters, state variables, warning semaphores, or messages might be added to the logical flow described herein, for purposes of enhanced utility, accounting, performance measurement, or providing troubleshooting aids, etc. It is understood that all such variations are within the scope of the present disclosure.
Also, any logic or application described herein, including the electronic commerce system 121, capture differential engine 123, master client application 165, and slave client application 185, that comprises software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as, for example, a processor 503 in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system. The computer-readable medium can comprise any one of many physical media such as, for example, magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical discs. Also, the computer-readable medium may be a random access memory (RAM) including, for example, static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.
It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiment(s) without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

## Claims

1. A non-transitory computer-readable medium embodying a program executable in at least one computing device, the program when executed, causing the at least one computing device to at least:
obtain, from a data store, a first plurality of captures corresponding to a first subset of a plurality of web pages, wherein individual ones of the first plurality of captures comprise a respective document object model (DOM) tree of a respective rendering of a respective one of the web pages in a browser;
obtain, from the data store, a second plurality of captures corresponding to a second subset of the plurality of web pages;
identify a plurality of correlated pairs of captures between the first plurality of captures and the second plurality of captures, individual ones of the plurality of correlated pairs of captures comprising a respective one of the first plurality of captures and a respective one of the second plurality of captures, wherein the plurality of correlated pairs of captures are identified has having a positive degree of correlation between a respective first plurality of attributes of the respective one of the first plurality of captures and a respective second plurality of attributes of the respective one of the second plurality of captures;
generate a plurality of differentials for individual ones of the correlated pairs comprising a measure of a difference in dimensions between a respective first DOM tree of the respective one of the first plurality of captures and a respective second DOM tree of the respective one of the second plurality of captures in a respective correlated pair; and
generate a notice in response to at least one of the differentials meeting a predefined threshold.

2. The non-transitory computer-readable medium of claim 1, wherein the first plurality of captures correspond to a rendering of the first subset of the plurality of web pages in a first computing device, and the second plurality of captures corresponds to a rendering of the second subset of the plurality of web pages in a second computing device distinct from the first computing device.

3. The non-transitory computer-readable medium of claim 1, wherein the browser is a first browser, and the first plurality of captures correspond to a rendering of the first subset of the plurality of web pages in the first browser, and the second plurality of captures corresponds to a rendering of the second subset of the plurality of web pages in a second browser distinct from the first browser.

4. A system, comprising:
at least one computing device
configured to at least:
obtain a first plurality of captures of a first subset of a plurality of network pages;
obtain a second plurality of captures of a second subset of the plurality of network pages;
identify a correlated pair of captures comprising one of the first plurality of captures and one of the second plurality of captures, the correlated pair of captures being identified according to a degree of correlation between a first plurality of attributes of the one of the first plurality of captures and a second plurality of attributes of the one of the second plurality of captures;
generate a differential for the correlated pair, wherein the differential comprises a difference in dimensions between a first document object model (DOM) tree of a first rendering in the one of the first plurality of captures and a second DOM tree of a second rendering in the one of the second plurality of captures; and
generate a notice associated with the correlated pair, in response to the differential meeting a predefined threshold.

5. The system of claim 4, wherein the one of the first plurality of captures comprises a first image rendering of a respective one of the first subset of the plurality of network pages, and the one of the second plurality of captures comprises a second image rendering of a respective one of the second subset of the plurality of network pages.

6. The system of claim 5, wherein the differential further comprises an image similarity metric based at least in part on the first image rendering and the second image rendering.

7. The system of claim 6, wherein the image similarity metric comprises a plurality of locations at which one of a plurality of pixels differs between the first image rendering and the second image rendering.

8. The system of claim 4, wherein the first plurality of captures correspond to a first browser, and the second plurality of captures correspond to a second browser distinct from the first browser.

9. The system of claim 4, wherein the at least one computing device is further configured to at least:
obtain, from a user, a degree of distinction between the one of the first plurality of captures and the one of the second plurality of captures; and
wherein the differential is based at least in part on the degree of distinction.

10. The system of claim 4, wherein the first plurality of attributes comprises a first login state, and the second plurality of attributes comprises a second login state.

11. The system of claim 4, wherein the at least one computing device is further configured to at least:
obtain, from a first client device, a network page request;
determine, from the network page request, at least one action, the at least one action, when performed by at least one second client device, duplicating a communication of the network page by the first client device; and
communicate the at least one action to the at least one second client device.

12. The system of claim 11, wherein the at least one computing device is further configured to at least:
obtain, from the first client device, a first capture corresponding to a response to the network page request; and
obtain, from the at least one second client device, at least one second capture corresponding to a response to a duplication of the network page request.

13. The system of claim 11, wherein the at least one computing device is further configured to at least:
store a response to the network page request in a cache; and
communicate, from the cache, to the at least one second client device, the response to the network page request in response to a duplication of the network page request.

14. A method, comprising:
obtaining, by at least one computing device, a first plurality of captures of a first subset of a plurality of network pages;
obtaining, by the at least one computing device, a second plurality of captures of a second subset of the plurality of network pages;
identifying, by the at least one computing device, a correlated pair of captures comprising one of the first plurality of captures and one of the second plurality of captures, the correlated pair of captures being identified according to a degree of correlation between a first plurality of attributes of the one of the first plurality of captures and a second plurality of attributes of the one of the second plurality of captures; and
generating, by the at least one computing device, a differential for the correlated pair of captures, wherein the differential comprises a measure of a difference in dimensions between respective document object model (DOM) trees of the correlated pair of captures.

15. The method of claim 14, wherein the differential further comprises an image similarity metric for respective image renderings of the correlated pair of captures.

16. The method of claim 15, wherein the image similarity metric comprises a means-squared differential.

17. The method of claim 15, wherein the image similarity metric is based at least in part on a degree of difference indicated by a user.

18. The method of claim 14, further comprising:
obtaining, by the at least one computing device, from a first client device, a network page request;
determining, by the at least one computing device, from the network page request, at least one action, the at least one action duplicating, when performed by at least one second client device, a communication of the network page request; and
communicating, by the at least one computing device, the at least one action to the at least one second client device.

19. The method of claim 18, wherein the at least one action comprises at least one of a network address manipulation or a browser session cookie duplication.

20. The method of claim 18, further comprising:
storing, by the at least one computing device, a response to the network page request in a cache; and
communicating, by the at least one computing device, from the cache, to the at least one second client device, the response to the network page request in response to a duplication of the network page request.