Patent Publication Number: US-2007124500-A1

Title: Automatic substitute uniform resource locator (URL) generation

Description:
CROSS-REFERENCE TO RELATED APPLICATION  
      This application is related to copending U.S utility patent applications entitled “Substitute Uniform Resource Locator (URL) Form” filed on [date] and accorded serial number ______, and “Substitute Uniform Resource Locator (URL) Generation” filed on [date] and accorded serial number ______, which are entirely incorporated herein by reference and are copending.  
     TECHNICAL FIELD  
      The present disclosure is generally related to the Internet and, more particularly, is related to a method for generating substitute URLs.  
     BACKGROUND  
      Email has become a prolific means of sending information between people.  
      One effective use of email is to send an internet location, or a uniform resource locator (URL), to someone so that she can visit a web page that another user finds interesting. When the user who reads this email clicks the URL, or types it into the browser, the browser automatically downloads the page at the URL. In one example, a user searches on a web site for a hard-to-find item, and the URL for the web page with the item is long due to the process used to find the item or the tree structure of the server that hosts the web page. When the user sends the URL to another user in an email communication, the URL may be very long necessitating it to be split between multiple lines. This causes problems when, in one example, two users have incompatible email programs. Often the receiving email program will not be able to read a URL that has been split by another email program.  
      One solution to this problem is presented by “tinyurl” at www.tinyurl.com. At www.tinyurl.com, a user can enter a URL and it generates an alias URL. However, it can be used to make a URL anonymous. For example, an unscrupulous user can send a URL for a web site with potentially objectionable content and shorten the URL down to tinyurl.com/hflk. The recipient of the tinyURL doesn&#39;t know what web site she is visiting when she clicks on the tinyURL. It could even be a web site that introduces a virus to the computer. There is no means to tell what web site the tinyURL is actually downloading. Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.  
     SUMMARY  
      Embodiments of the present disclosure provide a system and method for generating a substitute uniform resource locator (URL). Briefly described, in architecture, one embodiment of the system, among others, can be implemented as a server for hosting a webpage with a first URL; and an application for automatically generating a second URL as an alias for the first URL.  
      Embodiments of the present disclosure can also be viewed as providing methods for generating a substitute URL. In this regard, one embodiment of such a method, among others, can be broadly summarized by the following steps: hosting a webpage with a first URL; and automatically generating a second URL as an alias for the first URL.  
      Other systems, methods, features, and advantages of the present disclosure will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the present disclosure, and be protected by the accompanying claims. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
      Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.  
       FIG. 1  is a block diagram of an exemplary embodiment, among others, of a client-server architecture used by a client computer to download information using a web browser.  
       FIG. 2  is a block diagram of an exemplary embodiment, among others, of the client computers of  FIG. 1 , including the browser used in the present disclosure.  
       FIG. 3  is a diagram of an exemplary embodiment of a web page with a form for generating a substitute URL.  
       FIG. 4  is a flow chart of an exemplary embodiment of a method for generation of a substitute URL as provided on the web page of  FIG. 1 .  
       FIG. 5  is a flow chart of an exemplary embodiment of a method for generation of a substitute URL with parsing as provided on the web page of  FIG. 1 .  
       FIG. 6  is a diagram of an exemplary embodiment of a web page with a prompt for generating a substitute URL.  
       FIG. 7  is a flow chart of an exemplary embodiment of a method for generation of a substitute URL as provided on the web page of  FIG. 2 .  
       FIG. 8  is a block diagram of an exemplary embodiment of a system for automatically generating a substitute URL.  
       FIG. 9  is a flow chart of an exemplary embodiment of a method for generation of a substitute URL as provided in the system of  FIG. 6 .  
       FIG. 10  is a diagram of an exemplary embodiment of a web page with automatically generated substitute URLs.  
       FIG. 11  is a flow chart of an exemplary embodiment of deleting substitute URLs of dynamic web pages after a time period. 
    
    
     DETAILED DESCRIPTION  
      The present disclosure will now be described in more detail with reference to the figures. An object of an exemplary embodiment, then, is to generate a substitute URL in which there is an indication of the source of the URL. For instance, in the case of BellSouth at bellsouth.com, whenever a long URL is created, a substitute URL can be generated which retains the domain name (bellsouth in this case) in the URL.  
      Referring now to  FIG. 1 , shown is a block diagram illustrating an architecture used for internet browsing used in one embodiment, among others. Each of a plurality of remote computers  10   a - f  access the internet  11  (or other network) through a server  12   a ,  12   b  (or other gateway systems). It should be recognized by one skilled in the art that the server  12   a ,  12   b  can offer access to the internet  11  through a plethora of connection types, including a digital subscriber line (DSL) service, an integrated services digital network (ISDN) service, an analog dial-up service, ethernet, T-1, or any other service for transmitting data through a network. Each of the servers  12   a ,  12   b  , in turn, are connected to the internet  11 . This internet connectivity enables the servers  12   a ,  12   b  and other servers connected to the internet to transfer information amongst the servers  12   a ,  12   b  using various universal protocols recognized by the servers.  
      With specific regard to browsing, the servers  12   a ,  12   b  generally include at least a hypertext transfer protocol (HTTP) server. Typically, the browser on computers  10   a - f  uses HTTP to make requests of web servers throughout the Internet on behalf of a browser user. Also, the browser on computers  10   a - f  include a hyper text markup language (HTML) interpreter which renders the HTML code into a visual web page in the browser window.  
      Servers  12   a ,  12   b  may host nefarious or legitimate content. A user of a server with nefarious content may try to acquire a substitute URL to lure other unwitting users to his site. A user of a server with legitimate content may acquire a substitute URL for ease of use, among other reasons.  
      Referring now to  FIG. 2 , shown is a block diagram of an embodiment of a computer system. As known to those skilled in the art, a computer system typically includes a processor  20 , memory  21  and input/output (I/O) device(s)  22 , all communicating over a bus  23 . The memory  21  typically includes an operating system  24  and non-volatile storage  25 . The operating system  24  is typically stored in non-volatile memory while the computer  10  is turned off, and loaded into volatile memory upon start-up, where it can be executed by the processor  20 . In the present embodiment, the memory  21  includes a browser  26  which enables the computer to view internet web pages on server  12  through an I/O device  22  such as an analog modem, DSL modem, ISDN modem or ethernet card, among others.  
      In one embodiment, a user visits a web site with a lengthy address. As provided in  FIG. 3A , a web site offers a service for generating a substitute URL on the home page of the web site. Browser window  100   a  provides an address bar  110   a  presenting the URL of the web page. Form  120   a  is included on the home page for a user to submit a URL for substitute generation. This web site offers a service that may be domain or web site specific. Regarding limiting the service to a web site as opposed to a domain, this substitute URL generator embodiment can be limited for use to one or more of several individual web sites housed within a domain such as AOL® or angelfire®, for instance. The service can be made to be only available for URLs that correspond to that domain or web site. It may only be made available to the corresponding domain or web site. A dynamically generated URL may not contain an address on a web site, but it may point to an element on some page within the web site. To achieve this function, in an exemplary embodiment, a filter can be implemented that prevents a user from receiving a substitute URL for a web site outside of a particular domain. This implementation is domain or web site specific. Other industry implementations do not appear to have any limitations on the URLs that are accepted for substitute generation. For example, at www.tinyurl.com, any URL from any web site can be entered, and a substitute URL will be generated for it. In one embodiment the validity of the URL that is entered is verified. There can be an option such that the web page entered in form  120   a  is verified before a shortened URL is supplied. In an exemplary embodiment, a server can determine if there is a 404 error when the web site is accessed. A 404 error is a standard response code of HTTP notifying a user that the web page at the entered URL can not be found.  
      This could be implemented on any web server. This could be an application that is run at a server level, or scripts can be passed down through the web page which could generate the substitute URL as a request. Although the server is generally involved in creating any shortened URL, the level of the server&#39;s involvement could vary. Either the server could do all of the processing work creating the URL or some of the creation could be embodied in a script or Java code in the web page where the substitute URL is created.  
      One problem that might be encountered involves invalid web site URLs. For instance, if a URL that includes data is entered it may be valid at that time, but it may not be valid at some later date. In this case, a validation can be performed when the substitute URL is generated, and then the service can periodically check through the list of shortened URLs that were assigned to verify that it remains valid. In an exemplary embodiment, a database may be maintained to keep record of the generated substitute URLs. Otherwise, there could be a nefarious attempt to crash a system through the submission of a large number of invalid URLs.  
      Referring to  FIG. 3   b , one implementation of an exemplary embodiment is performed by copying (perhaps by cut and paste) a URL into form  120   b  located on a domain or web site home page  100   b . A user can enter a lengthy URL in form  120   b  and, as shown in  FIG. 3C , receive a shortened URL  130  in return. In this embodiment, form  120   b  is not part of every web page; it is available on the home page  100  of that domain or web site. A user can copy a URL of a web page on a domain, go to the home page  100  of that domain, and paste the longer URL into form  120 . Then, perhaps after clicking a submit button, or through some other similar entry indicator, the substitute URL  130  is generated and presented to the user, for example, in a link including an indication of the domain that hosts the web page at the URL. The user can then save the substitute URL, bookmark it, etc.  
       FIG. 4  and  FIG. 5  provide flow diagrams for implementations of exemplary embodiments of a form for generating a substitute URL. Referring to  FIG. 4 , in block  200 , a web server provides a form on a web site for the submission of a URL by a user. In block  210 , the web server receives a URL that a user inputs into the submission form on the web site. In block  220 , the web server generates a second or substitute URL, which includes the web site as part of the second URL. In block  230 , the second URL is presented to the user.  
      Referring to  FIG. 5 , in block  300 , a web server provides a form for the submission of a URL by a user. In block  310 , the web server receives a URL that a user inputs into the submission form. In block  320 , the web server parses the first URL to determine the home page corresponding to the URL. In block  330 , the web server determines if the first URL is for a web page that resides within an allowed web site by comparing the home page parsed from the URL with the home page that contains the submission form. In block  340 , if the URL is for a web page that resides within the allowed web site, a second or substitute URL is generated. If the URL is not for a web page that resides within the allowed web site, an error message may be presented to the user in block  350 . In block  360 , the second URL is presented to the user.  
      In another exemplary embodiment, as provided in  FIG. 6 , a button or link  420  for generating a substitute URL is implemented on at least one page  400  other than the home page of the web site. The URL provided in address bar  410  can be very long. For instance, a search may be performed in which a large amount of information is entered. As an example, a user visits the web site of an automotive parts dealer to find a car part. The user may click through several levels before finding the actual part, answering questions such as: What year is the car? The model? The make? What part? The user is drilling down through a database. When the part is found, the page with the part may have a considerably long URL corresponding to the database tree structure. Or, in another example, the URL could be a dynamically generated URL as the result of a search. In this embodiment, the web page can contain a link, a button or some other indicator  420  for creating a substitute URL. When the user clicks on the button  420 , for example, a substitute URL is generated which is shorter than the original and contains an indication of the home web site. As the link or button  420  is on page  400  on the web site, there is no need to verify that the page  400  is on the web site as in the embodiment of  FIG. 3  in which the URL is copied into form  120 .  
      In an alternative embodiment, a selection for generating a substitute URL is available in a pull-down menu. In one implementation, the pull-down menu can be accessed by right-clicking on the URL in the address bar of the browser. In an alternative embodiment of this implementation, the substitute URL generation function can be implemented in a plug-in in even non-browser applications. The substitute URL generation function can be a selection in a pull-down menu, which can be accessed by right clicking on a URL in programs such as Microsoft Outlook®, Microsoft Word®, Wordperfect®, and Adobe Acrobats®, among others.  
      The presentation of the URL in many implementations can be performed in multiple ways. In one implementation, the link or button for initiating the substitute generation can be replaced with the substitute URL. Alternatively, the URL doesn&#39;t replace the link or button. Instead it is presented on the page as well as the link or button. Another implementation presents the substitute URL on another web page such as a results page. The results page may include text such as “Thank you for your entry. Here is your substitute URL:” 
       FIG. 7  presents a flow diagram of an exemplary embodiment for generating a substitute URL for the URL in the address bar with a link as provided in  FIG. 6 . Referring to  FIG. 7 , in block  500  a prompt for the generation of a substitute URL is provided on a web page. In block  510 , a response to the prompt is received. In block  520 , a substitute URL is generated.  
       FIG. 8  presents a system block diagram of an exemplary embodiment for generating a substitute URL for the URL in the address bar with a link as provided in  FIG. 6 . Referring to  FIG. 8 , web page  610  is hosted by server  600 . Web page  610  includes prompt  615 , which a user selects to initiate the generation of a substitute URL. When a user selects prompt  615 , substitute URL generation application  620  generates a substitute URL. The substitute URL has some indication of the web site that hosts the web page. Substitute URL generation application  620  may generate a substitute URL by one of several sub-applications, including a database application  630  and an algorithm based application  640 , among others. In database application  630 , a database is maintained with unique substitute URLs. When a user indicates that she wants to generate a substitute URL, or, in the automatic implementation, as described. in detail below, when a user visits a web page that doesn&#39;t already have a substitute URL assigned, the server selects a substitute URL from the database. In one embodiment, the substitute URL is linked in the database to the web page that it is being substituted for so that the same substitute URL can be used for that web page each time a substitute URL is requested for it. Alternatively, a new substitute URL can be selected from the database every time a user indicates a desire for a substitute URL.  
      With algorithm application  640 , an algorithm is implemented in which a substitute URL can be generated using a key, for example. It may include an iterative process with a multiplier or some other altering factor to create a unique substitute URL.  
      In another exemplary embodiment, the substitute URL generation is performed on a web server without user intervention. The web server can automatically shorten a web site&#39;s URLs. In one embodiment, before the URL is presented, the web server abbreviates the URL and then presents it in the address bar of the browser in place of the actual location. The user may never see the actual URL. An algorithm for generating the shortened URL as part of this implementation could check to see if a shortened URL had already been generated for that page. A unique URL can be generated for each visit by any user, but it is not necessary. Any hyperlink that can bring a user to another page can be shortened, and the shortened URL can be used as the hyperlink. So, in one embodiment when a user clicks on that shortened URL, the shortened URL appears in the location bar. The shortened URL appears in the address bar in one implementation, but the actual URL may be presented in the location bar in another embodiment. In this case, the substitute URL is presented in some other manner on the web page.  
      One advantage of the automatic generation embodiment with the shortened URL in the location bar is that the tree structure is hidden from users. Another advantage is that sensitive data that may be included in the string, such as a password, for example, may be hidden.  
      It is not necessary to implement the automatic substitute generator for every URL. It may be desirable to only generate substitute URLs for certain web pages, for example, pages with URLs longer than twenty characters. The generation algorithm can only automatically generate a substitute URL for URLs that include more than  20  characters. This could be implemented on any web server. This could be an application that is run at a server level, or scripts can be passed down through the web page which could generate the substitute URL as a request. Although the server is generally involved in creating any shortened URL, the level of the server&#39;s involvement could vary. Either the server could do all of the processing work creating the URL or some of the creation could be embodied in a script or Java code in the web page where the substitute URL is created. The script can verify that the generated substitute URL is a unique URL and that the substitute URL that it generates has not already been used. But the script, for example, can create something of its own and send that back to the server.  
       FIG. 9  presents a flow diagram of an exemplary embodiment for the automatic generation of a substitute URL. In block  700 , a web site hosts a web page with a first URL. In block  710 , an application generates a substitute URL for the first URL. The application may be hosted on the web site, on the server that hosts the web site, or on an entirely different server. In block  720 , the web page presents the substitute URL. The substitute URL may be presented in the address bar, or it may be presented as an alias in some other location on the web page.  
       FIG. 10  presents an exemplary embodiment of a web page  1000  using automatic substitute URL generation. Web page  1000  contains address bar  1010 . The automatically generated substitute URL is presented in address bar  1010 . Also included on web page  1000  are links  1020 ,  1040 ,  1060 . When passing a pointer, for example over one of links  1020 ,  1040 ,  1060 , the corresponding substitute URL  1030 ,  1050 ,  1070  is presented.  
      Referring to  FIG. 11 , if a substitute URL is generated for a dynamically generated web page such as the nonlimiting example of the results of a search, the dynamically generated web page may change. When a substitute URL for a dynamically generated web page is no longer valid, the substitute URL is likewise invalid. To clean up invalid links, an aging processor deletes substitute URLs after a time period. The time period may be predetermined or it may be set by the user or a system administrator. In block  1100 , a substitute URL is generated for a dynamic web page. In block  1110 , an aging time period is set. The aging time period may be set universally for all substitute URLs in a web site, set for each individual substitute URL, or set for some subset of the universal group of substitute URLs. In block  1120 , the substitute URL is deleted after the set time period expires. This aging processor may be applied to web pages other than those that are dynamically generated. For instance, a web site administrator may wish to limit the number of substitute URLs that are in use at one time. He may limit the number using the time period approach. Alternatively, he may limit the total number of substitute URLs that are in use in a web site at one time. Once that limit is reached, the list of substitute URLs is pruned. This pruning process may include pruning the oldest substitute URLs as one nonlimiting example. Alternatively, in another nonlimiting example, it may include pruning the least used substitute URLs.  
      Embodiments of the present disclosure can be implemented in hardware, software, firmware, or a combination thereof. In exemplary embodiments, the substitute URL generator is implemented in software or firmware that is stored in a memory and that is executed by a suitable instruction execution system. If implemented in hardware, as in an alternative embodiment, the substitute URL generator can be implemented with any or a combination of the following technologies, which are all well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc.  
      The flow charts show the architecture, functionality, and operation of possible implementations of the substitute URL generation software. In this regard, each block represents a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of the order. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved, as will be further clarified hereinbelow.  
      Any process descriptions or blocks in flow charts should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the preferred embodiment of the present disclosure in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present disclosure.  
      The substitute URL generation program, which comprises an ordered listing of executable instructions for implementing logical functions, can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. In addition, the scope of the present disclosure includes embodying the functionality of the preferred embodiments of the present disclosure in logic embodied in hardware or software-configured mediums.  
      It should be emphasized that the above-described embodiments of the present disclosure, particularly, any “preferred” embodiments, are merely possible examples of implementations, merely set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiment(s) of the disclosure without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and the present disclosure and protected by the following claims.