Turing test decoder

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for decoding Turing tests. One of the methods includes managing a database that stores data of each of a plurality of aggregation accounts; sending, for a particular account identified by one of the aggregation accounts and to a server, a request for access to account data for the particular account; receiving, from the server, data that includes a login credentials field and a Turing test challenge; extracting the Turing test challenge; providing, to an external system that is a different system from the server, the Turing test challenge; receiving, from the external system, a response to the Turing test challenge; providing, to the server, the response to the Turing test challenge; providing, to the server, the login credentials for the particular account; and receiving, from the server, account data for the particular account.

TECHNICAL FIELD

This specification relates to managing user credentials.

BACKGROUND

A user may have multiple accounts storing private data. For instance, the user may have an online banking account, a social networking account, an email account, a medical account, and an online store account.

When accessing an account, a user may have to respond to a Turing test, e.g., a CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) test. For instance, a server of the account may require the user to enter a user name, password, and a CAPTCHA response of a CAPTCHA challenge, e.g., a phrase including wavy characters.

SUMMARY

In general, one innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of managing a database that stores data of each of a plurality of aggregation accounts, each aggregation account identifying one or more user accounts and the data of a particular user account indicating a) a reference to a server from which the system requests account data of the particular user account and b) login credentials for accessing the account data; sending, for the particular user account from the user accounts identified by the plurality of aggregation accounts and to the server referenced by the data of the particular user account in the database, a request for access to the account data for the particular user account; receiving, from the server, data that includes a login credentials field for entry of the login credentials to access the account data and that includes a Turing test challenge and a Turing test challenge response field; extracting the Turing test challenge from the data in response to receiving the data from the server; providing, to an external system that is a different system from the server, the Turing test challenge; receiving, from the external system, a response to the Turing test challenge; providing, to the server, the response to the Turing test challenge as input for the Turing test challenge response field; providing, to the server, the login credentials for the particular user account as input for the login credentials field in response to receiving the data that includes the login credentials field from the server; and receiving, from the server, account data for the particular user account in response to providing the response to the Turing test challenge and providing the login credentials for the particular user account. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.

The foregoing and other embodiments can each optionally include one or more of the following features, alone or in combination. The method may include receiving, from a user device separate from the external system and prior to receiving the data, the login credentials for the particular user account; and storing, in a record for the particular user account in the database, the login credentials. The method may include managing a second database that includes reliability data for two or more external systems including the external system, the reliability data indicating a likelihood that respective responses from each external system will be successful for accessing account data. The method may include selecting, using the reliability data in the database, the external system for analysis of the Turing test challenge using the reliability data. The method may include managing a second database that includes reliability data for two or more external systems including the external system. The method may include storing, in the database, reliability data that identifies the external system and identifies whether accessing account data for the particular user account using the response to the Turing test challenge received from the external system is successful. The method may include selecting, using second reliability data from the second database, the external system from the two or more external systems for processing the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge may be responsive to selecting, using the second reliability data from the second database, the external system for processing the Turing test challenge.

In some implementations, the method may include selecting, using date or time information, the external system for processing the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge is responsive to selecting, using date or time information, the external system for processing the Turing test challenge. The method may include selecting, using data of the particular user account, the external system for processing the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge is responsive to selecting, using the data for the particular user account, the external system for processing the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge may include providing, to another external system that is a different system from the server and the external system, the Turing test challenge; determining that a predetermined threshold amount of time has passed without receiving a response to the Turing test challenge from the other external system; and providing, to the external system, the Turing test challenge in response to determining that the predetermined threshold amount of time has passed without receiving a response to the Turing test challenge from the other external system.

In some implementations, the method may include providing, to one or more second external systems that are each a different system from the server and the external system, the Turing test challenge; receiving, from each of one or more of the second external systems, a second response to the Turing test challenge; comparing the response to the Turing test challenge and each of the one or more second responses to determine which responses are the same; and selecting the response to the Turing test challenge using a result of comparing the response to the Turing test challenge and each of the one or more second responses to determine which responses are the same. Providing, to the server, the response to the Turing test challenge as input for the Turing test challenge response field may be responsive to selecting the response to the Turing test challenge. Selecting the response to the Turing test challenge using the result of comparing the response to the Turing test challenge and each of the one or more second responses to determine which responses are the same may include determining that the response to the Turing test challenge was received from a particular external system from a group consisting of the external system and the second external systems that has a higher reliability score than the other external systems in the group. Selecting the response to the Turing test challenge using the result of comparing the response to the Turing test challenge and each of the one or more second responses to determine which responses are the same may include determining that the response to the Turing test challenge was received from multiple external systems from a group consisting of the external system and the second external systems that together have a higher reliability score than the other external systems in the group. Selecting the response to the Turing test challenge using the result of comparing the response to the Turing test challenge and each of the one or more second responses to determine which responses are the same may include determining that the response to the Turing test challenge was received from more external systems from a group consisting of the external system and the second external systems than any of the other second responses received from the other external systems in the group.

In some implementations, the method may include providing, to one or more second external systems that are each a different system from the server and the external system, the Turing test challenge; determining that a predetermined threshold amount of time has passed without receiving a response to the Turing test challenge from any of the second external systems; and selecting the response to the Turing test challenge in response to determining that the predetermined threshold amount of time has passed without receiving a response to the Turing test challenge from any of the second external systems. Providing, to the server, the response to the Turing test challenge as input for the Turing test challenge response field may be responsive to selecting the response to the Turing test challenge. The method may include receiving, from the database, the reference associated with the particular user account and the login credentials for the particular user account. Sending the request for access to account data for the particular user account may be responsive to receiving the reference associated with the particular user account. The method may include receiving, from the database, the reference associated with the particular user account; and receiving, from the database and after receiving the data that includes the login credentials field for entry of login credentials to access the account data, the login credentials for the particular user account. Sending the request for access to account data for the particular user account may be responsive to receiving the reference associated with the particular user account.

In some implementations, providing, to the external system that is a different system from the server, the Turing test challenge may include sending the Turing test challenge to the external system. The method may include managing a second database that includes Turing test challenge data. The method may include storing, in the second database, the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge may include sending a link that identifies the Turing test challenge to the external system. The method may include managing a second database that includes Turing test challenge data. The method may include storing, in the second database, the Turing test challenge. Providing, to the external system that is a different system from the server, the Turing test challenge may include setting permissions for the Turing test challenge in the second database to allow the external system access to the Turing test challenge in the second database.

In some implementations, the method may include managing a second database that identifies a position for the Turing test challenge in the data. Extracting the Turing test challenge from the data may include parsing, using the position for the Turing test challenge in the data, the data to determine the particular data; and selecting the particular data from the data. The second database may identify a second position for the Turing test challenge response field in the data and a third position for the login credentials field in the data. Providing the response to the Turing test challenge as input for the Turing test challenge response field may include identifying a second identifier for the Turing test challenge response field that is included in the data using the second position for the Turing test challenge response field in the data; and providing the response to the Turing test challenge as input for the identified Turing test challenge response field using the second identifier. Providing login credentials for the particular user account as input for the login credentials field may include identifying a third identifier for the login credentials field that is included in the data using the third position for the login credentials field in the data; and providing the login credentials as input for the identified login credentials field using the third identifier.

In some implementations, receiving, from the server, data that includes the login credentials field for entry of login credentials to access the account data and that includes the Turing test challenge and the Turing test challenge response field may include receiving, from the server, the data that includes a CAPTCHA challenge and a CAPTCHA challenged response field. Receiving, from the server, data that includes the login credentials field for entry of login credentials to access the account data and that includes the Turing test challenge and the Turing test challenge response field may include receiving, from the server, first data that includes the login credentials field for entry of login credentials to access the account data; and receiving, from the server, second data that includes the Turing test challenge and the Turing test challenge response field. The database may include data for an aggregation account from the plurality of aggregation accounts that identifies the particular user account and a second user account. The method may include causing, for the aggregation account, presentation of account summary data that represents the account data for the particular user account and second account data for the second user account.

The subject matter described in this specification can be implemented in particular embodiments and may result in one or more of the following advantages. In some implementations, the systems and methods described below may access, aggregate, or both, account data received from a server that requires a response to a Turing test challenge without requiring input or intervention from a respective user for the account during the account data retrieval process. For instance, a system does not require a Turing test challenge response from the respective user. Accordingly, a service authorized by the user, e.g., an account information aggregation system, can access the user's account to perform various tasks automatically. The service may improve an account aggregation user experience. In some implementations, the systems and methods described below may use reliability data to select an external system to provide data for a Turing test challenge, to select a challenge response, or both, to improve a likelihood of low latency for communications between an information aggregation system and a server hosting account data. In some implementations, the systems and methods described below may provide a better service than other aggregation systems that require user input, user intervention, or both, from a respective user for the account during the account data retrieval process. A system may automatically, without input or intervention from a user for an account, retrieve data for the account according to a schedule when the system needs to provide a Turning test response to access the data for the account.

DETAILED DESCRIPTION

Some user account systems request a response to a Turing test challenge before allowing access to corresponding account data. For instance, in response to a request for grades, a school system may require a response to a CAPTCHA challenge in addition to a username and password before providing grade data to a user device. Typically a user will personally access each account individually and provide the response to the CAPTCHA to obtain the information for that account.

However, in some situations a user may prefer to rely on an aggregator that can collect data from multiple accounts of the user that are maintained by multiple different entities. For example, a user may have attended multiple schools, and have a separate account at each school which would be used to access the grade data for that school. However, a user could rely on an aggregator to collect the grade data from each school.

An aggregator can operate an information aggregation system that retrieves protected data from multiple accounts of a particular user. Typically the information aggregation system permits the user to access that data from the various accounts through a single interface.

As noted above, the information aggregation system may need to retrieve data from a user account system that requires a Turing test in addition to user credentials as part of an authentication process. To access the account data, the information aggregation system may use an external service to decode a Turing test challenge and receive account data from an account system.

For instance, when the information aggregation system tries to fetch the latest account data from a server for the account system, e.g., by accessing a webpage hosted on the server that provides user access to the account data, the information aggregation system receives a CAPTCHA image from the server. The information aggregation system connects to an external system, separate from the server, and provides the CAPTCHA image to the external system. The information aggregation system may poll the external system until the information aggregation system receives a CAPTCHA result for the CAPTCHA image from the external system. The information aggregation system sends the CAPTCHA result, in addition to user credentials for the account, to the server. In response, the information aggregation system receives the latest account data from the server.

The information aggregation system may store reliability data for multiple external systems in a database. The reliability data includes metrics of the external systems, e.g., for some or all of the external systems. The metrics can include, for example, accuracy rate, latency, hours of operation, or various combinations of the above. The information aggregation system may use the reliability data to determine to which external system from multiple external systems to send a CAPTCHA image. For instance, the information aggregation system may use the reliability data to determine reliability scores for each of the multiple external systems and selected an external system with a highest reliability score. The information aggregation system may send a request to the selected external system for decoding of the CAPTCHA image.

FIG. 1is an example of an environment100in which an information aggregation system102retrieves account data from a server124. The account data can include protected data that is accessible only after authentication. The authentication is based on user credentials and a Turing test. The information aggregation system102retrieves the account data from the server124as part of an information aggregation process that includes retrieval of account data from multiple different servers for different user accounts associated with a particular user. The information aggregation system102may provide data aggregated from the different user accounts to a user device operated by the particular user, e.g., for presentation as an aggregation account summary.

For instance, a credential input module104included in the information aggregation system102may receive input data from a user device (not shown) that identifies multiple accounts for which the information aggregation system102shall retrieve account data. The input data may specify account identifiers, e.g., account names or account numbers for the user accounts. The input data may indicate a service name, e.g., the name of an entity that manages the account. The input data may indicate a respective server reference to each server hosting user account data, such as a uniform resource identifier (URI) that identifies the server and a resource on the server, e.g., a web page, that provides access to the account data. The input data includes login credentials for each of the user accounts. For example, the input data may include a user name and password for each of the user accounts.

The credential input module104may receive the input data from the user device using protocols defined by an application programming interface (API). For instance, the credential input module104may receive the input data from an application executing on the user device that uses the API. In some implementations, the credential input module104includes a web server and receives the input data from the user device in response to presentation of a web page on the user device.

The credential input module104stores the input data received from the user device in one or more databases. For instance, the credential input module104may store the respective account identifier of each of the user accounts, the respective service name, the respective server reference for each of the user account servers, the login credentials, or a combination of two or more of these, in an account database106.

The credential input module104may create or update one or more records in the account database106using the input data received from the user device. When the credential input module104determines that the input data indicates creation of a new aggregation account, the credential input module104stores data to the account database106for the new aggregation account. For example, the credential input module104may create a record in the account database106that identifies the aggregation account.

As described here, an aggregation account is an account, for a user, on the information aggregation system102and includes data for one or more user accounts. An example of a user account is an account on the server124for a user. An aggregation account can be associated with multiple user accounts the information for which the information aggregation system102retrieves from different servers, including the server124, and aggregates.

The credential input module104may create a respective record for each of the user accounts for which the information aggregation system102will retrieve account data. Each of the records may include the respective login credentials, the respective server reference, e.g., URI for the corresponding server, or both. The credential input module104may link each of the account records with the record for the new aggregation account.

The information aggregation system102includes a crawler114that uses the server reference to determine a server124that allows access to account data for a particular user account. For instance, the crawler114requests the account data for each user account identified by an aggregation account as part of a process to create a summary for the aggregation account that includes account data for each of the user accounts.

When the server reference is a URI, the crawler114requests a login form, e.g., a login web page, from the server124using the URI. When the server reference is a service name, such as the name of an entity from which the information aggregation system102retrieves data, e.g., and the entity that manages the particular user account, the crawler114may determine a URI for the service name, as described in more detail below. The crawler114may determine a URI for the user account in various ways, request account data from the server124in various ways, or both.

In response to sending the request for a login form to the server124, the crawler114receives the login form. For instance, the login form may represent a login page130that includes a user name field132, a password field134, a CAPTCHA image136, and a CAPTCHA response field138. The login page130may be a page, e.g., a web page, that, when presented on a display in a web browser or another application, requests login credentials to allow access to account data for the particular user account. In some implementations, the login form may include data for multiple pages, as described in more detail below.

The server124may generate the login form, e.g., the login page130, using a CAPTCHA module126. For instance, the CAPTCHA module126may generate Turing test challenges such as the CAPTCHA image136. When the server124receives the request for login form from the crawler114, the server124requests a CAPTCHA image from the CAPTCHA module126. In response, the server124receives a CAPTCHA image136from the CAPTCHA module126.

The server124may include other databases, modules, or both, for generation of the login form. For instance, the server124may include a web server, e.g., on the same computer as the CAPTCHA module126or another computer, that generates instructions, e.g., HyperText Markup Language (HTML) instructions, for the login page130.

The crawler114, or another component of the information aggregation system102, extracts login field information from the login form. For instance, the crawler114may determine a particular location in the login form that includes data for the user name field132and the password field134. In some implementations, the crawler114may determine tags or other field identifiers included in the login form that identify data for the user name field132, data for the password field134, or both. The crawler114may use an API to determine the for the user name field132, data for the password field134, or both.

The crawler114receives user credentials from a credential manager116. The crawler114may provide an identifier for the particular user account to the credential manager116. In response, the crawler114receives the user credentials from the credential manager116. The user credentials may include a user name, a password, or both, for the particular user account.

The credential manager116retrieves the user credentials from the account database106. The credential manager116may use an identifier for the particular user account as a key to identify a record in the account database106that includes the user credentials for the particular user account. The identifier for the particular user account can be, for example, a nickname of the particular user account or a combination of a server reference to the server124and a service name or account number of the particular user account.

In some implementations, the crawler114receives the user credentials from the credential manager116prior to receipt of the login form from the server124. For instance, the crawler114may receive the user credentials with the server reference to the server124, both for the particular user account. In response, the crawler114uses the server reference to the server124to request account data for the particular user account from the server124.

The crawler114, or another component of the information aggregation system102, extracts Turing test challenge data from the login form. The Turing test challenge data may be the CAPTCHA image136, the CAPTCHA response field138, or both.

The crawler114may determine a particular location in the login form that includes data for the Turing test challenge during the extraction process. The crawler114may determine tags or other field identifiers included in the login form that identify data for the Turing test challenge. The crawler114may use an API to determine the data for the Turing test challenge.

The crawler114may store at least some of the Turing test challenge data in a database. For example, the crawler114may store the CAPTCHA image136in a CAPTCHA database108. The information aggregation system102may allow an external decoding system146access to the stored Turing test challenge data, use the stored Turing test challenge data for reliability analysis, or both.

The information aggregation system102selects a decoding system from multiple external decoding systems146to which the information aggregation system102will provide access to the Turing test challenge data. For instance, the information aggregation system102uses data stored in a tracking database112to select one of the multiple external decoding systems146. The information aggregation system102may select the one of the multiple external decoding systems146in various ways, some examples of which are described in more detail below.

In some implementations, the data stored in the tracking database112may include reliability data for some or all of the external decoding systems146. The information aggregation system102may use the reliability data to select the one of the multiple external decoding systems146.

A CAPTCHA decoder118, included in the information aggregation system102, provides the Turing test challenge data to the selected external decoding system146. A request handler120included in the CAPTCHA decoder118may send a request to a first external system146athat identifies the CAPTCHA image and requests a response for the image. The request may identify the CAPTCHA image by including data for the image, a reference to the image stored in the CAPTCHA database108, or both.

The request handler120may provide the Turing test challenge data to the first external system146ain various ways. For instance, the request handler120may use a method defined by an API, for the information aggregation system102or the first external system146a, to provide the Turing test challenge data to the first external system146a. In some implementations, the request handler120may generate a list of Turing test challenge data stored in the CAPTCHA database108. The list may include an entry for each CAPTCHA image and an identifier for each entry. The information aggregation system102may receive challenge responses that include an identifier from the list and use the identifier to determine a corresponding CAPTCHA image. The information aggregation system102may use a mapping of CAPTCHA images to server references to determine a server from which the information aggregation system102received the corresponding CAPTCHA image and to which the information aggregation system102will provide the challenge response.

The request handler120may receive a request from the first external system146afor the list of Turing test challenge data. In response to the request for the list, the request handler120provides the list of Turing test challenge data to the first external system146a.

For example, the first external system146amay include an application that periodically polls the information aggregation system102for Turing test challenge data assigned to the first external system146a. Upon receipt of the list from the information aggregation system102, the first external system146aretrieves Turing test challenge data from the CAPTCHA database108. The first external system146auses the retrieved Turing test challenge data to determine responses for each of the Turing test challenges identified on the list. The first external system146aprovides data for the responses to the information aggregation system102.

In some implementations, some of the external decoding systems146may generate a challenge response for a Turing test challenge using artificial intelligence. For example, the first external system146amay include a neural network that analyzes Turing test challenges and generates a corresponding challenge response for each challenge. The first external system146aprovides data for the challenge response to the information aggregation system. One or more of the external decoding systems146may use optical character recognition, image recognition processes, image processing methods, or a combination of two or more of these to generate a challenge response for a Turing test challenge.

In some implementations, the CAPTCHA decoder118may generate instructions for presentation of a web page that includes a list of Turing test challenge fields and a list of Turing test challenge response fields. For instance, the web page may include, for each Turing test challenge assigned to the first external system146a, a CAPTCHA image and, adjacent to the CAPTCHA image, a field for entry of a corresponding CAPTCHA response. The CAPTCHA decoder118may provide the instructions to the first external system146ato cause the first external system146a, e.g., a computer included in the first external system146a, to present the web page on a display. The first external system146amay receive user input that indicates the challenge responses for the Turing test challenges included in the web page in response to presentation of the web page on the display. The first external system146aprovides data representing the user input to the information aggregation system102.

A response handler122, included in the CAPTCHA decoder118, receives a challenge response for the Turing test challenge data from the first external system146a. The response handler122may receive data for a challenge response144using a method that corresponds to the method with which the request handler120provided the Turing test challenge data to the first external system146a.

In some implementations, when the request handler120provides the first external system146awith data for the CAPTCHA image136in a message, the response handler122may receive a reply message from the first external system146athat includes data for the challenge response. In some implementations, when the request handler120provides the first external system146awith a reference to the image stored in the CAPTCHA database108or provides the first external system146awith a list of Turing test challenge data, the response handler122may retrieve the data for the challenge response144from memory in which the first external system146astored the challenge response data144. The memory may include the CAPTCHA database108or another database. The information aggregation system102may determine that the challenge response data144is in memory upon receipt of a message from the first external system146athat indicates that challenge response data is ready for use by the information aggregation system102.

In some implementations, the response handler122, or the CAPTCHA decoder118, may store the challenge response in the CAPTCHA database108. For instance, the response handler122may associate the challenge response with the CAPTCHA image stored in the CAPTCHA database108.

The information aggregation system102, e.g., the crawler114, provides the user credentials for the particular user account and the challenge response to the server124, e.g., as a response to the login form. The information aggregation system102may provide the user credentials for the particular user account and the challenge response to the server124in various ways. For instance, the information aggregation system102may create a hypertext transfer protocol (HTTP) message140that includes data for the user credentials142and data for the challenge response144. In some implementations, the information aggregation system102may include the user credential data142and the challenge response data144in an HTTP POST message140or another type of HTTP message.

The information aggregation system102may use the fields from the login page130to indicate the user credential data142, the challenge response data144, or both. For instance, the crawler114may use a first identifier for the user name field132to indicate that a first data item in the message140corresponds to the user name field132. The crawler114may use a second identifier for the password field134to indicate that a second data item in the message corresponds to the password field134. The crawler114may use a third identifier for the CAPTCHA response field138to indicate that a third data item in the message corresponds to the CAPTCHA response field138. The third data item can include the challenge response data144.

The data items included in the message140represent the same data retrieved from the account database106and the external decoding system146. The user credential data142may be formatted in the same format as the credentials retrieved from the account database106or a different format. The challenge response data144includes the response received from the external decoding system146in the same format as received from the external decoding system or a different format. For example, the crawler114may receive the challenge response data generated by the external decoding system146and format the challenge response data specific to the types of response data received by the server124, e.g., as indicated by the login form. The crawler114provides the formatted challenge response data144to the server124, e.g., in the message140.

The crawler114may generate a form that includes the user credential data142, the challenge response data144, or both. The form may include the identifier for user name field132, the identifier for the password field134, the identifier for the CAPTCHA response field138, or a combination of two or more of these.

In some implementations, the information aggregation system102may encrypt the user credentials, the challenge response, or both, and include encrypted data in the message140. For instance, the information aggregation system102may generate encrypted user credential data142or encrypted challenge response data144in various ways.

The crawler114may send multiple messages to the server124that each include some of the user credential data142, the challenge response data144, or both. For example, the crawler114may send a first message to the server124that includes data for the user credentials142and a second message to the server124that includes data for the challenge response144.

In some implementations, the crawler114may send each of the multiple messages to the server124in response to receipt of different login form from the server. For instance, crawler114may receive any number of messages from that server124that each include data for the login form.

The crawler114may receive a first message, e.g., a first web page, from the server124that includes the user name field132and the password field134. In response to receipt of the first message, the information aggregation system102determines the user credentials for the particular user account. The crawler114uses the user credentials to generate a first response that includes data for the user credentials, e.g., data for a user name and data for a password. The information aggregation system102may encrypt some or all of the data in the first response. The crawler114provides the first response to the server124.

The crawler114may receive a second message, e.g., a second web page, from the server124that includes the CAPTCHA image136and the CAPTCHA response field138. The crawler114may receive the second message from the server124in response to providing the first response to the server124.

The information aggregation system102determines a challenge response for the received CAPTCHA image136, e.g., using the CAPTCHA decoder118. The information aggregation system102generates a second response using data for the challenge response144. The information aggregation system may encrypt the data for the challenge response that is included in the second response. The crawler114provides the challenge response to the server124.

The crawler114receives account data from the server124. The account data may be data for any type of account. For instance, the account may be an online banking account; a social networking account; an email account; a medical account, e.g., that allows access to medical data from a doctor, a hospital, or both; or an online store account. The crawler114may receive the account data in response to providing the user credential data142and the challenge response data144to the server124. For instance, when the server124receives the challenge response144and the user credential data142, the server124determines whether the challenge response144and the user credential data142are valid, e.g., whether the challenge response144is correct for the CAPTCHA image136and authenticates the user credential data142for the particular user account.

In response to determining that the challenge response144and the user credential data142are valid, the server124accesses account data128, e.g., a database. The server124retrieves data for the particular user account from the account data128. The server124may use the user credential data142to determine the data in the account data128for the particular user account. The server provides the account data to the crawler114.

The account data may be specific to the particular user account, such as a user's grades or bank account information. In some implementations, the account data may be accessible by multiple users. For instance, the account data may include subscription news articles or social media that require entry of the user credentials and the challenge response.

The information aggregation system102may combine data from multiple different user accounts for an aggregated report that represents data for an aggregation account. For instance, the information aggregation system102may determine a summary of the multiple different user accounts on the server124or on multiple servers. The user accounts are for a single user.

The information aggregation system102may generate data for presentation of the summary. The information aggregation system102may provide the data for presentation of the summary to a user device, e.g., operated by the particular user, may include the data in a message, e.g., a body of an email message, or may include the data in any other format. Receipt of the data by the user device may cause the user device to present the summary, e.g., on a display, audibly using a speaker, or both.

The information aggregation system102may store reliability data for the external decoding systems146, e.g., the first external system146a, in a tracking database112. For instance, the CAPTCHA decoder118may determine a latency of the response time for the first external system146a, e.g., a time taken by the first external system146ato generate the challenge response144after the first external system146areceives the CAPTCHA image136. The CAPTCHA decoder118may store the latency in the tracking database112.

The CAPTCHA decoder118may determine an accuracy score for the challenge response144and store data that represents the accuracy score in the tracking database112. The crawler114may determine whether the server124provides access to the account data using the challenge response144. When the crawler114receives access to the account data, the information aggregation system102stores data, e.g., an accuracy score, in the tracking database112that indicates that the information aggregation system102received account data using the challenge response144, which, in turn, indicates that the challenge response144is correct. When the crawler114does not receive access to the account data, the information aggregation system102stores data, e.g., an accuracy score, in the tracking database112that indicates that the challenge response144did not provide access to the account data, which, in turn, indicates that the challenge response144is incorrect.

A component of the information aggregation system102, such as the CAPTCHA decoder118, may use data from the tracking database112to select an external decoding system146for processing a Turing test challenge. The CAPTCHA decoder118may aggregate the accuracy scores for a particular external decoding system146to determine an overall accuracy score for the particular external decoding system146. For instance, the CAPTCHA decoder118may determine an overall accuracy score that indicates a ratio of correct responses to incorrect responses. The CAPTCHA decoder118may use some or all of the accuracy scores to determine the overall score. The CAPTCHA decoder118may select a first external decoding system with a high ratio of correct responses to incorrect responses more than a second external decoding system with a lower ratio of correct responses to incorrect responses for processing of a Turing test challenge.

As the CAPTCHA decoder118, and the information aggregation system102, receive additional responses from a particular external decoding system146, the CAPTCHA decoder118may adjust a number of Turing test challenges sent to the particular external decoding system146using a change to the overall accuracy score. For example, as a ratio of correct responses to incorrect responses increases, e.g., the overall accuracy score increases, for an external decoding system, the CAPTCHA decoder118may send more Turing test challenges to the external decoding system. As a ratio of correct response to incorrect responses decreases, e.g., the overall accuracy score decreases, for an external decoding system, the CAPTCHA decoder118may send fewer Turing test challenges to the external decoding system.

The information aggregation system102may use a status of a network when generating reliability data for the first external system146a, the challenge response144, or both. For instance, when the information aggregation system102does not receive account data for the particular user account and the information aggregation system102determines that there is no longer a connection with the server124, the information aggregation system102determines that a network error prevented the information aggregation system102from receiving the account data. In some implementations, the information aggregation system102may store reliability data that indicates that a network error prevented access to account data, e.g., by flagging a record in the tracking database112that identifies challenge response144with data that indicates a network error occurred. The information aggregation system102may store the latency data that represents a response time for the first external system146ato generate a challenge response or another type of reliability data in the tracking database112when a network error prevented the information aggregation system102from receiving the account data.

The information aggregation system102may use information about the user credentials when storing reliability data in the tracking database112. For instance, when the information aggregation system102uses multiple challenge responses for different Turing test challenges, e.g., multiple CAPTCHA images136, the information aggregation system102may determine that the user credentials are incorrect or have changed and are preventing access to the account data. In some implementations, the information aggregation system102may store reliability data that indicates that the user credentials prevented access to account data, e.g., by flagging a record in the tracking database112that identifies challenge response144with data that indicates a user credential error occurred. The information aggregation system102may store the latency data or another type of reliability data in the tracking database112when determining that the user credentials prevented the information aggregation system102from accessing the account data.

In some implementations, the information aggregation system102may validate user credentials upon receipt of the user credentials from a user device. For instance, when the credential input module104receives the user credentials from a user device during a session with the user device, the information aggregation system102may use the user credentials to access account data for the particular user account to validate the user credentials during the session with the user device. When the information aggregation system102receives account data for the particular user account, the information aggregation system102determines that the user credentials are valid and the information aggregation system102may end the session. When the information aggregation system102does not receive account data for the particular user account, the information aggregation system102prompts the user device for updated user credentials during the session.

In some implementations, the information aggregation system102may receive a service name as a reference from a user device without receiving a server reference, e.g., a URI that identifies a server that allows access to account data, from the user device. For instance, the service name may specify a particular school, such as “The University.” The information aggregation system102may include a database that matches service names to server references. When the information aggregation system102, e.g., the crawler114, determines to retrieve data for the user account, the information aggregation system102access the database using the service name to determine the server reference. The information aggregation system102uses the server reference to request account data from the corresponding server, e.g., the server124.

The information aggregation system102may periodically update the service name to server reference mapping in the database. For instance, the information aggregation system102may periodically check each existing server reference identified in the database to determine whether the server reference can still be used to retrieve account data for the respective user account or the server reference cannot be used for the user account. When the information aggregation system102determines that the server reference cannot be used for the user account, the information aggregation system102may use the crawler114, e.g., that accesses web pages associated with the respective account, to determine an updated server reference for the respective service name. In response to determining the updated server reference, the information aggregation system102updates the mapping for the respective service name in the database with the updated server reference.

In some implementations, the information aggregation system102may send particular Turing test challenge data to multiple external systems. For instance, the CAPTCHA decoder118may send the CAPTCHA image136to both the first external system146aand a second external system146b.

The CAPTCHA decoder118may provide the CAPTCHA image136to the first external system146aat a first time T0. The CAPTCHA decoder118may determine that the first external system146ahas not provided a challenge response to the information aggregation system102within a predetermined threshold amount of time, e.g., and that a timeout has expired. The CAPTCHA decoder118may provide, at a second time T1, the CAPTCHA image136to the second external system146b. In response, the CAPTCHA decoder118, e.g., the response handler122, may receive the challenge response144from the second external system146bat a third time T2.

In some implementations, when the CAPTCHA decoder118receives the challenge response144from the first external system146abetween the second time T1and the third time T2, the CAPTCHA decoder118may use the challenge response144from the first external system146a.

When the CAPTCHA decoder118receives multiple challenge responses from different external decoding systems146, the CAPTCHA decoder118may select one of the multiple challenge responses for use in the message140using various operations. For instance, the CAPTCHA decoder118may use a first received challenge response, a challenge response that was received from a greatest number of the external decoding systems146, a challenge response selected using reliability data for the external decoding systems146, e.g., from an external decoding system with a highest overall accuracy score, or a combination of two or more of these.

In some implementations, the CAPTCHA decoder118may determine a total number of different challenge responses received from the external decoding systems146and select a challenge response for submission to the server124based on a voting algorithm. For each of the different challenge responses, the CAPTCHA decoder118determines a number of external systems from which the CAPTCHA decoder118received the corresponding challenge response. The CAPTCHA decoder118selects a particular challenge response that was received from more external decoding systems than any of the other challenge responses.

The CAPTCHA decoder118may send the CAPTCHA image136to multiple different external decoding systems146in response to receipt of the CAPTCHA image136. For instance, the CAPTCHA decoder118may receive the CAPTCHA image136, select multiple external systems from the external decoding systems146, and provide the CAPTCHA image136to each of the multiple selected external systems, e.g., without waiting for a response from any of the multiple selected external systems. The CAPTCHA decoder118may analyze the challenge responses received from each of the multiple selected external systems to determine a particular challenge response with a highest likelihood of being the correct challenge response for the CAPTCHA image136. The CAPTCHA decoder118may select the only challenge response when all responses are the same. The CAPTCHA decoder118may select a particular challenge response from multiple different received challenge responses by assigning a reliability score to each of the challenge responses using data from the tracking database112.

The information aggregation system102may use reliability data from the tracking database112to select a challenge response. For instance, the CAPTCHA decoder118may determine the external decoding systems146from which the CAPTCHA decoder118received challenge responses. The information aggregation system102determines, for each of the determined external decoding systems146, reliability scores using the reliability data in the tracking database112. For instance, when challenge responses received from the first external system146aare more frequently correct than challenge responses received from the second external system146b, the information aggregation system102assigns the first external system146aa higher reliability score than the second external system146b. The information aggregation system102selects an external system from the determined external decoding systems146that has a highest reliability score, e.g., that is higher than each of the reliability scores for the other external decoding systems146. A reliability score may be an overall accuracy score for a particular external decoding system or may be a score that represents additional reliability data or other reliability data from the tracking database112. The information aggregation system102determines a challenge response received from the selected external system. The information aggregation system102uses the determined challenge response for the challenge response data144.

The information aggregation system102may analyze one or more parameters of a Turing test challenge response to generate reliability data for the respective Turing test challenge response. The reliability data may be specific to the Turning test challenge response. The reliability data may be specific to an external decoding system from which the information aggregation system102received the response. The reliability data may include a reliability score for a corresponding external decoding system. A reliability score may be a representation of the reliability data for the corresponding external decoding system. The information aggregation system102, e.g., the CAPTCHA decoder118or the response handler122, may analyze a past accuracy percentage of the external decoding system, e.g., an accuracy score for the external decoding system; a past accuracy percentage of the external decoding system for the site or server from which the Turing test challenge was received; a past accuracy percentage of the external decoding system for the account for which account data is being retrieved; a past accuracy percentage of the external decoding system for the aggregation account for which account data is being retrieved; a past accuracy percentage of the external decoding system for a particular locale or country; a time taken by the external decoding system to generate a Turing test challenge response; reliability data of other external decoding systems; Turing test challenge responses received from other external decoding systems and the external decoding system for a particular Turing test challenge; or a combination of two or more of these, when determining reliability data for the external decoding system.

In some implementations, when the information aggregation system102receives different challenge responses from multiple different external decoding systems146, the information aggregation system102may select a particular Turing test challenge response received from an external decoding system with a highest reliability score. The information aggregation system102may determine, for each of the external decoding systems146from which the information aggregation system102received a Turing test challenge response, the reliability score for the external decoding system. The information aggregation system102may select the external decoding system with a highest reliability score that is greater than the other determined reliability scores. The information aggregation system102may send a Turing test challenge response, received from the external decoding system with the highest reliability score, to the server124. For instance, the crawler114may receive the Turing test challenge response for the external decoding system with the highest reliability score form the CAPTCHA decoder118and provide the Turing test challenge response to the server124, e.g., as part of the message140.

In some implementations, the information aggregation system102may include a retry mechanism. For instance, when the information aggregation system102determines that a first Turing test challenge response sent to the server124was not accurate, the information aggregation system102may select a Turing test challenge response that corresponds to a second highest reliability score and provide the selected Turing test challenge response to the server. The information aggregation system102may receive, from the server124, a message that indicates that the first Turing test challenge response was not accurate. The message may include a new Turing test challenge. The message may include instructions for presentation of a web page, e.g., with the new Turing test challenge.

In some implementations, when the information aggregation system102receives the same challenge response from multiple different external decoding systems146, the information aggregation system102may determine a combined reliability score for the challenge response. For instance, the information aggregation system102uses the reliability scores for each of the multiple different external decoding systems146that generated the same challenge response to determine the combined reliability score.

The information aggregation system102compares the combined reliability score with other combined reliability scores or other external system reliability scores for the other challenge responses received from other external systems, e.g., when each of the challenge responses are for the same Turing test challenge. The information aggregation system102selects a challenge response with a highest reliability score, e.g., either a combined reliability score or a reliability score for a particular external system. The information aggregation system102uses the selected challenge response to generate a message140for the server124.

The information aggregation system102may weight reliability scores when determining a combined reliability score. For instance, each reliability score may be a value between zero and one, inclusive. The information aggregation system102may weight each of the reliability scores so that a combined reliability score is also between zero and one, inclusive. The information aggregation system102may determine the weights using a number of scores that will be combined or another value.

The CAPTCHA decoder118may use a unique identifier to maintain session information with the external decoding systems146. The information aggregation system102may generate, for each Turing test challenge, a corresponding unique identifier. The CAPTCHA decoder118includes the unique identifier in a message sent to one of the external decoding systems146, in the CAPTCHA database108, or in other data used by the external decoding systems146to analyze the Turing test challenge and generate a Turing test challenge response.

The CAPTCHA decoder118may use the unique identifier to poll the external decoding systems146for a Turing test challenge response. In some implementations, when the CAPTCHA decoder118does not receive a response from one of the external decoding systems146within a predetermined period of time, the CAPTCHA decoder118stops polling the one of the external decoding systems146and provides the corresponding Turing test challenge to another external decoding system. The other external decoding system may be analyzing the Turing test challenge in parallel with the one of the external decoding systems146for which the predetermined period of time expired, e.g., when the CAPTCHA decoder118did not receive a response. The CAPTCHA decoder118may select the other external decoding system in response to determining that the predetermined period of time expired for the one of the external decoding systems146.

In some implementations, the CAPTCHA decoder118may determine whether no Turing test challenge response will be received and the CAPTCHA decoder118should fail all requests for a response to a corresponding Turing test challenge. For instance, the CAPTCHA decoder118may determine that the predetermined period of time has lapsed for each of the external decoding systems146to which the CAPTCHA decoder118provided the Turing test challenge. In response, the CAPTCHA decoder118may provide a message to the information aggregation system102indicating that no response has been received. The information aggregation system102may use the message to determine that the crawler114should allow a session with the server124to expire. The crawler114might not request additional account information from the server124after allowing the session to expire until the information aggregation system102determines that an external decoding system146can provide Turing test challenge responses.

In some implementations, when the CAPTCHA decoder118determines that no Turing test challenge response will be received within the predetermined period of time and whether to request input from a user for the account that identifies a response to the Turing test challenge. For instance, the CAPTCHA decoder118may determine whether settings for the account indicate that the CAPTCHA decoder118can send a prompt to a device operated by the user that requests a Turing test challenge response. When the CAPTCHA decoder118determines that the settings indicate that the CAPTCHA decoder118can send a prompt to a device operated by the user, the CAPTCHA decoder118generates instructions for the presentation of the prompt and provides the instructions to the device. The CAPTCHA decoder118may receive data indicating user input in response to providing the instructions to the device. The CAPTCHA decoder118may use the data to determine a Turing test challenge response.

In some implementations, the information aggregation system102encrypts some or all of the message140sent to the server124. For instance, the information aggregation system102may encrypt the user credential data142, the challenge response data144, or both. The information aggregation system102may encrypt the body of the message140.

The information aggregation system102is an example of a system implemented as computer programs on one or more computers in one or more locations, in which the systems, components, and techniques described below are implemented. The user devices may include personal computers, mobile communication devices, and other devices that can send and receive data over a network. The network (not shown), such as a local area network (LAN), wide area network (WAN), the Internet, or a combination thereof, connects the user devices, the information aggregation system102, the server124, and the external decoding systems146. The information aggregation system102may use a single server computer or multiple server computers operating in conjunction with one another, including, for example, a set of remote computers deployed as a cloud computing service.

FIG. 2is a flow diagram of an example process200for receiving data for an aggregation account. For example, the process200can be used by the information aggregation system102from the environment100ofFIG. 1.

An information aggregation system receives (202), from a user device, login credentials for a particular user account. The login credentials may include a user name, a password, or both. The information aggregation system, e.g., a credential input manager included in the information aggregation system, may receive the login credentials from an application executing on a device for a user associated with the particular user account. The application may be a web browser, an application developed for access to aggregation account data, e.g., a client application specific to the information aggregation system, or application configured to communicate with the information aggregation system.

In some implementations, the information aggregation system receives encrypted data. For instance, a connection between the information aggregation system and the user device may use encrypted communications.

The information aggregation system stores (204), in a record for the particular user account in a database, the login credentials. The information aggregation system, e.g., the credential input manager included in the information aggregation system, may store the login credentials, e.g., in an encrypted form, in the database. The encryption used to store the login credentials may be the same or different from the encryption for communications between the user device.

The information aggregation system may create a record in the database that includes only data for the particular user account, e.g., and no other user accounts. For example, the information aggregation system may create a separate record in the database for each user account. A first record may identify login credentials for a university user account and a second record may identify login credentials for a community college user account.

The information aggregation system may include data in the database that indicates that each of the records is for a particular aggregation account, e.g., in each of the separate records or in another record that identifies all of the particular accounts for the aggregation account. The record may be for an aggregation account and include data for multiple user accounts. For instance, a single record for the aggregation account may identify first login credentials for a university user account and second login credentials for a community college user account.

The information aggregation system sends (206), to a server referenced by the data of the particular user account in the database, a request for access to account data for the particular user account. The server reference may indicate a particular URI from which to request the account data. In some implementations, the reference data of the particular user account may be the name of an entity which manages the particular user account, e.g., a service name. The entity may be a school that includes a course list and grades for the particular user account. The particular user account may be any type of account. In some implementations, a crawler may send the request to the server.

The information aggregation system receives (208), from the server, data that includes a login credentials field for entry of login credentials to access the account data and that includes a Turing test challenge and a Turing test challenge response field. The login credentials may include a user name and a password. The login credentials field may include a first field for entry of the user name and a second field for entry of the password. In some implementations, the crawler may receive the data from the server.

The data may include data for a web page that includes the login credentials field, the Turing test challenge, and the Turing test challenge response field. In some implementations, the data may include data for multiple different web pages, each of which include some of the received data.

The information aggregation system extracts (210) the Turing test challenge from the data. The information aggregation system, e.g., a CAPTCHA decoder included in the information aggregation system, may use location information, e.g., a field identifier, to identify and extract data for the Turing test challenge from the data. For instance, the information aggregation system may use a template, e.g., specific to the server, that indicates where in the data the Turing test challenge data is included. The information aggregation system uses the template to extract the Turing test challenge data from the data. The information aggregation system may use any location information to extract the Turing test challenge data from the data.

A template may indicate a structure, specific to the server, of the data that includes the Turing test challenge. For example, a template may identify a position of the Turing test challenge, a position of the login credentials field, or both, in a login page that provides access to account data. The CAPTCHA decoder or a crawler may parse the data using the template to identify the Turing test challenge, the login credentials field, or both, in the login page and extract Turing test challenge data, login credentials field data, or both, from the login page. Similarly, the information aggregation system may identify and extract data for the Turing test challenge response field using the template. The information aggregation system may store the template in a template database that includes a template for servers, e.g., all of the servers or a subset of the servers, from which the information aggregation system requests account data.

The information aggregation system selects (212), using reliability data, an external system from two or more external systems for processing the Turing test challenge. The information aggregation system, e.g., the CAPTCHA decoder included in the information aggregation system, may select the external data system in various ways. For example, the information aggregation system may select the external system from the two or more external systems using reliability data that identifies a time of day, a day of week, a week of year, a month, whether the current day is a holiday, reliability data, or a combination of two or more of these. In some implementations, the information aggregation system may use reliability data that indicates that a particular external system should be used at particular times of the day, days of the week, or holidays.

In some implementations, the information aggregation system may select the external system using information for an entity that manages the particular account, information for the user to whom the particular account belongs, a physical location for the entity, e.g., the physical location at which a school is located, a physical location for a user device on which aggregated information will likely be presented, or a combination of two or more of these. For example, the information aggregation system may use a particular external decoding system for a particular entity, e.g., when the particular decoding system has at least a threshold accuracy score for Turing test challenges received for the particular entity as indicated by reliability data.

The information aggregation system provides (214), to the external system, the Turing test challenge. For instance, the information aggregation system, e.g., the CAPTCHA decoder included in the information aggregation system, may send the particular data, e.g., a CAPTCHA image, to the external system, provide a message to the external system that indicates that the Turing test challenge is available for analysis by the external system, or store the Turing test challenge in memory to allow the external system access to the Turing test challenge. When the information aggregation system stores the Turing test challenge in memory, the information aggregation system may receive a request from the external system for Turing test challenge data. In response, the information aggregation system provides the Turing test challenge to the external system or otherwise allows the external system access to the Turing test challenge and indicates that the Turing test challenge is available.

The information aggregation system receives (216), from the external system, a response to the Turing test challenge. For example, the information aggregation system, e.g., the CAPTCHA decoder included in the information aggregation system, may receive a message from the external system that includes data which identifies the response. The data may be encrypted or unencrypted.

The information aggregation system provides (218), to the server, the response to the Turing test challenge as input for the Turing test challenge response field. The information aggregation system, e.g., the crawler included in the information aggregation system, may use the identifier for the Turing test challenge response field to generate a message with the response to the Turing test challenge. The information aggregation system provides the message to the server.

The message may be formatted according to HTTP POST or any other messaging format. The message may include the response to the Turing test challenge in a body of the message. The information aggregation system may encrypt the response or include a plain text version of the response in the message.

The information aggregation system provides (220), to the server, login credentials for the particular user account as input for the login credentials field. The information aggregation system, e.g., a credential manager included in the information aggregation system, may retrieve the login credentials from an account database, e.g., using an identifier for the particular user account. The information aggregation system, e.g., the crawler, may generate a message that includes the login credentials and an identifier for the login credentials field. The information aggregation system may encrypt the message that includes the login credentials.

The information aggregation system may use the data received from the server that includes the login credentials field to determine the identifier. The information aggregation system may parse the data to determine the identifier, e.g., using a template for an entity that manages the particular account, tags included in the data, or any other method.

In some implementations, the information aggregation system may provide the response to the Turing test challenge and the login credentials to the server at the same time. For instance, the information aggregation system may send a single message or group of messages to the server that includes the response and the login credentials.

The information aggregation system receives (222), from the server, account data for the particular user account. For example, the information aggregation system, e.g., the crawler included in the information aggregation system, receives one or more messages from the server that include the account data. The account data may be specific to the particular user account, such as grades for a user's school account, or might not be specific to the particular user account, such as a subscription news article or social media content.

The information aggregation system causes (224) presentation of account summary data that represents the account data for the particular user account and second account data for a second user account. For instance, the information aggregation system may generate data, e.g., HTML instructions, for presentation of the account summary data. The data may be for presentation of the account summary data in a web browser, in an application, e.g., for the information aggregation system, or in an email message.

The information aggregation system may perform steps202through222, or steps206through222, multiple times for different accounts associated with a particular user. The information aggregation system may determine an aggregation account and all of the user accounts assigned to the aggregation account, such that each user account is associated with a different school, news source, social media source, or another source. The information aggregation system may perform one or more of the steps from the process200for each of the user accounts, e.g., including the second user account.

In some implementations, the information aggregation system may generate the account summary data in response to a request for a summary for an aggregation account. The information aggregation system may provide the account summary data in response. The provision of the account summary data to a user device may cause the user device to present an account summary.

The order of steps in the process200described above is illustrative only, and receiving data for the aggregation account can be performed in different orders. For example, the account generation system may provide the login credentials to the server and then extract the Turing test challenge. In some implementations, the account generation system receives data that includes the login credentials field and provides the login credentials then receives data that includes the Turing test challenge response field and extracts the Turing test challenge from the data.

In some implementations, the process200can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. For example, the information aggregation system may perform steps218and220together. In some implementations, the information aggregation system may perform steps206through210and214through222without performing the other steps described with reference to the process200.

An example of one such type of computer is shown inFIG. 3, which shows a schematic diagram of a generic computer system300. The system300can be used for the operations described in association with any of the computer-implemented methods described previously, according to one implementation. The system300includes a processor310, a memory320, a storage device330, and an input/output device340. Each of the components310,320,330, and340are interconnected using a system bus350. The processor310is capable of processing instructions for execution within the system300. In one implementation, the processor310is a single-threaded processor. In another implementation, the processor310is a multi-threaded processor. The processor310is capable of processing instructions stored in the memory320or on the storage device330to display graphical information for a user interface on the input/output device340.

The memory320stores information within the system300. In one implementation, the memory320is a computer-readable medium. In one implementation, the memory320is a volatile memory unit. In another implementation, the memory320is a non-volatile memory unit.

The storage device330is capable of providing mass storage for the system300. In one implementation, the storage device330is a computer-readable medium. In various different implementations, the storage device330may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.

The input/output device340provides input/output operations for the system300. In one implementation, the input/output device340includes a keyboard and/or pointing device. In another implementation, the input/output device340includes a display unit for displaying graphical user interfaces.