HK1168956B - Systems, methods, and apparatus to monitor mobile internet activity - Google Patents
Systems, methods, and apparatus to monitor mobile internet activity Download PDFInfo
- Publication number
- HK1168956B HK1168956B HK12109020.1A HK12109020A HK1168956B HK 1168956 B HK1168956 B HK 1168956B HK 12109020 A HK12109020 A HK 12109020A HK 1168956 B HK1168956 B HK 1168956B
- Authority
- HK
- Hong Kong
- Prior art keywords
- port
- request
- content
- internet
- client device
- Prior art date
Links
Description
Technical Field
The present invention relates generally to monitoring internet activity and, more particularly, to a system, method and apparatus for monitoring mobile internet activity.
Background
In recent years, methods of accessing internet content have evolved. For example, internet content has previously been accessed primarily via computer systems such as desktop and laptop computers. Recently, handheld mobile devices (e.g., smart phones) have been proposed to enable users to request and view internet content. Mobile devices typically (but not always) request and receive internet content via a wireless access network, such as a cellular network.
Drawings
FIG. 1 is a block diagram of an example system for monitoring mobile Internet activity.
Fig. 2 and 2A are block diagrams illustrating example requests and responses flowing through the example system of fig. 1.
Fig. 3 is a block diagram of the example agent of fig. 1.
FIG. 4 is a flow diagram representing example machine readable instructions that may be executed to implement the example agents of FIGS. 1, 2, and 3.
FIG. 5 is a flow diagram representing example machine readable instructions that may be executed to implement the example registrar (registry) of FIG. 1.
FIG. 6 illustrates an example configuration file that may be generated by the example registrar of FIG. 1.
Fig. 7 is a block diagram of an example computer that may execute machine-readable instructions of, for example, fig. 4 and/or 5 to implement the example monitor of fig. 1, 2, and 3, and/or the example registrar of fig. 1.
Detailed Description
Mobile monitoring companies wish to gain knowledge about how users interact with their handheld mobile devices, such as smart phones (interactions). In particular, mobile monitoring companies want to monitor and/or internet traffic (traffic) from handheld mobile devices, to monitor exposure (exposure) of advertisements, to determine effectiveness of advertisements, to determine user behavior, to identify purchasing behavior associated with various demographic characteristics (demographics), among other things. Some known systems have used proxy servers to monitor internet content transmitted to/from monitored devices.
These known monitoring systems implement a proxy server as an HTTP proxy that communicates with the monitored handheld device via a single port and requires that the monitored device provide authentication credentials (authentication certificate) including a username/device name and password that uniquely identify the mobile device participating in the internet communication. These monitoring systems enable mobile monitoring companies to associate internet activity with a mobile device from which the internet activity originated based on a username and password. Internet activity on handheld mobile devices is not limited to the use of browsers (e.g.,). For example,is/are as followsAndiPad ofTMMany third party applications (commonly referred to as "applications") that access internet content are supported to perform ad hoc functions. For example, the weather application may request HTTP data from www.weather.com and display the HTTP data. These applications typically do not allow unlimited browsing on the internet, web site by web site (although they may allow movement within a defined set of web pages). Thus, applications typically provide access to a limited set of data on the internet. Rather, the browser enables the user to virtually access any publicly available site on the internet (subject to restrictions such as content masker) and to display content directly to the user (e.g., a website such as www.weather.com).
While some applications accessing internet content respond correctly to proxy requests to provide credentials, many applications, such as the weather application of the previous example, currently do not support proxy authentication and therefore cannot function when a proxy requests credentials. This can be frustrating to the panelist (paneist) and can cause the panelist to forgo participation in the monitoring panelist. Furthermore, it is desirable for the monitoring entity to monitor internet activity without affecting the way in which user behavior. Failure of the application due to the monitoring technique is inconsistent with this expectation.
To avoid inherent errors in using an authentication agent, the example system shown in FIG. 1 uses a non-authentication agent. A problem with using agents that do not request authentication credentials (i.e., non-authentication agents) is that this approach is not suitable for user identification, and that user identification is necessary to associate activity behaviors with demographics. The example system of fig. 1 solves this problem by: hosting (host) a unique non-authenticated port for each panelist and/or mobile device; and instructing each monitored mobile device to communicate using its uniquely assigned port. This use of multiple ports enables the monitoring entity to uniquely associate the internet traffic it detects with panelists and/or mobile devices participating in such traffic. While previous monitoring systems host proxy connections on a single port, such as port 8080, the proposed monitoring system hosts connections on many available ports (e.g., ports 0-65535). If a particular port is associated with other internet traffic, those ports are omitted from the list of available ports. For example, ports 0 to 1023 are defined as well-known ports by the Internet Assigned Numbers Authority (IANA) and are prohibited from being used without registration. Thus, well-known ports are not used in the example system of FIG. 1.
The example monitoring system of fig. 1 records an identification of data requested and/or received by a client device and/or some or all of the data itself. The identification of data and/or the data itself (e.g., web page content) is collectively referred to herein as "session data. The session data is recorded in association with the panelists via the port number at which the session data is sent. The monitoring system can uniquely identify the site(s) that a particular panelist is visiting, and how the panelist interacts with their mobile device, based on recorded session data and port numbers, while avoiding disruption of service to the panelist.
Fig. 1 is a block diagram of an example system 100 for monitoring mobile internet activity. The example system monitors and/or receives internet traffic from handheld mobile devices (e.g., the first client device 110 associated with a first panelist 115, the second client device 130 associated with a second panelist 135). Monitored internet traffic between monitored devices (e.g., client devices 110 and 130) and internet sites (e.g., internet content provider(s) 170) is routed (route) to the example monitoring system 100. As shown in fig. 1, traffic passes through a wireless (e.g., cellular) communication system (e.g., internet service provider 145 and communication links 120, 140). The example monitoring system 100 includes a registrar 155, a storage database 160, and an agent 165.
The example first client device 110 and second client device 130 of fig. 1 are handheld mobile devices. Although the first client device 110 is shown in the illustrated example as beingAnd the second client device 130 is shown as a flip phone, but any other type of device may be used. For example, other types of phones, laptops, desktops, Personal Digital Assistants (PDAs), netbooks, or tablet computers (e.g.,iPadTM). The first client device 110 and the second client device 130 may implement any mobile operating system and may implement any type of hardware and/or form factor (form factor). In the illustrated example, the first client device 110 and the second client device 130 are mobile devices and communicate via a first wireless communication link 120 and a second wireless communication link 140.
The first communication link 120 and the second communication link 140 in the illustrated example are cellular communication links. However, any other communication method and/or system, such as an ethernet connection, a Bluetooth connection, a WiFi connection, etc., may additionally or alternatively be used. Further, the example first communication link 120 and second communication link 140 of fig. 1 implement a cellular connection via global system for mobile communications (GSM). However, any other communication system and/or protocol such as Time Division Multiple Access (TDMA), Code Division Multiple Access (CDMA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE), etc. may be used. When alternative communication methods and/or systems are used (e.g., WiFi), the topology (topology) of the communication system may include a firewall that blocks internet communications using a particular port. When the port uniquely assigned to a panelist is screened by the firewall, the client device may not be able to function as intended and/or present an error message to the panelist.
The first panelist 115 and the second panelist 135 in the illustrated example are panelists participating in monitoring the business. Although the example system of fig. 1 is a panelist-based system, non-panelist and/or hybrid panelist systems may alternatively be used. In the illustrated example panelist system, demographic information is obtained from a user when the user joins and/or registers with a panelist. The demographic information may be obtained from the user via a telephone interview by having the user complete an online survey or the like. Any desired method (e.g., random selection, statistical selection, phone solicitation (phone solicitation), internet advertising, surveys, advertisements in shopping malls, etc.) may additionally or alternatively be used to contact and/or recruit (enlist) panelists.
In the illustrated example, a first panelist 115 and a second panelist 135 are associated with a first client device 110 and a second client device 130, respectively. In the illustrated example, the client devices 110, 130 are owned, leased, or belong to their respective panelists. The monitoring entity in the illustrated example does not provide these client devices. In other systems, panelists may be equipped with client devices to participate in the panelist. Although in the illustrated example, the first client device 110 and the second client device 130 are each associated with a single panelist, the first client device 110 and the second client device 130 may alternatively be associated with more than one panelist. For example, a home may have a single client device that may be shared among multiple users. With the client device being a portable computer (e.g.,iPadTM) The sharing of the client device is less common when the client device is a cellular telephone than when the client device is a cellular telephone.
The internet service provider 145 in the illustrated example provides wireless internet services to the first client device 110 and the second client device 130 via the communication links 120, 140. In the illustrated example, wireless services are provided via a cellular connection. However, the internet service provider 145 may provide internet services via any other type of connection. Further, the internet service provider 145 may implement the cellular connection via global system for mobile communications (GSM). However, any other communication system and/or protocol may be used. In practice, the internet service provider 145 is sometimes referred to as a bearer (carrier) and provides client devices with access to a bearer network.
In the illustrated example, the monitoring system 100 is shown as a plurality of computing systems. However, the monitoring system 100 may ultimately consist of a single computing system. In the illustrated example, the monitoring system 100 includes a registrar 155, a storage database 160, and an agent 165. However, additional structures may be implemented to perform one or more portions of the plurality of functions implemented by registrar 155, storage database 160, and/or agent 165, and/or other functions.
In the example of fig. 1, the registrar 155 receives registration information from the panelists 115, 135 and stores records identifying the panelists 115, 135 and/or their respective client devices 110, 130. In the illustrated example, the record identifying the panelists 115, 135 is a port number assigned to the panelist (e.g., the port assigned to the panelist can be 50,000 and the record identifying the panelist can be 50,000). In the illustrated example, the received registration information includes demographic information. However, any other information may additionally or alternatively be collected. The registration information may include, for example, information identifying a model of a mobile device associated with a panelist, a mailing address associated with the panelist, an email address associated with the panelist, a telephone number associated with the mobile device, a unique identifier of the panelist and/or the mobile device (e.g., a social security number of the panelist, a telephone number of the mobile device, a zip code of the panelist, and/or any combination or derivation of any information related to the panelist and/or the mobile device), an age of the panelist, a gender of the panelist, a race of the panelist, a marital status of the panelist, an income of the panelist, and/or a household (household) of the panelist, The status of the panelists' work, where the panelists generally intend to use their devices, how long the panelists have owned their devices, the educational hierarchy of the panelists, and/or any other information related to the panelists or mobile devices.
In the illustrated example, the registration data is received by the registrar 155 via an electronic interface (e.g., by a panelist entering data in a form on a website or answering a survey question on a website). However, the registrar may receive the registration data via other means. For example, the registrar can receive the registration data via a personal interview (over the phone or on the fly), a phone interface, direct mail, purchase list, and the like. Although the registrar 155 in the illustrated example is an electronic system, the registrar 155 may alternatively be implemented manually by: a person or group of persons collects and enters enrollment data into the storage database 160.
Upon receiving the registration data, the registrar 155 in the illustrated example creates a record associating panelist and device identifier information with the collected demographic information. The registrar 155 may also assign a unique alphanumeric identifier to the panelist or device. The identifier may be based on, for example, a serial number of the client device. The record is stored in the storage database 160. In the illustrated example, the registrar 155 also assigns a unique port number to the panelists 115, 135 and/or the client devices 110, 130 and stores the port number in the record (or in association with the record for the panelists and/or the client devices). As described above, the registrar may assign and store additional identifiers in addition to assigning and storing port numbers. For example, the registrar may assign and store identifiers for client devices and/or panelists. The identifier(s) of the panelist or client device may be the same as the port number, or the identifiers may be different from the port number.
In addition to assigning and storing port numbers, the registrar 155 in the illustrated example generates a configuration document. In the illustrated example, the configuration document is an extensible markup language (XML) file that implements a property list (referred to herein as plist) file that includes configuration data such as port numbers and internet proxy addresses to be used by corresponding panelists and/or client devices. However, other information such as Comma Separated (CSV) documents, Portable Document Format (PDF) documents, Microsoft WindowsDocuments, and the like. In the illustrated example, the configuration document is signed using the public/private key infrastructure (infrastructure). For example, the configuration document may be marked via a digital certificate (digital certificate). However, the profile may alternatively not be marked. If the profile is not flagged, the profile appears to the panelist as an invalid (invalid) profile, which may cause the panelist to forgo participation in the panelist. The configuration file is sent to the corresponding client device (e.g., via an email message with an attached (attached) file or with a link to the file). The client device then interprets the data in the profile to apply the data (e.g., port number and internet proxy address) to future communications for the mobile device. In the illustrated exampleIn an example, the configuration file causes the mobile device to perform the steps of: send all internet traffic to the internet address of the proxy 165; and specifying a unique port number assigned to the client device in such communication. As a result, all internet communications to and/or from the mobile device are addressed to the uniquely assigned port of the proxy 165 and thus may be identified or associated with that particular client device. In the illustrated example, forAnd/oriPadTMThe explanation is made to realize the plist file. However, the mobile device may be any other type of mobile device. Further, the profile may be custom generated for the particular type of mobile device based on a model of the mobile device identified to (or by) the registrar as part of the registration data.
Although in the example of fig. 1, the document is an electronic document that is the only port that may be interpreted by the client device to automatically configure the client device to send internet-related messages to the agent 165, the document may additionally or alternatively include an instruction document that may direct the panelist regarding how to configure the client device to communicate with the agent. The instruction document may thus instruct the panelist regarding how to apply the profile or may instruct the panelist regarding how to apply the data stored in the profile directly to the client device.
As described above, the registrar 155 sends the configuration document to the panelists and/or client devices. In the illustrated example, the configuration file is provided via an electronic mail (email) message. The email message includes a hyperlink for downloading the configuration file to the client device. However, any other method of transmitting the profile may additionally or alternatively be used. For example, the profile may be sent as an attachment to an email message, registrar 155 may send a Short Message Service (SMS) message that includes a link to an internet address or a textual representation of the internet address at which the client device may download the profile, may send a direct mail to a panelist that includes an instruction document and/or otherwise includes electronic media containing the profile, may initiate (place) a telephone call to verbally (oraly) instruct the panelist on how to configure the client device, and so forth.
The registrar 155 of fig. 1 is implemented by a processor executing instructions, but may alternatively be implemented by an ASIC, DSP, FPGA or other circuit. The storage database 160 receives identifiers from the registry 155 that associate panelists 115, 135 with client devices 110, 130 and stores the identifiers. In addition, the storage database 160 receives monitoring data from the agent 165 and stores the monitoring data. The monitoring data is associated with the corresponding panelist and/or client device via a port number for the corresponding monitored internet traffic. The storage database 160 can also store data that is not identifiers and/or measurement data. For example, updated software and/or updated firmware for any component of monitoring system 100 may be stored in storage database 160. In addition, the storage database 160 can store information that enables the registrar 155 to generate the profile. For example, storage database 160 may store registration information such as models of client devices 110, 130. Additionally, the storage database 160 may store demographic data as collected by the registrar 155.
The storage database 160 may be any means for storing data, such as flash memory, magnetic media, optical media, and the like. Further, the data stored in the storage database 160 may be in any data format such as binary data, comma separated data, tab separated data, Structured Query Language (SQL) structures, and the like. Although the storage database is illustrated as a single database in the illustrated example, the storage database 160 may be implemented by a plurality of databases.
The proxy 165 in the illustrated example receives requests from the client devices 110, 130 via the wireless internet service provider 145. The requests of the client devices 110, 130 are received by the proxy 165, since the configuration files have been applied to the respective plurality of client devices and instruct the client devices to send all subsequent requests through the proxy 165. The proxy 165 is located at the internet proxy address identified in the configuration file and receives the request via the port associated with the client device. In the illustrated example, these ports are dynamic and/or private (private) ports defined by the Internet Assigned Numbers Authority (IANA). Thus, the range of assignable ports used by the illustrated proxy 165 for internet traffic with the monitored client device is 49152 through 65535. By using only dynamic and/or dedicated ports, the set of panelists served by a single agent 165 is effectively limited to 16383 client devices. This size may be extended with additional agents at other internet addresses. Additional agents at other internet addresses may be implemented by the same agent 165 or by multiple agents. For example, the proxy 165 may have multiple internet addresses assigned to the network interface (e.g., virtual interface) of the proxy 165, or the proxy 165 may have multiple network interfaces each having an internet address. Although only ports used within the scope of dynamic and/or dedicated ports are used in the illustrated example, any other ports may additionally or alternatively be used. For example, registering ports within a port range and/or a well-known port range may potentially be used to increase the set of panelists with a single agent to as large as 65535 panelists. In scenarios where a panelist monitoring system, such as monitoring system 100, is being tested, the panelist typically includes at least sixty panelists, and thus the agent 165 will use at least sixty ports (e.g., one port per panelist). In scenarios where an ongoing panelist is used, a panelist size of at least 1500 panelists may be used, and thus the agent 165 will use at least 1500 ports (e.g., one port per panelist).
Upon receiving a request from a client device 110, 130, the proxy 165 retrieves (retrieve) the requested internet content from the internet content provider 170 (or from a local cache if, for example, the internet content was previously requested and stored). To identify the panelist associated with the request, communications to and from each particular panelist are conducted through a uniquely assigned (e.g., dedicated) port. While communication between the client devices 110, 130 is conducted using the proxy 165 through a single port (e.g., a port assigned to the client devices 110, 130 by the registrar 155), communication between the proxy 165 and the internet content provider 170 may be accomplished through any port. Typically, the ports used by the proxy to communicate with the content provider 170 are limited to hypertext transfer protocol (HTTP) data occurring through port 80. After the requested internet content is obtained from the internet content provider 170, the content is relayed to the requesting client device 110, 130 via the assigned port in the illustrated example. Additionally or alternatively, the content may be relayed to the requesting client device 110, 130 via a port other than the assigned port (e.g., port 80).
The proxy 165 in the illustrated example stores requests for internet content originating from the client devices 110, 130 and/or portion(s) of such requests in the database 160 in association with the port numbers at which such requests were received. In storing these requests, the agent 165 may additionally store other identifiers, such as an identifier of the client device 110, 130 and/or an identifier of a panelist 115, 135. Additionally or alternatively, the agent 165 may store a portion of the internet content in the storage database 160. For example, the proxy 165 may store the body of a web page sent to the client device 110, 130. In another example, the agent 165 may store an identifier of an advertisement that appears on a web page sent to the customer. This is particularly useful in the case of advertisements that are cycled (rotate) on the web site. Additionally or alternatively, the proxy 165 may store characteristics of the response such as the HTTP header, a status code of the HTTP header, a content type of the HTTP header, and the like.
The internet content provider 170 provides content to customers via the internet. In the illustrated example, the proxy 165 acts as an intermediary (intermediary) for the client devices 110, 130, and thus the proxy 165 is a client of the internet content provider 170. Internet content is typically provided through port 80 because most internet content is in the form of HTTP data. However, any other port may be used to provide internet content. For example, File Transfer Protocol (FTP) data may be sent through port 21, Secure Socket Layer (SSL) based HTTP may be sent through port 443, and so on.
The internet content provider 170 may be any provider. For example, the internet content provider 170 may include a web server hosting web pages formatted as hypertext markup language (HTML) content. Alternatively, the internet content provider 170 may be an application server that provides application content to applications that access internet content. The format of the application content may be HTML, XML, or any other protocol or port may be used to return the content to the requestor. In some examples, the application content is implemented in a protocol specific to the application requesting the internet content (e.g., a weather application like that described above).
FIG. 2 is a block diagram 200 illustrating example requests and responses flowing through the example system of FIG. 1. The block diagram 200 of fig. 2 illustrates communications between the mobile device 205, the carrier network 230, the proxy 165, the storage database 160, the internet 240, and the internet content provider 170. The mobile device 205 is representative of either of the client devices 110, 130 and includes a device networking subsystem 210, a browser application 215, an application 220 to access internet content, and a user interface 225. In addition, the block diagram illustrates a first request 235, a second request 245, a first response 250, and a second response 255.
Device networking subsystem 210 provides a framework for sending and receiving content. Device networking subsystem 210 may facilitate via an application processorA software system for networking communications, a browser engine, a baseband processor for sending network traffic, and/or any other system implementation that provides a framework for sending and receiving content. In the illustrated example, the device networking subsystem is provided by a network interface atNetworked libraries in operating systems. However, any other library, system, or program may additionally or alternatively be used.
The browser application 215 and the application 220 that accesses internet content are applications that are executed by a processor of the mobile device 205. The browser application 215 requests HTTP internet content from the internet content provider 170 and renders (render) the HTTP content for display. Additionally or alternatively, the browser application may request and present HTTPS internet content. In some examples, the browser application is composed ofAnd (5) realizing. However, any other application may alternatively be used. For example, Pocket Internet Explorer may be used. In some examples, the HTTP internet content is HTML content. However, the content may be shown in any format that may be rendered by the browser application 215.
The application 220 that accesses the internet content may be any application on the mobile device that requests the internet content. For example, the application 220 accessing internet content may be a weather application accessing internet content provided by www.weather.com. The internet content provider 170 providing www.weather.com with content may respond to the content request with HTML data. However, any other type of data may be included in the content request. For example, an internet content provider 170 providing www.weather.com with content may provide an XML file containing a brief (condensed) weather forecast. Additionally or alternatively, the application 220 accessing internet content may request media (media) such as photos, videos, audio, and the like. Typically, the application 220 accessing internet content is limited to a small amount of information to be displayed. For example,the weather application may not be able to display sports news. Although browser 215 or application 220 accessing internet content may initiate a request for content, such as inIn some devices, the requests are formatted and sent by the device networking subsystem 210 based on system wide settings that control the routing and/or addressing of the requests (e.g., to a particular port of the proxy 165).
The user interface 225 in the illustrated example provides a display to the user and receives input from the user. The user interface 225 may include hardware, a graphical library, and/or a graphical driver for displaying content to panelists, and may include hardware, an input library, and/or an input driver for receiving input from the panelists. Either or both of the browser application 215 and the application 220 accessing internet content may use the user interface to display content and receive input.
The carrier network 230 is hosted by the internet service provider 145. In the illustrated example, the carrier network 230 is an Internet Protocol (IP) version 4(IPv4) based network. However, any other networking technology may additionally or alternatively be implemented. For example, carrier network 230 may implement the IP version 6(IPv6) protocol. Further, the bearer network 230 in the illustrated example is implemented with the communication links 120, 140. Although a cellular connection is shown, any other communication method, such as an ethernet network, a WiFi network, etc., may additionally or alternatively be used. In addition, bearer network 230 is shown as a public network. However, the network may be a private network.
The proxy 165 receives a first request 235 for internet content from the mobile device, obtains the content by sending a second request 245 to the corresponding content provider 170, receives the content in a response 250 from the content provider 170, and relays the content to the mobile device 205 via the second response 255. In the illustrated example, the proxy 165 stores the identity and/or identifier of the request and/or response in the storage database 160. These characteristics and/or identifiers may be, for example, a timestamp of the request and/or response, an IP address of the client, a user agent (agent) of the request, a status code of the response, a content type of the response, and so forth. However, the agent 165 may additionally store the responsive internet content in the storage database 160. In relaying the request, the proxy 165 translates (translate) the port of the request, as described below in connection with FIG. 2A.
The internet 240 in the illustrated example is a public network. However, a private network may alternatively be used. For example, an organization and/or company internal network may be used to determine how members of the organization and/or employees of the company use internal network content via mobile devices.
The illustrated example shows a communication flow for a single request. A first request 235 is sent from the mobile device 205 to the proxy 165 over the bearer network 230. The first request 235 uses the unique port assigned to the mobile device 205 (e.g., port 50,000) and is directed to HTTP content (e.g., the request is directed to content served through port 80). However, the requested content may be requested through any port. For example, the request may be for File Transfer Protocol (FTP) content and may occur through port 21. The agent 165, upon receiving the first request 235, stores some or all of the request in the storage database 160 and generates a second request 245. The second request 245 is a valid translation of the first address as shown in FIG. 2A. The second request is addressed to the internet content provider 170 identified in the first request 235. Since the first request 235 identifies content to be served through the port 80, the second request 245 in the illustrated example is sent over the port 80 via the internet 240. The internet content provider 170 responds to the second request 245 with a first response 250. The proxy 165 receives the first response 250 via the port 80, stores some or all of the response in the storage database 160, and forwards the contents of the first response 250 as the second response 255 to the mobile device 205 through the port assigned to the mobile device 205.
Fig. 2A is a block diagram 201 illustrating example requests and responses flowing through the example system of fig. 1. The block diagram 201 includes a proxy 165, internet content provider(s) 170, a mobile device 205, a carrier network 230, and the internet 240. The block diagram 201 additionally includes a first request 235, a second request 245, a first response 250, and a second response 255. Further, the requests and responses in the illustrated example are represented by HTTP request and response headers. The first request 235 is represented by a first HTTP request header 236 and the second request 245 is represented by a second HTTP request header 246. The first response 250 is represented by a first HTTP response header 251 and the second response 255 is represented by a second HTTP response header 256.
The first HTTP request header 236 is a header of a GET request generated by the mobile device 205. In the illustrated example, the internet content provider 170 is identified by an absolute Uniform Resource Locator (URL) identified in the first row of the first HTTP request header 236, and the address and uniquely assigned port of the proxy 165 is identified by the "Host" row of the first HTTP request header 236. The host computer (host) identified in the illustrated example is proxy. However, any other address, and any other port, of the identifying agent 165 may alternatively be used. For example, the address identifying the proxy 165 may be an Internet Protocol (IP) address of the proxy 165. In the illustrated example, the absolute URL of the Internet resource is "http:// www.weather.com/home. However, any other URL may additionally or alternatively be used.
The proxy 165 receives the first content request 235 and generates a second content request 245. The second content request 245 is represented by a second HTTP request header 246. In the illustrated example, the second HTTP request header 246 is a GET request directed to "HTTP:// www.weather.com" and is sent through port 80 because no other port than port 80 is identified. In the illustrated example, the content being requested from "http:// www.weather.com" is "/home. The agent generates the contents of the second request by examining (instect) the first request 235. For example, the proxy 165 identifies the requested content of the first request 235 as "http:// www.weather.com/home. html", determines that the port to convert to is port 80 (identified by http:// h), determines that the identified internet content provider 170 is "http:// www.weather.com", and determines that the requested web page from the internet content provider is "/home. html". The second content request 245 is sent through port 80 because the proxy 165 determines that the requested content is HTTP content and no alternative port number is specified. Alternatively, the content identified by the first content request 235 may be content provided on a port other than port 80. In this example, the absolute URL of the first HTTP request header 236 identifies the requested content as "HTTP:// www.weather.com: html "to tell that the content identified by the request is provided on port 1234. In addition, the proxy 165 generates a second HTTP request header 246 and includes a port 1234 (e.g., www.weather.com: 1234) in the identified host computer.
The internet content provider 170 receives a second content request 245, which is responded to via a first response 250. The first response 250 is sent to the proxy 165. In the illustrated example, the first response is sent through port 80 because the first response is a response to a content request made on port 80. However, any other port may be used to send the first response to the proxy 165. The agent 165 receives the first response 250 and determines the correct port on which the second response 255 should be sent. In the illustrated example, the agent 165 determines the port that should send the second response by associating the first response 250 with the first request 235 via the second request 245. In such an example, the agent 165 may identify the first request 235 that originated on port 50,000, and thus, should send a second response on port 50,000. However, any other method of determining the port to send the second response may additionally or alternatively be used. Further, the response may be sent through a port other than the port assigned to mobile device 205.
Fig. 3 is a block diagram of the example proxy 165 of fig. 1. The example proxy 165 includes a request and response port 305, a request server (server) 310, an internet content processor 315, a content collector 320, and an internet port 325. Request and response port 305 receives requests from client devices 110, 130 and/or sends responses to client devices 110, 130. The request received by port 305 is transmitted to request server 310. The content collector 320 sends requests and receives responses from the internet content provider 170 via the internet port 325. The internet content processor 315 stores the requests (or portions of the requests) and/or the retrieved content (or portions of the content or identifiers associated with the content) in the storage database 160.
The request and response ports 305 in the illustrated example are Transmission Control Protocol (TCP) ports and/or User Datagram Protocol (UDP) ports. However, any other port-based system may additionally or alternatively be used. The request and response ports in the illustrated example are dynamic and/or dedicated ports defined by IANA. Similarly, port 305 is within the range of port 49152 to port 65535 (including port 49152 and port 65535). However, these ports may use only some of this range (the portions used may or may not be continuous) and/or these ports may include ports in any other range such as Well-known (Well Defined) ports (range from port 0 to port 1023) and/or registered ports (range from port 1024 to port 49151).
The request server 310 in the illustrated example receives requests from the request and response port 305 and performs port translations. Port translation may not be necessary if the agent is hosted via the same port that hosts the requested content. For example, if the proxy is hosted on port 80 and the content request is for content (e.g., HTTP content) provided on port 80, no port translation occurs. First, the request is examined to determine the destination port intended for communication with the internet content provider 170. For example, in many cases, the request will be for HTTP content, and the destination port will be identified as port 80. However, any other destination port may be used. For example, FTP traffic may be switched to port 21. The content collector 320 is responsible for collecting the content identified in the request (e.g., by sending the converted request to the corresponding content provider). Once the content is collected, the requesting server 310 performs another port conversion on the received content response to generate a converted response and sends the converted response to the client device through the port assigned to the client device making the request.
The internet content processor 315 in the illustrated example determines the port (e.g., port 50,000) that received the request and stores the request in the storage database 160 in association with the port to uniquely identify the client device. Additionally or alternatively, the internet content processor 315 can use the port number to determine and store the panelist ID and/or the client device ID generated by the registrar 155 at the time of registration. In the illustrated example, the internet content processor 315 stores requests for content. However, the internet content processor 315 may store less than the entire request, a symbol for the request, and the like, as shown in the table of fig. 3. Additionally or alternatively, the internet content processor 315 can store the content provided in the response and/or segments (segments) and/or portions of the content provided in the response in the storage database 160. For example, the internet content processor 315 may store advertisements sent to the client device in the storage database 160.
The content collector 320 in the illustrated example requests content identified by the request for internet content. In particular, the content collector 320 uses the internet address of the requested content of the request via one of the plurality of ports 305 to generate a second request for collecting the requested internet content. The content collector 320 sends the second request via the internet port 325. The internet port 325 in the illustrated example is a Transmission Control Protocol (TCP) port and/or a User Datagram Protocol (UDP) port. However, any other port-based system may additionally or alternatively be used. The internet port in the illustrated example is for HTTP traffic (e.g., port 80). However, any other port may be used. For example, port 21 may be used for File Transfer Protocol (FTP) traffic.
Although an example manner of implementing the agent 165 of fig. 1 has been illustrated in fig. 1 and 3, one or more of the elements, processes and/or devices illustrated in fig. 3 may be combined, separated, rearranged, omitted, removed and/or implemented in any other way. Further, the request and response port 305, the request server 310, the internet content processor 315, the content collector 320, the internet port 325, and/or (more generally) the example agent 165 of fig. 3 and/or the example registrar 155 of fig. 1 may be implemented by hardware, software, firmware, and/or any combination of hardware, software, and/or firmware. Thus, for example, any of the example request and response port 305, the example request server 310, the example internet content processor 315, the example content collector 320, the example internet port 325, and/or (more generally) the example proxy 165 can be implemented via one or more circuits, programmable processors, Application Specific Integrated Circuits (ASICs), Programmable Logic Devices (PLDs), and/or Field Programmable Logic Devices (FPLDs), among others. When reading any of the appended device claims embodied in software and/or firmware only, at least one of the example request and response port 305, the example request server 310, the example internet content processor 315, the example content collector 320, the example internet port 325, the example agent 165, the example registrar 155, and/or the storage database 160 is therefore expressly defined to include hardware and/or a computer-readable medium, such as a memory, DVD, CD, etc., that stores software and/or firmware. Further, the example agent 165 of fig. 1 and 3 may include one or more elements, processes and/or devices in addition to or instead of those illustrated in fig. 3, and/or may include more than one of any or all of the illustrated elements, processes and devices.
A flowchart representative of example machine readable instructions for implementing the proxy 165 of fig. 1 and/or 3 is shown in fig. 4. Further, a flowchart representative of example machine readable instructions for implementing registrar 155 of fig. 1 is shown in fig. 5. In these examples, the machine readable instructions comprise program(s) for execution by a processor, such as processor 712 shown in example computer 700 discussed below in connection with fig. 7. The program may be embodied in software stored on a computer readable medium such as a CD-ROM, a floppy disk, a hard drive, a Digital Versatile Disk (DVD), or a memory associated with the processor 712, but the entire program and/or parts thereof could alternatively be executed by a device other than the processor 712 and/or embodied in firmware or dedicated hardware. Further, although the example program is described with reference to the flowcharts illustrated in fig. 4 and 5, many other methods of implementing the example agent 165 and/or the example registrar 155 may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks may be changed, removed, or combined.
As described above, the example processes of fig. 4 and 5 may be implemented using coded instructions (e.g., computer readable instructions) stored on a tangible computer readable medium such as a hard drive, a flash memory, a Read Only Memory (ROM), a Compact Disc (CD), a Digital Versatile Disc (DVD), a cache, a Random Access Memory (RAM), and/or any other storage medium that stores information for any duration (e.g., for extended periods, permanently, brief instances, for temporarily buffering (buffering), and/or for caching of the information). As used herein, the term tangible computer readable medium is expressly defined to include any type of computer readable memory and to exclude propagating signals. Additionally or alternatively, the example processes of fig. 4 and 5 may be implemented using coded instructions (e.g., computer readable instructions) stored on a non-transitory (non-transitory) computer readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory, and/or any other storage medium that stores information for any duration (e.g., for extended periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable medium and to exclude propagating signals.
Fig. 4 is a flow diagram representing example machine readable instructions 400 that may be executed to implement the example agents of fig. 1, 2, and 3. The routine of FIG. 4 begins at block 405 where the example machine readable instructions 400 begin execution. First, the requesting server 310 of the proxy 165 waits for a content request (block 405). In the illustrated example, the request server 310 waits for content requests only on the port assigned to the client. However, the request server 310 may wait for content requests on any or all ports. In addition, request server 310 may check an Internet Protocol (IP) address against known range(s) of IP addresses to determine whether the request should be serviced. For example, the known range of IP addresses may include a range of IP addresses assigned to a particular internet service provider and/or bearer. This may, for example, limit the use of the proxy 165 to mobile devices. If request server 310 determines that the request does not originate from an IP address within a particular internet service provider, request server 310 may ignore the request.
The request server 310 then receives the content request on the port. Because multiple requests for content may be received at substantially the same time, the proxy 165 may receive a first content request on a first port (block 410) and a second content request on a second port (block 430). In the illustrated example, these content requests are processed in parallel to reduce the amount of time spent responding to the requests. However, these content requests may be handled in any other form. For example, these content requests may be processed serially. The parallel processing of any number of requests is represented in FIG. 4 by the points "…".
Next, the content collector 320 generates a second request(s) based on the corresponding plurality of requests received at blocks 410 and 430 to obtain the Internet content identified in the corresponding content request (blocks 415 and 435). The content collector 320 collects the requested internet content by sending the second request via the internet port 325. In the illustrated example, port 80 is used to send requests. However, any other port may additionally or alternatively be used.
The internet content processor 315 also associates the content request with the corresponding requesting device and stores the association in a storage database (blocks 420 and 440). In the illustrated example, the internet content processor 315 associates the first content request with the corresponding client device using the port number at which the first content request was received. Since each port is used only by a single client device, each client device can be uniquely identified based on the port number of the port that received the request. Further, when storing the association in the storage database 160, the internet content processor 315 can store one or more identifiers of ports, client devices, panelists, and the like. Additionally, the internet content processor 315 may store the returned content or a portion of the returned content in the storage database 160 (blocks 420, 440).
The internet content processor 315 may filter the content stored in the storage database. For example, the internet content processor 315 may only store content requests requesting HTTP content because requests for non-HTTP content may not be properly parsed when analyzing the information. As another example, the internet content processor 315 may omit style (style) content (e.g., Cascading Style Sheet (CSS) documents) from content stored in the storage database 160 because the style content may have limited use in analyzing information.
The request server 310 completes servicing the request from the client device by sending the requested internet content to the client device via the port at which the content request was received (blocks 425 and 445). Control returns to block 405 where the requesting server 310 waits for more content requests (block 405).
FIG. 5 is a flow diagram representative of example machine readable instructions 500 that may be executed to implement the example registrar 155 of FIG. 1. The example machine readable instructions 500 of FIG. 5 begin execution at block 503 where the panelist 115, 135 submits registration data to the registrar 155 (block 503). In the illustrated example, the registration data is received by the registrar 155 via an electronic interface (e.g., a website) (block 505). However, the registrar may receive the registration data in any other manner. For example, the registrar may receive the registration data via a telephone interface, direct mail, predefined listing, and the like.
The registrar 155 then assigns a unique port to the panelist (block 510). In the illustrated example, the unique port is within a dynamic and/or dedicated port range (e.g., ports 49152 through 65535) as defined by IANA. However, any other port number in any other range may alternatively be used. In the illustrated example, because ports are assigned on a per port basis for one panelist, the port numbers serve as unique identifiers for the client devices and/or panelists.
Registrar 155 generates a configuration file (block 515). The configuration file includes a unique port assigned to the client device of the panelist, and an internet proxy address. The internet proxy address is the address of the proxy 165. The port number is a port of the agent 165 and is uniquely associated with the panelist. In the illustrated example, the configuration document is an extensible markup language (XML) file implementing a property list (plist) file that includes configuration data including a port number and an internet proxy address. However, documents such as Comma Separated (CSV) documents, Portable Document Format (PDF) documents, and the like may be generated,Documents, and the like. In the illustrated example, the profile is signed using public/private key infrastructure. However, the profile may alternatively not be marked. If the profile is not flagged, the profile appears to the panelist as an invalid profile, which may cause the panelist to forgo participation in the panelist.
The registrar 155 then sends the configuration file to the client device (block 520). In the illustrated example, the configuration file is sent via an electronic mail (email) message. The email message includes a hyperlink that can be selected to download the configuration file. However, any other method of sending the profile may additionally or alternatively be used. For example, the profile may be sent as an attachment to an email message, registrar 155 may send a Short Message Service (SMS) message that includes an internet address where the client device may download the profile, may send a direct mail to a panelist that includes an instruction document and/or otherwise includes an electronic medium containing the profile, may initiate a telephone call to verbally instruct the panelist regarding how to configure the client device, and so forth. The panelist and/or the client device then receives the configuration file (block 523).
The client device 110, 130 is then configured via the configuration file (block 525). Since the profile is an electronic document that can be interpreted by the client device 110, 130, the client device receives the transmitted profile and automatically applies the settings contained in the document so that other client-initiated (origin) internet requests are addressed to the corresponding port of the proxy 165. However, the configuration file may additionally or alternatively include instructional documents that instruct the panelist how to configure the client device. The instruction document may thus instruct the panelist how to apply the profile or may instruct the panelist how to manually apply the data in the profile.
Subsequent requests for internet content by the client devices 110, 130 are routed according to the profile when applying the data contained in the profile. In particular, since the configuration file includes an internet proxy address and a unique port number assigned to the client device, requests are proxied through the internet proxy address via the unique port number.
FIG. 6 illustrates an example configuration file 600 generated by the example registrar 155 of FIG. 1. The example configuration file 600 includes configuration data 605. Configuration data 605 includes an internet proxy address 610 and a unique port assignment 615.
Configuration file 600 is an extensible markup language (XML) file that implements a property list (plist) file that includes configuration data such as a port number and internet agent address for agent 165. However, documents such as Comma Separated (CSV) documents, Portable Document Format (PDF) documents, and the like may be generated,Documents, and the like. In the illustrated example, the configuration file is implemented as a plist file in order to support being a mobile deviceAny other mobile device, however, may additionally or alternatively be used, and the mobile device may implement any other operating system (e.g.,Android,etc.). For example, the configuration file may be formatted differently or may be in a different format to support implementation-by-implementationThe client device of an operating system other than the implemented operating system.
FIG. 7 is a block diagram of an example computer 700 capable of executing the instructions of FIGS. 4 and 5 to implement the monitoring system of FIG. 1. The computer 700 may be, for example, a server, a personal computer, or any other type of computing device.
The system 700 in this example includes a processor 712. For example, can be obtained byA series of,Series orOne or more of the seriesA microprocessor to implement the processor 712. Of course, other processors from other families are also suitable.
The processor 712 communicates with a main memory including a volatile memory 718 and a non-volatile memory 720 via a bus 722. Volatile memory 718 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 720 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 714 is typically controlled by a memory controller (not shown).
The computer 700 also includes an interface circuit 724. The interface circuit 724 may be implemented by any type of interface standard such as an ethernet interface, a Universal Serial Bus (USB), and/or a PCI express interface.
One or more input devices 726 are connected to the interface circuit 724. Input device(s) 726 enable a user to enter data and commands into processor 712. The input device(s) may be implemented by, for example, a keyboard, a mouse, a touch screen, a track-pad, a track ball, an isopoint, and/or a voice recognition system.
One or more output devices 728 are also connected to the interface circuit 724. The output device 728 may be implemented, for example, by a display device (e.g., a liquid crystal display, a cathode ray tube display (CRT), a printer and/or speakers). The interface circuit 724 thus typically includes a graphics driver card.
The interface circuit 724 also includes a communication device such as a modem or network interface card (e.g., the request server 310) to facilitate exchange of data with external computers via a network (e.g., an ethernet connection, a Digital Subscriber Line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
The computer 700 also includes one or more mass storage devices 730 for storing software and data. Examples of such mass storage devices 730 include floppy disk drives, hard disk drives, compact disk drives, and Digital Versatile Disk (DVD) drives. Mass storage 730 may implement storage database 160.
The encoded instructions 732 of fig. 4 and 5 may be stored in mass storage 730, volatile memory 718, non-volatile memory 720, local memory 714, and/or a removable storage medium such as a CD or DVD.
As can be appreciated from the foregoing, example methods, apparatus, and products have been disclosed to enable internet content requests by mobile devices to still uniquely identify the requesting device and/or panelist without requiring authentication credentials, whether the request is initiated by a browser or an application accessing the internet content.
Although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.
Claims (31)
1. A method of monitoring internet activity, the method comprising the steps of:
assigning a first port of an agent to a mobile device associated with a panelist based on registration information received from the panelist;
sending a properties list file to the panelist, the properties list file instructing the mobile device to send a future request for internet content to the first port of the agent, the future request originating from at least one of a browser or an application separate from the browser;
receiving a first request for internet content on the first port of the agent, the first request originating from the mobile device, the mobile device sending the first request via a cellular wireless access point;
associating the first request for internet content with a demographic of the panelist with which the mobile device is associated based on the identifier of the first port;
requesting content from an internet content provider identified in the first request, the internet content provider being different from the agent; and
and transmitting the content.
2. The method of claim 1, wherein the step of transmitting the content comprises the steps of: transmitting the content via the first port.
3. The method of claim 1, further comprising the steps of: storing the first request for internet content in a database.
4. The method of claim 1, further comprising the steps of: the requested internet content is stored in a database.
5. The method of claim 1, further comprising the steps of: if the first request for internet content originates from an internet protocol address outside of an internet protocol address range, the first request is not serviced.
6. The method of claim 5, wherein the range of internet protocol addresses is a range of internet protocol addresses representing devices on a cellular network.
7. The method of claim 1, wherein the first port is within a range of at least one of a dynamic port and a dedicated port.
8. The method of claim 1, wherein the request for internet content is non-authenticated.
9. A method of monitoring internet activity, the method comprising the steps of:
sending an attribute list file to a panelist, the attribute list file instructing the mobile device to send a future request for internet content to a first port of an agent;
receiving a request for internet content on the first port of the agent, the request originating from the mobile device, the mobile device sending the request via a cellular wireless access point, wherein the request for internet content is received on different ports of the agent that respectively correspond to different panelists in a panelist group, the sum of the first port and other ports used by the agent corresponding to the number of panelists in the panelist group;
associating the request for internet content with the mobile device based on the identifier of the first port;
requesting content from an internet content provider identified in the request for internet content, the internet content provider being different from the agent; and
and transmitting the content.
10. The method of claim 9, wherein the panelist comprises 60 panelists.
11. The method of claim 9, wherein the panel comprises 1500 panelists.
12. A method of monitoring internet activity, the method comprising the steps of:
sending a first properties list file to a first client device, the first properties list file instructing the first client device to send a future content request via a first port of a proxy;
sending a second properties list file to a second client device, the second properties list file instructing the second client device to send future content requests via a second port of the proxy, the second port being different from the first port;
receiving a first content request from the first client device on the first port;
receiving a second content request from the second client device on the second port;
sending first content identified by the first content request to the first client device;
sending second content identified by the second content request to the second client device;
storing, in association with the first client device, an identifier of the first content requested by the first content request based on the identification of the first port.
13. The method of claim 12, further comprising the steps of: storing a portion of the first content in association with the first client device.
14. The method of claim 12, wherein the step of storing the identifier of the first content requested by the first content request further comprises the steps of: associating a first panelist identifier with the identifier of the first content, wherein the first panelist identifier is associated with the first client device.
15. The method of claim 14, wherein the first panelist identifier is an identifier of the first port.
16. A method of monitoring internet activity, the method comprising the steps of:
assigning a plurality of different mobile devices to communicate with respective ones of a plurality of different ports of a proxy server, the plurality of mobile devices and the assigned plurality of ports corresponding to a plurality of panelists in a panelist, each panelist associated with a respective mobile device;
sending a property list file to respective ones of the mobile devices, each property list file instructing a respective one of the mobile devices to send a future request for internet content to a respective one of the ports of the proxy server, the future request originating from at least one of a browser or an application separate from the browser;
receiving a non-authentication request for internet content via one of the plurality of mobile devices based on the plurality of ports; and
identifying a mobile device associated with the request using the one of the plurality of ports.
17. The method of claim 16, wherein the panel comprises at least 60 panelists.
18. The method of claim 16, wherein the panelist comprises at least 1500 panelists.
19. The method of claim 16, wherein the ports are allocated in a range from port 49152 to port 65535.
20. The method of claim 16, further comprising the steps of: storing an identification of the content requested by the request in association with the identified client device.
21. A system for monitoring internet activity, the system comprising:
an agent that services internet data requests for internet data from a first client device and a second client device, the agent including a first port and a second port that receive requests for internet data, and a third port that obtains internet data based on the requests for internet data;
a registrar to register said first client device, to uniquely assign said first port to said first client device, and to generate a first properties list file to communicate a first port assignment to said first client device; and
a database storing an identification of the internet data requested via the first port in association with demographics of panelists based on a number of the first port.
22. The system of claim 21, wherein the first port is associated with the first client device and the second port is associated with the second client device.
23. The system of claim 21, wherein the registry stores an association between a first client device, a first panelist, and the first port in the database.
24. The system of claim 21, wherein the agent stores the internet data request from the first client device in the database.
25. The system of claim 21, wherein the agent stores the retrieved internet data transmitted to the first client device in the database.
26. The system of claim 21, wherein the agent receives requests for and transmits internet data via a wireless network.
27. The system of claim 26, wherein the wireless network is a cellular network.
28. An apparatus for monitoring internet activity, the apparatus comprising:
at least two request and response ports uniquely assigned to at least two different client devices;
a registrar that generates at least two attribute list files that communicate unique assignments of the at least two request and response ports to the at least two different client devices;
a request server that receives a request for internet content via a first port of the at least two request and response ports and transmits internet content identified in the request for internet content via the first port of the at least two request and response ports;
an internet content processor that stores at least a portion of the request for internet content in a database;
an internet port; and
a content collector that receives the Internet content identified in the request for Internet content via the Internet port.
29. The device of claim 28, wherein the internet content processor stores an identifier of the first port of the at least two ports in the database.
30. The device of claim 28, wherein the internet content processor stores a portion of the internet content identified in the request for internet content.
31. The apparatus of claim 28, wherein the at least two request and response ports are within a range of at least one of a dynamic port and a dedicated port.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/856,651 US8886773B2 (en) | 2010-08-14 | 2010-08-14 | Systems, methods, and apparatus to monitor mobile internet activity |
| US12/856,651 | 2010-08-14 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1168956A1 HK1168956A1 (en) | 2013-01-11 |
| HK1168956B true HK1168956B (en) | 2015-07-03 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12355851B2 (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| US9736136B2 (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| US8594617B2 (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| HK1168956B (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| HK1205386B (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| HK1168957A (en) | Systems, methods, and apparatus to monitor mobile internet activity | |
| HK1180856A (en) | Systems, methods, and apparatus to monitor mobile internet activity |