The present invention generally relates to systems that automatically aggregate data from websites.
Financial institutions typically provide websites that enable their customers to access account information on-line. Moreover, most people have accounts at a number of different financial institutions. For example, a person might have: (1) bank accounts at a bank, (2) credit-card accounts with different credit-card issuers, and (3) investment accounts with different brokerage firms. This means that the person must visit a number of different websites belonging to different financial institutions to determine their financial position accurately, which is a cumbersome and time-consuming process.
In order to speed up this process, a number of “account aggregation” systems have been developed to compile information from different accounts automatically. To use this type of system, a user typically provides account-access information (such as usernames and passwords) for various accounts, and the account-aggregation system uses this information to gather and compile the account information into a single presentation. These account-aggregation systems typically reside within a web-based application or within client-side software. Note that similar aggregation systems are also used to gather and compile other types of information, such as emails and news articles.
Unfortunately, existing aggregation systems navigate through websites in a programmed fashion that is “static.” This means that such systems require data to be already stored (e.g., a username) and also require a website map which is already known. Such systems have problems dealing with “dynamic” situations, where user interaction is required.
Some embodiments of the present invention provide a system that facilitates interactivity during automated website accesses. During operation, the system executes a script which automatically accesses one or more websites. While executing the script, the system retrieves user-specific data associated with a user. The system then uses the user-specific data to access a target website. While accessing the target website, the system receives an interactivity request which the system presents to the user. The system then receives a response to the interactivity request from the user, and forwards the response to the website.
In some embodiments, accessing the target website involves performing navigation operations through web pages in the target website.
In some embodiments, accessing the target website involves performing parsing operations to extract data from web pages in the target website.
In some embodiments, accessing the target website involves aggregating account information for the user from the target website.
In some embodiments, receiving the interactivity request involves receiving an interactivity object which can encapsulate different data types associated with different types of interactivity requests.
In some embodiments, presenting the interactivity request to the user involves presenting the interactivity object to the user. In some embodiments, the interactivity object can include: an image to be viewed by the user; an audio file to be listened to by the user; a question in text form to be presented to the user; or HTML or XML code to generate a presentation for the user.
In some embodiments, prior to presenting the interactivity request to the user, the system suspends execution of the script. Then, after forwarding the response from the user to the website, the system resumes execution of the script.
In some embodiments, the user-specific data includes an identifier and a password for the user.
The following description is presented to enable any person skilled in the art to make and use the disclosed embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present description. Thus, the present description is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. This includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
Overview
One embodiment of the present invention provides a system that uses script technology to aggregate data from websites. While navigating through a given website, if the system detects an interactive portion of the website, the system provides an interface to a user to facilitate user interactivity with the website. The system also swaps out a process which is executing the script. Next, after obtaining information/input from the user and forwarding this information to the website, the system resumes executing the script. This system is described in more detail below.
Aggregation System
In one embodiment of the present invention script 104 executes on a standalone application which includes a script engine. In an alternative embodiment, script 104 is executed by a script engine that is part of application 102. In yet another embodiment, the script executes within a web browser.
Script 104 includes uniform resource locators (URLs) that are directed to pages on websites, such as target website 108, as well as macro-instructions to that navigate through and parse pages on a target website 108. (Note that target website 108 can generally include any type of website from which data can be aggregated, such as a website for a financial institution.) For example, script 104 can first automatically navigate to a logon screen for a financial website. Next, the script can automatically enter a username and password into the logon screen to obtain access to an associated account-summary page. Script 104 can then determine how many accounts are associated with the account-summary page. For each of these accounts, the system can follow a corresponding URL to gather data from one or more pages associated with the account. During this process, if user interaction is required, the system allows the user to provide such input as is described below. For example, the interaction can involve the user reading an obscured word in a digital image and inputting the word as a response. In another example, the interaction can involve the user answering a question in text form, such as “what is your mother's maiden name?”
The aggregation system also includes a database (DB) 106 (or some other type of repository) which contains user-supplied information, such as passwords or credentials, that are used to gain access to various accounts on various websites.
Instead of interacting with user 110, the system can alternatively interact with a device or a computer system. For example, the system can interact with an optical character recognition (OCR) device 112, which, for example, can automatically read a word in a digital image. In general, the system can interact with any type of device or computer system that can perform some type of interaction, for example, such as input/output (I/O) system 114.
In yet another embodiment, instead of interacting with the user, the system can interact with a person who is “on-call” to respond to queries on behalf of users. For example, the person who is on-call might be employed by an organization (such as a call center) to answer such queries on behalf of users.
Facilitating Interactivity During the Navigation Process
Next, the script retrieves user-specific data for a website (such as a username and password) from a repository (such as database 106) (step 204). The script then uses this user-specific data to log on to the website.
Next, the script interacts with the website. This can involve performing “page parsing” operations on web pages to retrieve data from the website and to ascertain the structure of the website. It can also involve performing various navigation operations through various web pages on the website (step 206).
While accessing the website, the website can generate an interactivity request which can be in the form of an “interactivity object” (step 208). In one embodiment of the present invention, the interactivity object is an object defined within an object-oriented programming system. Note that this interactivity object can encapsulate different data types associated with different types of interactivity requests. For example, the interactivity object can include: an image to be viewed by the user; an audio file to be listened to by the user; a question in text form to be presented to the user; or HTML or XML code to generate a presentation to be presented to the user. Note that an HTML presentation can provide a drop-down menu with options that a user can select.
In response to receiving the interactivity object, the system presents the interactivity object to a user 110 of the application 102 which invoked the script. Note that this can involve presenting the interactivity object to user 110 through a user interface for application 102. For example, the user might be asked to recognize an obscured word in a digital image or to recognize some music in an audio file.
In one embodiment of the present invention, the script is then suspended (step 212) while the user takes time to respond. This enables other scripts to run on the script engine.
Next, the user provides a response (step 214), which for example may involve inputting a recognized word or a recognized piece of music, and the response is forwarded to the website (step 216).
In one embodiment of the present invention, the answer is stored by the system in database 106, so that when the same interactivity request is encountered, the system can automatically provide the response instead of asking the user to provide the response again. This feature prevents the user from having to respond to the same query again.
Also note that the response might include biometric data from the user, such as a fingerprint scan or a retina scan.
Finally, the script is re-started to continue processing from where it left off (step 218). Note that when the script is suspended a certain amount of state information must be saved for the script, and when the script is re-started the saved state information needs to be restored.
Macro Language Extensions
Note that a number of extensions can be made to the macro-language in which the scripts are written to facilitate the above-described process.
In one embodiment of the present invention, the system supports invoking and communicating with scripts, such as script 104, through a specialized application programming interface (API), such as a web-services API. This allows the scripts to accept direct requests through the API.
The foregoing descriptions of embodiments have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present description to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present description. The scope of the present description is defined by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5544246 | Mandelbaum et al. | Aug 1996 | A |
5649118 | Carlisle et al. | Jul 1997 | A |
5671354 | Ito et al. | Sep 1997 | A |
5878398 | Tokuda et al. | Mar 1999 | A |
5881234 | Schwob | Mar 1999 | A |
5898835 | Truong | Apr 1999 | A |
6009429 | Greer et al. | Dec 1999 | A |
6038541 | Tokuda et al. | Mar 2000 | A |
6044142 | Hammarstrom et al. | Mar 2000 | A |
6385642 | Chlan et al. | May 2002 | B1 |
6401073 | Tokuda et al. | Jun 2002 | B1 |
6449636 | Kredo et al. | Sep 2002 | B1 |
6460038 | Khan et al. | Oct 2002 | B1 |
6832240 | Dutta | Dec 2004 | B1 |
6871221 | Styles | Mar 2005 | B1 |
6931419 | Lindquist | Aug 2005 | B1 |
6966060 | Young et al. | Nov 2005 | B1 |
6976210 | Silva et al. | Dec 2005 | B1 |
6986062 | Carpenter | Jan 2006 | B2 |
7051119 | Shafron | May 2006 | B2 |
7076730 | Baker | Jul 2006 | B1 |
7080037 | Burger et al. | Jul 2006 | B2 |
7287031 | Karpf et al. | Oct 2007 | B1 |
7302568 | von Behren | Nov 2007 | B2 |
7340439 | Burger et al. | Mar 2008 | B2 |
7421731 | Mitchell et al. | Sep 2008 | B2 |
7529775 | Bluvshteyn et al. | May 2009 | B2 |
7849137 | Joshi | Dec 2010 | B2 |
7853534 | Su | Dec 2010 | B2 |
7895275 | Evans et al. | Feb 2011 | B1 |
7895284 | Kim | Feb 2011 | B2 |
7954058 | Kalaboukis et al. | May 2011 | B2 |
8060574 | Evans et al. | Nov 2011 | B2 |
8060827 | Fischer et al. | Nov 2011 | B2 |
8073733 | Caland | Dec 2011 | B1 |
8091032 | Fischer | Jan 2012 | B2 |
8176191 | Fischer et al. | May 2012 | B2 |
8185584 | Fischer et al. | May 2012 | B2 |
8190639 | Cannon et al. | May 2012 | B2 |
8209631 | Kraft et al. | Jun 2012 | B2 |
8219631 | Kim | Jul 2012 | B2 |
8250485 | Spisak | Aug 2012 | B2 |
8255828 | Harris et al. | Aug 2012 | B2 |
8260882 | Kim et al. | Sep 2012 | B2 |
8271495 | Skrenta et al. | Sep 2012 | B1 |
8286089 | Hardy et al. | Oct 2012 | B2 |
8291343 | Kobayashi | Oct 2012 | B2 |
8312500 | Emerson et al. | Nov 2012 | B2 |
8370486 | Kim | Feb 2013 | B2 |
8374972 | Caland | Feb 2013 | B2 |
8396924 | Baldwin et al. | Mar 2013 | B2 |
8463893 | Clark | Jun 2013 | B2 |
8468253 | Guzman et al. | Jun 2013 | B2 |
8478783 | Cannon et al. | Jul 2013 | B2 |
8533798 | Schenk | Sep 2013 | B2 |
20010049635 | Chung | Dec 2001 | A1 |
20020077957 | Ottow et al. | Jun 2002 | A1 |
20020091788 | Chlan et al. | Jul 2002 | A1 |
20020099665 | Burger et al. | Jul 2002 | A1 |
20020174107 | Poulin | Nov 2002 | A1 |
20020194226 | Sheth et al. | Dec 2002 | A1 |
20030050967 | Bentley | Mar 2003 | A1 |
20030220876 | Burger et al. | Nov 2003 | A1 |
20040039824 | Isoda | Feb 2004 | A1 |
20040083089 | Wade | Apr 2004 | A1 |
20040107415 | Melamed | Jun 2004 | A1 |
20040158722 | Carpenter | Aug 2004 | A1 |
20040158746 | Hu | Aug 2004 | A1 |
20050044044 | Burger et al. | Feb 2005 | A1 |
20050050367 | Burger et al. | Mar 2005 | A1 |
20050060586 | Burger et al. | Mar 2005 | A1 |
20050108095 | Perlmutter | May 2005 | A1 |
20050108096 | Burger et al. | May 2005 | A1 |
20050160421 | Bluvshteyn et al. | Jul 2005 | A1 |
20050165626 | Karpf | Jul 2005 | A1 |
20050177753 | Carpenter | Aug 2005 | A1 |
20060031387 | Hamzeh et al. | Feb 2006 | A1 |
20060085766 | Dominowska et al. | Apr 2006 | A1 |
20060116924 | Angles et al. | Jun 2006 | A1 |
20060200425 | Steele et al. | Sep 2006 | A1 |
20060242404 | Su | Oct 2006 | A1 |
20070055884 | Rhoads | Mar 2007 | A1 |
20070073704 | Bowden et al. | Mar 2007 | A1 |
20070073843 | Ferreri | Mar 2007 | A1 |
20070088608 | Fogelson | Apr 2007 | A1 |
20070129955 | Dalmia et al. | Jun 2007 | A1 |
20070136378 | Karpf et al. | Jun 2007 | A1 |
20070169165 | Crull et al. | Jul 2007 | A1 |
20070174298 | Tanimoto | Jul 2007 | A1 |
20070180488 | Walter et al. | Aug 2007 | A1 |
20070208641 | Smith et al. | Sep 2007 | A1 |
20070220092 | Heitzeberg et al. | Sep 2007 | A1 |
20070220275 | Heitzeberg et al. | Sep 2007 | A1 |
20070251988 | Ahsan et al. | Nov 2007 | A1 |
20070265922 | Dumond et al. | Nov 2007 | A1 |
20070276732 | Lee et al. | Nov 2007 | A1 |
20080060061 | Deshpande | Mar 2008 | A1 |
20080114639 | Meek et al. | May 2008 | A1 |
20080115208 | Lee | May 2008 | A1 |
20090282467 | Schenk | Nov 2009 | A1 |
20100169173 | Vogels | Jul 2010 | A1 |
Number | Date | Country |
---|---|---|
1118944 | Jul 2001 | EP |
2812096 | Jan 2002 | FR |
Number | Date | Country | |
---|---|---|---|
20090006985 A1 | Jan 2009 | US |