The disclosed implementations relate generally to a web content metering system, and in particular, to system and method for measuring opportunity to see (OTS) by a panelist using a router-based web meter.
Traditionally, the number of impressions of a particular piece of content is used as the measure of the number of times that the piece of content was displayed to end users/viewers. For example, each time that an ad is displayed to a user is counted as one impression for the ad. But an impression of the ad by the user (which is probably associated with a request to a corresponding ad server) does not necessarily mean that the user has actually been exposed to the ad. For example, the ad may be positioned at the bottom of a web page such that it is outside the browser window. If so, the user may not be exposed to the ad unless he or she scrolls the web page down to bring the ad into the browser window. Sometimes, in response to a user request, a web browser downloads and displays multiple web pages side by side, each web page having a respective tab. But unless a user selects a tab, that user will never be able to view an ad in the corresponding web page. Both of these examples illustrate situations where actual user exposure to content (including ads) is not accurately measured by content impressions.
In accordance with some implementations described below, a method for determining a user's web browsing activities on a computing device is disclosed. The method includes: receiving, at a network device, one or more documents from one or more web servers, wherein the one or more documents are responsive to a user request from the computing device and comprise information for rendering a web page on a display of the computing device; modifying at least one of the one or more documents by inserting a program into the document, wherein, when the program is executed by the computing device in connection with rendering a web page, the program is configured to determine which part of the web page is displayed on the computing device; and sending the one or more documents including the modified document to the computing device.
In accordance with some implementations described below, a method for determining a user's web browsing activities on a computing device is disclosed. The method includes: receiving, at a network device, one or more documents from one or more web servers, wherein the one or more documents are responsive to a user request from the computing device and comprise information for rendering a web page on a display of the computing device; modifying at least one of the one or more documents by inserting a program into the document, wherein, when the program is executed by the computing device in connection with rendering a web page, the program is configured to determine which part of the web page is displayed on the computing device; and sending the one or more documents including the modified document to the computing device.
In accordance with some implementations described below, a computer system for determining a user's web browsing activities on a computing device is disclosed, the computer system having memory to store one or more programs and one or more processors for executing the one or more programs. The one or more programs, when executed by the one or more processors, cause the computer system to: receive one or more documents from one or more web servers, wherein the one or more documents are responsive to a user request from the computing device and comprise information for rendering a web page on a display of the computing device; modify at least one of the one or more documents by inserting a program into the document, wherein, when the program is executed by the computing device in connection with rendering a web page, the program is configured to determine which part of the web page is displayed on the computing device; and send the one or more documents including the modified document to the computing device.
The aforementioned implementation of the invention as well as additional implementations will be more clearly understood as a result of the following detailed description of the various aspects of the invention when taken in conjunction with the drawings. Like reference numerals refer to corresponding parts throughout the several views of the drawings.
A network router is located at a household and exchanges data packets with one or multiple clients in the household. In some implementations, the network router is configured to inspect the data packets sent to or received from the clients for various purposes, e.g., determining the association between a data packet and a respective client, preventing network attacks, etc. Multiple network routers are connected to a proxy server 50. The proxy server 50 is a device located between multiple clients and the rest of the Internet 30 (e.g., web servers 40) and its functions include pre-fetching web contents from the web servers 40 and storing them in a local database so that the proxy server 50 can serve a client request for certain web contents more promptly if the requested web contents are already in the local database.
There are multiple ways of measuring the opportunity to see (OTS) specific web content for an end user, some of which measure a user's activities on the web content regardless of whether or not the user has agreed to such measurement. But as described below, the approaches discussed in the present application are based on the assumption that end users are given the opportunity to opt into (or out of) use of the OTS metering programs. For example, the end users are participants of web metering panels who have agreed, expressly or implicitly, that when and where the OTS metering programs can be employed to determine the opportunity to see for web pages received at the router in order to more accurately measure web usage of the participants.
In some implementations, OTS metering software is downloaded onto a client after a user at the client authorizes such downloading. The downloaded OTS metering software is configured to measure the user's web browsing activities, including the user's activities on specific web content (e.g., ads), and send user activities reports to the OTS server 60. Note that this approach limits the OTS measurement to a particular computing device that has installed the OTS metering software. If a household has multiple computing devices with Internet access capability (which is very common today), this approach will not be able to capture the user activities on a computing device that does not install the software.
In some implementations (as will be described in more detail below), an entity such as the network routers (20-1, 20-2, 20-N) or the proxy server 50 is configured to inspect the web content to be sent to a particular client and determine whether the web content satisfies one or more predefined conditions. If the web content satisfies the predefined conditions, the network router 20 or the proxy server 50 or both will work in concert to modify or update the web content by introducing OTS metering software into the web content to be measured and then send the modified web content to a client that requests such content. This approach typically involves a third-party that has access to or control over the network routers (20-1, 20-2, 20-N) or the proxy server 50. For example, a company, which is interested in metering the users' web browsing activities in a household, may provide a customized network router to the household and also enter a contract with the household members such that they agree that their web browsing activities be logged and analyzed for various purposes.
Besides performing router-related functions, the customized network router is configured to intercept one or more data packets from a web server and investigate whether the data packets satisfy one or more predefined conditions. For example, one predefined condition is that data packets returned from a predefined web server (e.g., an ad server) should be modified to include the OTS metering software for measuring the user's exposure to certain ad. In this case, the customized network router will at least look into the header of a data packet to determine whether it is from a particular web server and, if so, take actions accordingly, e.g., generating one or more data packets including an OTS metering program and forwarding the data packets to a client that is supposed to receive the ad-related data packets.
In some implementations, the task of inserting an OTS metering program into a stream of data packets is split into two sub-tasks. For example, the network router is responsible for data packet inspection. Whenever identifying a set of data packets that require OTS metering service, the network router notifies the proxy server by sending one or more identified data packets to the proxy server, which is responsible for data packet modification. This split of task is more preferred if the network router has limited data processing capability and it may take a substantial amount of time to have the network router modify the data packets, which would adversely affect the user experience at the client that receives the data packets.
In response to the request, the web servers 40 prepare the requested web content 220 and return the content 220 to the requesting client 10 via the router 20. As shown in
Next, the client 10 invokes the OTS metering program to measure a user's content browsing 245 and generate an OTS report 250 accordingly. In some implementations, the OTS report includes whether the user has accessed a predefined portion of a web page (e.g., an ad), when the user starts/stops browsing the predefined portion, whether the user has any further interaction with the predefined portion (e.g., moving a mouse cursor into the predefined portion or clicking a link in the predefined portion), etc. Note that it would be apparent to one skilled in the art that the OTS metering program may measure other attributes associated with the user's web browsing activities. Finally, the client 10 (or more specifically, the OTS metering program running on the client 10) sends the OTS report 250 to the OTS server 60 according to a predefined schedule.
Note that it is assumed that the network router 20 shown in
As part of or following the content analysis 225, if the router 20 determines that the web content, which is to be provided to the client 10, satisfies certain predefined conditions that might require measuring user activities on the web content, the router 20 will send a content inspection/modification request 230 to a proxy server 50. In response, the proxy server 50 performs content modification 235 to the web content identified by the router 20 by inserting, e.g., an OTS metering program into a set of data packets corresponding to the web content.
In some implementations (as shown in
The client 10 then invokes the OTS metering program to measure a user's content browsing 245 and generate an OTS report 250 accordingly. At the end, the client 10 (or more specifically, the OTS metering program running on the client 10) sends the OTS report 250 to the OTS server 60 according to a predefined schedule.
Memory 312, or alternately one or more storage devices within memory 312, includes a non-transitory computer readable storage medium. In some implementations, the memory 312 and/or the non-transitory computer readable storage medium includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices. In some implementations, memory 312 and/or the non-transitory computer readable storage medium includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some implementations, memory 312 and/or the non-transitory computer readable storage medium includes one or more storage devices remotely located from the processor(s) 202. In some implementations, memory 312 or the computer readable storage medium of memory 312 stores the following programs, modules and data structures, or a subset thereof:
It should be noted that at least some or all of the functionalities of the proxy server 50 may be implemented in a network router 20 as described above in connection with
Memory 412, or alternately one or more storage devices within memory 412, includes a non-transitory computer readable storage medium. In some implementations, the memory 412 and/or the non-transitory computer readable storage medium includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices. In some implementations, memory 412 and/or the non-transitory computer readable storage medium includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some implementations, memory 412 and/or the non-transitory computer readable storage medium includes one or more storage devices remotely located from the processor(s) 402. In some implementations, memory 412 or the computer readable storage medium of memory 412 stores the following programs, modules and data structures, or a subset thereof:
Finally, two flow charts are described below, which correspond to the two implementations described above in connection with
Next, the network router modifies (520) at least one of the one or more documents by inserting a program (e.g., an OTS metering program) into the document. When the program is executed by the computing device in connection with rendering a web page, the program is configured to determine which part of the web page is displayed on the computing device (521). In some implementations, the network router, before modifying a document, determines (522) whether the document satisfies a predefined condition. For example, the network router may check the headers of data packets associated with the document and determine whether the data packets are provided by an ad server. If so, the network router goes ahead modifying the document by inserting an OTS metering program into the existing data packets or newly-generated data packets. If not, the network router skips (524) modifying the document because the document may not correspond to a predefined portion of a web page that satisfies any predefined OTS trigger conditions.
Finally, the network router sends (530) the one or more documents including the modified document to the client computing device. Up receipt of the one or more documents, the computing device may convert them (including the modified document) into a web page to be rendered on a display of the computing device. As noted above, when a user browses the web page, the inserted OTS metering program will be invoked to measure the user activities on the web page (or at least a portion of the web page that corresponds to the modified document). The OTS metering program may determine which portion of the web page is currently viewed by the user, how long the user has viewed that portion of the web page, and whether there is any interaction between the user and the portion of the web page such as mouse hovering or mouse click, etc. In some implementations, the OTS metering program first stores the OTS metering data on the client computing device and then submits the data to a remote OTS server. In some other implementations, the OTS metering program may transmit the OTS metering data on the fly while measuring the user's web browsing activities.
The network router then forwards (560) the identified document to a remote server (e.g., a proxy server 50) that is communicatively coupled to the computing device. In some implementations, the remote server is responsible for modifying the document by inserting a program (e.g., an OTS metering program) into the document. When the program is executed by the computing device in connection with rendering a web page, the program is configured to determine which part of the web page is displayed on the computing device (565). As describe above in connection with
Upon receipt of the modified document from the remote server (570), the network router then sends (580) the one or more documents including the modified document to the client computing device. The computing device then converts them (including the modified document) into a web page to be rendered on a display of the computing device. When a user browses the web page, the inserted OTS metering program will be invoked to measure the user activities on the web page (or at least a portion of the web page that corresponds to the modified document). The OTS metering program may determine which portion of the web page is currently viewed by the user, how long the user has viewed that portion of the web page, and whether there is any interaction between the user and the portion of the web page such as mouse hovering or mouse click, etc. In some implementations, the OTS metering program first stores the OTS metering data on the client computing device and then submits the data to a remote OTS server. In some other implementations, the OTS metering program may transmit the OTS metering data on the fly while measuring the user's web browsing activities.
Reference has been made in detail to implementations, examples of which are illustrated in the accompanying drawings. While particular implementations are described, it will be understood it is not intended to limit the invention to these particular implementations. On the contrary, the invention includes alternatives, modifications and equivalents that are within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the implementations.
Although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, first ranking criteria could be termed second ranking criteria, and, similarly, second ranking criteria could be termed first ranking criteria, without departing from the scope of the present invention. First ranking criteria and second ranking criteria are both ranking criteria, but they are not the same ranking criteria.
The terminology used in the description of the invention herein is for the purpose of describing particular implementations only and is not intended to be limiting of the invention. As used in the description of the invention and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, operations, elements, components, and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting,” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
Although some of the various drawings illustrate a number of logical stages in a particular order, stages that are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be obvious to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.
The foregoing description, for purpose of explanation, has been described with reference to specific implementations. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The implementations were chosen and described in order to best explain principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various implementations with various modifications as are suited to the particular use contemplated. Implementations include alternatives, modifications and equivalents that are within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the implementations.