Obtaining metrics for client-side display of content

Active script can be provided with content to be displayed on a computing device to determine whether advertising, intended to be displayed with the content, is actually displayed by the computing device. The script can examine various aspects of the code used to render the content, to determine whether ad-blocking software is blocking the ad or something is otherwise preventing the advertising from being displayed. Information about the visibility of the advertising can be sent to a location such as a logging service, which can store the data until such time as the data is to be retrieved and processed, such as to determine an extent to which client devices are blocking ads to be displayed with content.

BACKGROUND

Users are increasingly utilizing computing devices to access various types of content. Oftentimes the content is provided at little or no cost to the user, with a provider of the content obtaining monetization through the display of one or more advertisements along with the content. As advertising can negatively impact the user experience in at least some cases, users have increasingly utilized what is commonly referred to as “ad blocking” software to minimize the presence of advertising on Web pages or other displays of content. Ad blocking software can prevent an ad from being requested or loaded, or can at least prevent the ad from being visible to the user. Such functionality can impact the ad-based revenue of the provider, and can impact the advertiser attempting to display that ad as well. Content providers, advertisers, and other such entities can benefit from obtaining information about the prevalence of ad-blocking software among users accessing the content. Conventional approaches, however, do not provide a way for such an entity to readily determine whether a client device, under the control of a remote user, is using ad-blocking software to prevent the display of advertising.

DETAILED DESCRIPTION

Systems and methods in accordance with various embodiments of the present disclosure overcome one or more of the above-referenced and other deficiencies in conventional approaches to monitoring the display of advertising and/or other content in an electronic environment. In particular, various embodiments utilize active scripting on a client device to determine whether the display of content, such as advertising, has been prevented and/or modified by software executing on the client device. In some embodiments, an active script such as JavaScript® can analyze code (e.g., HTML) for content displayed on a computing device to determine whether tags, values, or other information indicative of advertising have been removed or adjusted to prevent or minimize the display of that advertising. Other aspects of the display can be determined as well, such as which portions of the content were visible, which portions of the content the user interacted with, etc. The JavaScript can cause this information to be submitted to a logging service or other such entity which can store the information for subsequent retrieval and/or analysis. In at least some embodiments the logged information might be processed or transformed to be in a format useful for aggregating with other data of a provider or advertiser, for example, in order to allow for conventional querying, reporting, or other such tasks.

FIG. 1(a) illustrates an example of a display100of content that can be presented in accordance with various embodiments. In this example, a user has requested a page of content corresponding to a jacket of interest to the user. The content can include, for example, an image102of the jacket, a description104of the jacket, an option106to purchase the jacket, and other such information or content. While a page of content relating to an item is presented for purposes of explanation, it should be understood that other types of content, such as search results, electronic book content, multimedia content, and the like, can be presented to a user via a computing device as well within the scope of the various embodiments. As illustrated, the display100also includes an advertisement108displayed with the content. The advertisement might be provided with the content, or the code (e.g., HTML, XML, CSS, etc.) for displaying the content might include code causing one or more advertisements to be obtained from a third party and displayed with the content, according to any restrictions set by the content provider. As illustrated in the display120ofFIG. 1(b), the code can include instructions enabling the advertisement to be selected and/or displayed differently according to a specific type of device122or device characteristics, display or window settings, or other such information. InFIG. 1(b) a similar advertisement126is displayed with content124for the item of interest, which might also have display settings, content, or characteristics adjusted for the type of device, screen, settings, etc. In this example, however, the advertising is primarily in the form of text and/or hyperlinks, among other such options.

As mentioned, the computing device used to display the content might utilize software, such as ad-blocking software or content-control software, to prevent and/or minimize the display of advertising on the device. In some embodiments, applications such as Web browsers used to display content can include ad-blocking functionality to prevent such display. As an example,FIG. 2illustrates a display200of content similar to that ofFIG. 1(a), but where ad-blocking software has prevented the display of the advertisement illustrated inFIG. 1(a). While such functionality can potentially improve the user experience, the user is unable to view the ad, follow a link associated with the ad, purchase a product or service associated with the ad, or perform another such task which can result in revenue for the provider of the content. Accordingly, the user is then essentially getting the content for free, which when used by a significant number of users can potentially cause the provider to no longer be able to afford providing the content without charging users or otherwise obtaining revenue. Providers, advertisers, and other such entities would thus like to be able to determine a prevalence of such software to determine the ability to monetize the content through advertising, in order to determine whether other monetization approaches should be used, whether other advertising approaches should be taken, of for any of a number of other such purposes.

Approaches in accordance with various embodiments can take advantage of active script, such as JavaScript, executing on the client device to obtain information about the content displayed on the device and report that information to a logging service or other such entity for subsequent retrieval and/or analysis. The script can be installed on the client device, part of an application used to view the content, included with the code used to display the content, and/or contained within the content itself. Various other ways of causing the script to be executed on (or in communication with) the client device can be utilized as well within the scope of the various embodiments.

Approaches in accordance with various embodiments take advantage of the fact that conventional ad-blocking software manipulates and/or prevents the display of advertising primarily in a number of specific ways. When advertising is displayed with content on a Web page, for example, the code (e.g., HTML or CSS) for the page will typically include one or more specific entries that are associated with advertising. The ad-blocking or other software can take advantage of these entries to determine likely advertising and adjust the code to affect the display of that advertising.

For example,FIG. 3(a) illustrates a first example of a section of HTML code300that can be used to display content in accordance with various embodiments. In this example, the code includes a <DIV> tag that separates out the advertising from the main content, as <DIV> tags typically are used to designate logical sections of a document, page, or other piece of content. Various other such tags or indicators can be utilized as well for other protocols, technologies, etc. The code also includes a link to be used with an advertisement, where the link is associated with a known advertising entity. The code can include other objects as well, such as links to one or more images, which can include an associated hyperlink to a different domain in some embodiments. Any or all of these occurrences can be indicative of an advertisement to be displayed with the content. Similarly,FIG. 3(b) illustrates an example of CSS code320including <DIV> elements directed to advertising. Various other types of code for displaying an advertisement can be included as well in various other examples. Ad-blocking software can be programmed to detect any of these or other indicators of advertising and adjust the code used to display the content in order to impact the display of the advertising. As an example,FIG. 3(c) illustrates sample JavaScript code340for detecting ad-blocking software that can be utilized in accordance with various embodiments.

For example, ad-blocking software can determine a section corresponding to an advertisement that might be separated from the main content section using a <DIV> or similar element. The ad-blocking software might cause the entire section corresponding to the <DIV> to be deleted from the code before rendering the display of content. In some embodiments the ad-blocking software might replace the link to the advertising image with a link to a dummy image, such as a transparent image of one pixel in width and one pixel in height. Such an approach keeps the <DIV> section in the code, as the removal of these sections for some displays of content can inadvertently impact other sections of the page as well. In other embodiments the ad-blocking software could set the height and/or width of the ad space to 0 pixels, set the opacity/visibility/transparency value such that the image is not displayed and/or visible, or perform another such action. Active code on the client device then can check for the occurrence (or lack of occurrence) of such values or code, and can report the findings to a logging service or other such entity. In many cases a user will have the ability to opt-in or opt-out of such reporting or client-side metric generation, or can otherwise control the type of information that can be automatically obtained from the device.

Since the most popular ad-blocking software, which can take the form of a standalone application, plug-in, feature of a browser, etc., typically attempts to minimize impact on the delivery of non-advertising content, portions of the code are likely not deleted but instead various properties adjusted, which enables active script included with the code to be executed on the client device in many cases. In at least some embodiments, the code for a page of content can include a module, object, widget, or other code segment that includes script programmed to execute on the client device and determine whether code such as a <DIV> element associated with advertising has been rendered visible on the client device. A determination of visibility can be based on a number of different factors (e.g., CSS properties) as discussed elsewhere herein, as may include values for height, width, opacity, visibility, transparency, and the like. The script can be configured to then report or otherwise send information for the determination, along with any other identifying or collected information, to a remote location, such as a logging service, for subsequent analysis. The reporting can be done shortly after the determination is completed, the next time the device transfers information, when a determined amount of information has been gathered, at regular intervals, or at any other appropriate times. Further, the destination for the information can be associated with the provider of the content, the advertising entity, or a third party providing statistics or metrics on ad blocking, among other such options.

The active script can be included in an ad response, for example, where the script is included with code for displaying the advertisement. As known in the art, displays of content such as Web pages often include calls or requests to one or more servers or services to obtain advertising for a page, and an ad response is returned that includes the code for displaying the ad, information for the ad, any images for the ad, etc. The script can be included with each such response, or can be included in a determined fraction or percentage of the ad responses in order to obtain information for a sampling of the content displays. In other embodiments the script could be provided with the code for the main content display, installed on the client device, or otherwise provided.

FIG. 4illustrates an example environment400in which various embodiments can be implemented. In this example, a user is able to use a client device402to submit a request for content, such as a Web page or electronic book, across at least one network404. Although a portable computing device (e.g., an electronic book reader, smart phone, or tablet computer) is shown as the client device, it should be understood that any electronic device capable of receiving, determining, and/or processing input can be used in accordance with various embodiments discussed herein, where the devices can include, for example, desktop computers, notebook computers, personal data assistants, video gaming consoles, television set top boxes, and portable media players, among others. The at least one network404can include any appropriate network, such as may include the Internet, an Intranet, a local area network (LAN), a cellular network, and the like. The request can be sent to an appropriate content provider environment406, which can provide one or more services, systems, or applications for processing such requests.

In this example, the request is received to a network interface layer408of the content provider environment406. The network interface layer can include any appropriate components known or used to receive requests from across a network, such as may include one or more application programming interfaces (APIs) or other such interfaces for receiving such requests. The network interface layer408might be owned and operated by the provider, or leveraged by the provider as part of a shared resource or “cloud” offering. The network interface layer can receive and analyze the request from the client device402, and cause at least a portion of the information in the request to be directed to an appropriate system or service, such as a server410(e.g., a Web server or application server), among other such options. In the case of Web pages, for example, at least one server410might be used to generate code and send content for rendering the requested Web page. In cases where processing is to be performed, such as to generate search results, perform an operation on a user input, verify information for the request, etc., information might also be directed to at least other server410for processing. The servers or other components of the environment might access one or more data stores, such as a data store418that contains information about the various users, and one or more content repositories420storing content able to be served to those users.

Once the appropriate components of the content provider environment406have determined the appropriate information, a response can be returned to the client device402over the network. This can include any relevant content, as well as code and/or script for rendering the content. As discussed, if advertising is to be included with the display of content, the code can also include code, links, or other information for obtaining the advertising. As discussed, this can include code for controlling display properties of the ad, as well as a call to one or more advertising entities424to obtain information for the advertisement, as may include text and/or image information stored in at least one data store426. Where the ad is to be provided from an advertising entity, a browser application on client device402in some embodiment can be caused to submit a request to the advertising entity424across the network, which can return a response including the image, text, or other information for the ad(s) to be displayed. The request can include any appropriate information for selecting an ad to display as known in the art for such purposes. In some embodiments, the script on the page can cause a request to be submitted to an ad request service412, or other such component, that can communicate with the advertising entity424and then package the active script with the advertising content for submission to the client device402. In other embodiments, the advertising and script will be determined by the ad request service412when the page is rendered, and the information will all be sent together to the client device402. In at least some embodiments, the ad request service is configured to first determine whether the user and/or client device has opted in to, or out of, the tracking of client side metrics before including the active script with the ad response.

When the page of content and any ads are loaded, and when the active script on the page is executed, the active script executing on the client device402can analyze the properties of the page displayed to determine whether the ad is visible. The script can then cause at least one call or request to be submitted to a least one logging service414, within or outside the provider environment406, where the call or request included information about the visibility of the advertising and/or the presence of ad-blocking software, among other such options. In some embodiments the information can be a true/false value or similar indicator of whether ad blocking is active on the client. The information can then be stored to a log data base or similar location for subsequent analysis. In some cases, the information in the log data store will periodically be pulled and transformed to a format that can be stored to a table in the user data store, or other data repository or data store422, for reporting or statistical analysis with other data, enabling various types of reporting and analysis to be performed across various types of data.

FIG. 5illustrates an example process500for obtaining client-side metrics for advertising blocking and/or display that can be utilized in accordance with various embodiments. It should be understood that there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments unless otherwise stated. In this example, a request for content is received502from a client device. Code and/or content for the request is determined for the request. An advertising entity can be contacted504for advertising content, where the advertising entity can be contacted by the client device, an advertising request service, or another such component as discussed herein. Once the advertising content is received506, the advertising content and active script can be added508with the requested content and a response sent510to the client device, where that response contains the ad, the content, and the script. When the script executes on the client device, the script will determine whether ad blocking software is active on the client device based upon any of various factors as discussed herein. A logging request, such as an AJAX request, then can be received512where that logging request includes information about whether the ad blocking software was active and/or the advertising was visible on the client device. The visibility data for the client device then can be stored514or logged for subsequent analysis.

In addition to ad blocking and/or visibility, various other client side metrics can be obtained using a similar approach. Any widget, module, or other code segment transmitted to a client device can potentially include active script that, when executed, can determine one or more aspects about what was performed and/or displayed on the client device. This data can include, for example, rate of viewing, scrolling or resizing by a user, window dimensions, amount of interaction (e.g., cursor or finger hover) by one or more users, etc.

Upon obtaining client side-metrics, a provider or advertiser can monitor the effectiveness of various approaches. For example, the provider can change the way ads are displayed or the source of various ads to attempt to get around ad blocking algorithms. The provider also can whitelist various ads, which can reduce the rate of those ads being blocked. The provider also can determine, based upon the amount of revenue being generated by advertising, whether a user should be charged for access to the content and/or resources provided, as well as how much to charge.

FIG. 6illustrates an example electronic user device600that can be used in accordance with various embodiments. Although a portable computing device (e.g., an electronic book reader or tablet computer) is shown, it should be understood that any electronic device capable of receiving, determining, and/or processing input can be used in accordance with various embodiments discussed herein, where the devices can include, for example, desktop computers, notebook computers, personal data assistants, smart phones, video gaming consoles, television set top boxes, and portable media players. In this example, the computing device600has a display screen602on the front side, which under normal operation will display information to a user facing the display screen (e.g., on the same side of the computing device as the display screen). It should be understood that computing devices such as servers, however, may not have dedicated display elements. The example computing device600also includes at least one networking component604, such as a network interface card, wireless networking component, and the like, enabling the computing device to communicate information over at least one network.

FIG. 7illustrates a logical arrangement of a set of general components of an example computing device700such as the device600described with respect toFIG. 6. In this example, the device includes a processor702for executing instructions that can be stored in a memory device or element704. As would be apparent to one of ordinary skill in the art, the device can include many types of memory, data storage, or non-transitory computer-readable storage media, such as a first data storage for program instructions for execution by the processor702, a separate storage for images or data, a removable memory for sharing information with other devices, etc. The device typically will include some type of display element706, such as a touch screen or liquid crystal display (LCD), although devices such as portable media players might convey information via other means, such as through audio speakers. In some embodiments, the computing device700ofFIG. 7can include one or more networking and/or communication elements708, such as a Wi-Fi, Bluetooth, RF, wired, or wireless communication system. The device in many embodiments can communicate with a network, such as the Internet, and may be able to communicate with other such devices. In some embodiments the device can include at least one additional input component710able to receive conventional input from a user. This conventional input can include, for example, a push button, touch pad, touch screen, wheel, joystick, keyboard, mouse, keypad, or any other such device or element whereby a user can input a command to the device. In some embodiments, however, such a device might not include any buttons at all, and might be controlled only through a combination of visual and audio commands, such that a user can control the device without having to be in contact with the device.

As discussed, different approaches can be implemented in various environments in accordance with the described embodiments. As will be appreciated, although a Web-based environment may be used for many examples herein for purposes of explanation, different environments may be used, as appropriate, to implement various embodiments. Such a system can include one or more electronic client devices, which can include any appropriate device operable to send and receive requests, messages or information over an appropriate network and convey information back to a user of the device. Examples of such client devices include personal computers, cell phones, handheld messaging devices, laptop computers, set-top boxes, personal data assistants, electronic book readers and the like. The network can include any appropriate network, including an intranet, the Internet, a cellular network, a local area network or any other such network or combination thereof. Components used for such a system can depend at least in part upon the type of network and/or environment selected. Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the network can be enabled via wired or wireless connections and combinations thereof.