METHOD AND APPARATUS FOR NEGOTIATING TERMS FOR LOCAL ADVERTISING

Abstract: A method and apparatus for local advertising. Web hosts sell advertising space on their web site and distribute web pages including the advertisements to Internet users or clients. It is desirable for advertisements to target specific audiences and persons that may be interested in the specific good or service being advertised. One or more embodiments of the invention provide for advertisements that are transmitted (606) from a web host to a client. The inserted advertisement may be an advertisement that is stored in the proxy's cache (604) or may be retrieved from a web server for an advertiser. One or more embodiments of the invention provide for a module to be downloaded to the proxy that is responsible for negotiating and inserting the advertisement.

Description: METHOD AND APPARATUS FOR NEGOTIATING TERMS FOR LOCAL ADVERTISING RELATED APPLICATIONS This is a conrinuation-in-part of application Serial No. 09/192,874, filed November 16, 1998 entitled "Method and Apparatus for Local Advertising" and application Serial No. 09/192,806, filed November 16, 1998 entitled "Method and Apparatus for Processing Client Information". BACKGROUND OF THE INVENTION 1. FIELD OF THE INVENTION This invention relates to the field of computer software, and, more specifically, to advertising on the internet. Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever. Sun, Sun Microsystems, the Sun logo, Solaris, Java, JavaOS, and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks of SPARC International, Inc. in the United States and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc. 2. BACKGROUND ART In a computer network environment and the internet, advertising is increasingly utilized by owners of web sites (referred to as web hosts) as a revenue source and for the advertisers to gain publicity and web site access. Web hosts sell advertising space on their web site and distribute web pages including the advertisements to internet users or clients. It is desirable for advertisements to target specific audiences and persons that may be interested in the specific good or service being advertised. It is also desirable to insert such advertisements independent of the protocol (the communication method utilized to transmit information) being utilized by the user and web site (e.g., a standard protocol or a secure protocol). Prior art advertising schemes poorly target audiences and create excessive internet traffic when retrieving and transmitting advertisements. These problems can be understood by reviewing networks, internets, advertising and how they work. Networks In modern computing environments, it is commonplace to employ multiple computers or workstations linked together in a network to communicate between, and share data with, network users. A network also may include resources, such as printers, modems, file servers, etc., and may also include services, such as electronic mail. A network can be a small system that is physically connected by cables (a local area network or "LAN"), or several separate networks can be connected together to form a larger network (a wide area network or "WAN"). Other types of networks include the internet, tel-com networks, the World Wide Web, intranets, extranets, wireless networks, and other networks over which electronic, digital, and /or analog data may be communicated. Computer systems sometimes rely on a server computer system to provide information to requesting computers on a network. When there are a large number of requesting computers, it may be necessary to have more than one server computer system to handle the requests. The Internet The Internet is a worldwide network of interconnected computers. An Internet client accesses a computer on the network via an Internet provider. An Internet provider is an organization that provides a client (e.g., an individual or other organization) with access to the Internet (via analog telephone line or Integrated Services Digital Network line, for example). A client can, for example, read information from, download a file from or send an electronic mail message to another computer /client using the Internet. To retrieve a file or service on the Internet, a client must search for the file or service, make a connection to the computer on which the file or service is stored, and download the file or service. Each of these steps may involve a separate application and access to multiple, dissimilar computer systems. The World Wide Web (WWW) was developed to provide a simpler, more uniform means for accessing information on the Internet. The components of the WWW include browser software, network links, servers, and WWW protocols. The browser software, or browser, is a user-friendly interface (i.e., front-end) that simplifies access to the Internet. A browser allows a client to communicate a request without having to learn a complicated command syntax, for example. A browser typically provides a graphical user interface (GUI) for displaying information and receiving input. Examples of browsers currently available include Mosaic, Netscape Navigator and Communicator, Microsoft Internet Explorer, and Cello. Information servers maintain the information on the WWW and are capable of processing a client request. Hypertext Transport Protocol (HTTP) is the standard protocol for communication with an information server on the WWW. HTTP has communication methods that allow clients to request data from a server and send information to the server. The HTTP protocol may be modified to provide for secure transmissions (referred to as HTTPS). Alternatively, a secure socket layer (SSL) may be utilized which creates a secure connection. In a secure connection/transmission, all communications between a client and server may be encrypted. Encryption (also referred to as cryptography) comprises a system for sending a message (e.g., a client request or server response) from a sender to a receiver over a medium so that the message is "secure", that is, so that only the intended receiver can recover the message. During encryption a message is converted, from a format referred to as "plaintext" into an encrypted format, known as "ciphertext". To submit a request, the client contacts the HTTP server and transmits the request to the HTTP server. The request contains the communication method requested for the transaction (e.g., GET an object from the server or POST data to an object on the server). The HTTP server responds to the client by sending a status of the request and the requested information. The connection is then terminated between the client and the HTTP server. A client request therefore, consists of establishing a connection between the client and the HTTP server, performing the request, and terminating the connection. The HTTP server does not retain any information about the request after the connection has been terminated. HTTP is, therefore, a stateless protocol. That is, a client can make several requests of an HTTP server, but each individual request is treated independent of any other request. The server has no recollection of any previous request. To ensure that a request and a response have been transmitted completely without errors, various security methods may be utilized. One method is referred to as checksum. A checksum is the sum of a group of data items used for error checking. The checksum is computed by the sending computer based upon an algorithm that counts the bits (the smallest unit of information (data) a computer can process (an abbreviation for binary digit)) going out in a packet of data. A check digit (the amount calculated) is then sent to the other end as the tail, or trailer of the packet. As the packet is being received, the receiving computer goes through the same algorithm, and if the check digit it comes up with is the same as the one received, all is well. Otherwise, the receiver requests the packet to be sent again. Thus, if the packet is intercepted and modified (e.g., by a hacker or proxy (discussed below), the check digit will differ. Instead of transmitting the information from the server that maintains the information, some systems utilize what is referred to as a proxy. Referring to Figure 1, a proxy 102 is a server that carries out requests transmitted to it (i.e., from client 100), keeping copies of fetched documents or information for some time so that they can be accessed more quickly in the future, speeding up access for commonly requested information. This maintaining of information and fetched documents by the proxy 102 is referred to as caching and the information maintained in the proxy 102 is referred to as a cache or proxy cache. To protect information in internal computer networks from external access, a firewall is utilized. A firewall is a mechanism that blocks access between the client and the server. To provide limited access to information, a proxy or proxy server may sit atop a firewall and act as a conduit, providing a specific connection for each network connection. Proxy software retains the ability to communicate with external sources, yet is trusted to communicate with the internal network. For example, proxy software may require a username and password to access certain sections of the internal network and completely block other sections from any external access. An addressing scheme is employed to identify Internet resources (e.g., HTTP server, file or program). This addressing scheme is called Uniform Resource Locator (URL). A URL contains the protocol to use when accessing the server (e.g., HTTP), the Internet domain name of the site on which the server is running, the port number of the server, and the location of the resource in the file structure of the server. The WWW uses a concept known as hypertext. Hypertext provides the ability to create links within a document to move directly to other information. To activate the link, it is only necessary to click on the hypertext link (e.g., a word or phrase). The hypertext link can be to information stored on a different site than the one that supplied the current information. A URL is associated with the link to identify the location of the additional information. When the link is activated, the client's browser uses the link to access the data at the site specified in the URL. If the client request is for a file, the HTTP server locates the file and sends it to the client. An HTTP server also has the ability to delegate work to gateway programs. The Common Gateway Interface (CGI) specification defines a mechanism by which HTTP servers communicate with gateway programs. A gateway program is referenced using a URL. The HTTP server activates the program specified in the URL and uses CGI mechanisms to pass program data sent by the client to the gateway program. Data is passed from the server to the gateway program via command-line arguments, standard input, or environment variables. The gateway program processes the data and returns its response to the server using CGI (via standard input, for example). The server forwards the data to the client using the HTTP. A browser displays information to a client/user as pages or documents (referred to as "web pages" or "web sites"). A language is used to define the format for a page to be displayed in the WWW. The language is called Hypertext Markup Language (HTML). A WWW page is transmitted to a client as an HTML document. The browser executing at the client parses the document and displays a page based on the information in the HTML document. HTML is a structural language that is comprised of HTML elements that are nested within each other. An HTML document is a text file in which certain strings of characters, called tags, mark regions of the document and assign special meaning to them. These regions are called HTML elements. Each element has a name, or tag. An element can have attributes that specify properties of the element. Blocks or components include unordered list, text boxes, check boxes, and radio buttons, for example. Each block has properties such as name, type, and value. The following provides an example of the structure of an HTML document: <HTML> <HEAD> .... element(s) valid in the document head </HEAD> <BODY> .... element(s) valid in the document body </BODY> </HTML> Each HTML element is delimited by the pair of characters "<" and ">". The name of the HTML element is contained within the delimiting characters. The combination of the name and delimiting characters is referred to as a marker, or tag. Each element is identified by its marker. In most cases, each element has a start and ending marker. The ending marker is identified by the inclusion of an another character, "/" that follows the "<" character. HTML is a hierarchical language. With the exception of the HTML element, all other elements are contained within another element. The HTML element encompasses the entire document. It identifies the enclosed text as an HTML document. The HEAD element is contained within the HTML element and includes information about the HTML document. The BODY element is contained within the HTML. The BODY element contains all of the text and other information to be displayed. Other HTML elements are described in HTML reference manuals. Advertising In traditional media (e.g., television, radio, and newspaper), local advertising is provided by radio stations, television stations, the different newspaper editions, and different newspaper distributors. The local advertisers target a sub-group, often defined geographically, of the audience for that media outlet. For example, a local newspaper distributor for a metropolitan city newspaper (e.g., the Houston Chronicle or Los Angeles Times) may include advertising inserts and coupons from local grocers and shopkeepers with the newspaper. Online advertising on the internet has followed the advertising approach in traditional media. Advertising space on the internet is sold by web hosts to third parties (advertisers). Additionally, an advertising agency may be hired by the advertiser to conduct internet advertising. Advertising space on the internet often appears as a banner or icon on a web page. Banners often range from 1/2-4 inches high and 4-8 1/2 inches wide. The banner or icon may be an image, text, or an image with text. Additionally, the banner or icon may have a hyperlink to the advertiser's web page. Thus, if a user clicks on an advertiser's banner, the user's browser will load the advertiser's web page. Payment schemes for online advertising vary. For example, an advertiser may pay based on the number of times different users access a web site (referred to as hits or page impressions). Alternatively, an advertiser may only pay if a user clicks on the advertiser's banner or icon and views the advertiser's web page (referred to as a click-through). Further, a web host may also receive payment based on any completed transactions that result from a click through (e.g., the web host receives a percentage of the payment received by the advertiser from the user) (referred to as referral commissions). Advertising schemes attempt to target audiences that would most likely be interested in the product or service being advertised. For example, the commercials aired in connection with cartoons on television often relate to children's toys, cereal, or other items that children would utilize. Consequently, the more information known about a viewer or user of a particular web site, the more targeted an advertisement may be. In existing internet advertising schemes, a web host often provides one advertisement that all clients or users view. Consequently, there is one global advertisement that all users of the web site see. Such a global advertisement assumes a homogeneous interest by all users and does not provide different advertisements based on different interests or characteristics of users. Prior Art Advertising Schemes One internet advertising scheme attempts to target specific audiences based on demographics. For example, a web site that provides information about a specific city (e.g., San Francisco) may attempt to capture local audiences by placing advertisements for businesses located in or near San Francisco. Thus, advertising on a Yahoo-San Francisco bay web site would attempt to target a local San Francisco bay area audience. Another advertising scheme bases the advertisement on input from the user. For example, if a search for baby books were made on a search engine such as Yahoo, the web host for Yahoo may display advertisements relating to baby merchandise such as strollers and high chairs. Another advertising scheme accesses cookies stored on individual's browsers to determine the types of web sites that have been accessed. Cookies are small pieces of information that can later be read back from a browser. When a web site is accessed, a cookie is sent by the web site identifying itself to the web browser. Cookies are stored by the browser and may be read back by any server that desires to access the cookies at a later date. Based on the information retrieved from the cookies, a local advertisement targeted to the specific user's interests (based on the web sites that user has accessed or retrieved a cookie from) is provided. Alternatively, the advertising scheme may evaluate the HTTP referring page information. To prevent this information from being distributed or used in any manner, software is available that enables users to strip off cookies or HTTP referring page information. Further, the information collected only pertains to the small set of sites which the advertiser has a business relationship, either directly or indirectly through an advertisement network. Another advertising scheme attempts to guess the geographic location of a user based on the client's internet protocol (IP) address. When accessing the internet, individual clients are differentiated from each other by a unique number referred to as an IP address. In this advertising scheme, a database is maintained by the web host that contains a mapping that provides a correspondence between each IP address to a modem phone number. The mappings are created by retrieving the modem phone numbers and the different IP addresses that the modem phone numbers correspond to from internet service providers (ISP) (ISPs are companies that provide internet access to users). By searching the database for the IP address, the web host or advertising company can deduce which modem phone number the user called in from. Based on the modem phone number and area code, the web host or advertising company can deduce where geographically the user is from or what telephone exchange the user is closest to. Consequently, the user is provided advertisements based on the estimated geographic location of the user. Each of the above advertising schemes relies on the insertion and transmission of the advertisement by the web host. Additionally, each advertising scheme relies on information retrieved from the user (which may be modified by the user) or attempts to guess information about the user. Consequently, advertising is not precisely targeted and the premiums paid for "good demographics" and "precise targeting" are lower. The above advertising schemes also create additional processing overhead for the web host (for implementing an advertising scheme), require extra bandwidth to transmit the advertisement across the network to the user, and poorly target specific audiences. Further, due to the increased overhead and low hit count for small web sites, advertisers are reluctant to advertise on the smaller web sites. Additionally, due to the high advertising costs for large and frequently used web sites, small businesses cannot afford to conduct advertising. Advertising payment schemes do not provide for payment to the ISPs. Since ISPs do not benefit from the advertising, ISPs often do not cache the advertisements (resulting in increased transmission time) and software to strip off advertisements from web pages have appeared. Further, since payment schemes may be based on the number of hits, the hit count and number of page impressions must be determined. Techniques for checking and auditing the hit counts and number of page impressions are primitive and primarily based on trusting the web host who may inflate the numbers. SUMMARY OF THE INVENTION A method and apparatus for local advertising. Advertising is increasingly utilized by owners of web sites (referred to as web hosts) as a revenue source and for the advertisers to gain publicity and web site access. Web hosts sell advertising space on their web site and distribute web pages including the advertisements to internet users or clients. It is desirable for advertisements to target specific audiences and persons that may be interested in the specific good or service being advertised. Prior art advertising schemes poorly target audiences and create excessive internet traffic when retrieving and transmitting advertisements. According to one ore more embodiments of the invention, Internet Service Providers (ISPs) or proxies owned by an ISP insert advertisements that are transmitted from a web host to a client. The inserted advertisement may be an advertisement that is stored in the proxy's cache or may be retrieved from a web server for an advertiser. By providing the ISP with the ability to insert the advertisement, advertisements appear on small web sites that do not normally attract advertisers. Additionally, due to the number of advertisements placed by an ISP, small advertisers may have their advertisement appear in connection with frequently used web sites. One or more embodiments of the invention provide for a module to be downloaded to the proxy that is responsible for negotiating and inserting the advertisement. By using a module (that is provided by a server), proxies are unable to "cheat" or abscond with the advertisement slot without compensating the web server. One or more embodiments of the invention provide for the negotiation for inserting an advertisement wherein the proxy is not informed of the specific location of the advertisement in a web page prior to agreeing to terms (e.g., a price) for the advertisement insertion. In one or more such embodiments, a downloadable module may contain the advertisement location information but does not provide the information to the proxy or insert the advertisement until an agreement has been reached. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 illustrates a prior art method for processing web pages. Figure 2 is a block diagram of one embodiment of a computer system capable of providing a suitable execution environment for one or more embodiments of the invention. Figure 3 illustrates the relationship of an Online Profile Management System with a client, server, and proxy according to one or more embodiments of the invention. Figure 4 demonstrates several schemes for placing or inserting an advertisement into a web page according to one or more embodiments of the invention. Figure 5 illustrates advertisement insertion according to one or more embodiments of the invention. Figure 6 demonstrates a method for inserting advertisements in accordance with one or more embodiments of the invention. DETAILED DESCRIPTION OF THE INVENTION The invention is a method and apparatus for local advertising. In the following description, numerous specific details are set forth to provide a more thorough description of embodiments of the invention. It is apparent, however, to one skilled in the art, that the invention may be practiced without these specific details. In other instances, well known features have not been described in detail so as not to obscure the invention. Embodiment of Computer Execution Environment (Hardware) An embodiment of the invention can be implemented as computer software in the form of computer readable code executed on a general purpose computer such as computer 200 illustrated in Figure 2, or in the form of bytecode class files executable within a Java™ runtime environment running on such a computer, or in the form of bytecodes running on a processor (or devices enabled to process bytecodes) existing in a distributed environment (e.g., one or more processors on a network). A keyboard 210 and mouse 211 are coupled to a system bus 218. The keyboard and mouse are for introducing user input to the computer system and communicating that user input to processor 213. Other suitable input devices may be used in addition to, or in place of, the mouse 211 and keyboard 210. I/O (input/ output) unit 219 coupled to system bus 218 represents such I/O elements as a printer, A/V (audio/video) I/O, etc. Computer 200 includes a video memory 214, main memory 215 and mass storage 212, are coupled to system bus 218 along with keyboard 210, mouse 211 and processor 213. The mass storage 212 may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology. Bus 218 may contain, for example, thirty-two address lines for addressing video memory 214 or main memory 215. The system bus 218 also includes, for example, a 64-bit data bus for transferring data between and among the components, such as processor 213, main memory 215, video memory 214 and mass storage 212. Alternatively, multiplex data /address lines may be used instead of separate data and address lines. In one embodiment of the invention, the processor 213 is a microprocessor manufactured by Sun Microsystems, Inc., such as the SPARC™ microprocessor, or a microprocessor manufactured by Motorola, such as the 680X0 processor, or a microprocessor manufactured by Intel, such as the 80X86, or Pentium processor. However, any other suitable microprocessor or microcomputer may be utilized. Main memory 215 is comprised of dynamic random access memory (DRAM). Video memory 214 is a dual-ported video random access memory. One port of the video memory 214 is coupled to video amplifier 216. The video amplifier 216 is used to drive the cathode ray tube (CRT) raster monitor 217. Video amplifier 216 is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored in video memory 214 to a raster signal suitable for use by monitor 217. Monitor 217 is a type of monitor suitable for displaying graphic images. Computer 200 may also include a communication interface 220 coupled to bus 218. Communication interface 220 provides a two-way data communication coupling via a network link 221 to a local network 222. For example, if communication interface 220 is an integrated services digital network (ISDN) card or a modem, communication interface 220 provides a data communication connection to the corresponding type of telephone line, which comprises part of network link 221. If communication interface 220 is a local area network (LAN) card, communication interface 220 provides a data communication connection via network link 221 to a compatible LAN. Wireless links are also possible. In any such implementation, communication interface 220 sends and receives electrical, electromagnetic or optical signals which carry digital data streams representing various types of information. Network link 221 typically provides data communication through one or more networks to other data devices. For example, network link 221 may provide a connection through local network 222 to local server computer 223 or to data equipment operated by an Internet Service Provider (ISP) 224. ISP 224 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the "Internet" 225. Local network 222 and Internet 225 both use electrical, electromagnetic or optical signals which carry digital data streams. The signals through the various networks and the signals on network link 221 and through communication interface 220, which carry the digital data to and from computer 200, are exemplary forms of carrier waves transporting the information. Computer 200 can send messages and receive data, including program code, through the network(s), network link 221, and communication interface 220. In the Internet example, remote server computer 226 might transmit a requested code for an application program through Internet 225, ISP 224, local network 222 and communication interface 220. The received code may be executed by processor 213 as it is received, and/or stored in mass storage 212, or other non-volatile storage for later execution. In this manner, computer 200 may obtain application code in the form of a carrier wave. Application code may be embodied in any form of computer program product. A computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded. Some examples of computer program products are CD-ROM disks, ROM cards, floppy disks, magnetic tapes, computer hard drives, servers on a network, and carrier waves. The computer systems described above are for purposes of example only. An embodiment of the invention may be implemented in any type of computer system or programming or processing environment. Embodiment of Software Apparatus for Local Advertising One or more embodiments of the invention provide for local advertising. Advertisements may be inserted (or existing advertisements may be replaced) by the ISP, by the web host, or by a third party. When advertisement insertion is performed by the web host, the specific advertisement inserted may be based on user information such as demographic information or the user's preferences. Such user information is obtained by the ISP or intermediate proxy. Accordingly, local advertising is enabled through information maintained by an ISP or local advertisement insertion by an ISP or intermediate proxy. Local advertising is more fully described in co-pending patent application serial number 09/192,874, filed November 16, 1998 entitled "Method and Apparatus for Local Advertising" which is hereby fully incorporated by reference. Internet Service Providers (ISP) For most users to access the internet, an ISP is utilized. To utilize an ISP, an off-line relationship between the user and the ISP is established wherein the user sets up an account with the ISP by supplying the user's name, address, and other relevant information (e.g., credit card number for payment, credit rating, etc.). In exchange, the ISP assigns a user name, password, and potentially a static IP address (or a dynamic IP address if dial in access is utilized) to the user. Additionally, the ISP may obtain information for other off-line sources. Proxies (as described above) are usually owned and provided by a user's ISP. To access the internet, the user establishes a connection with the ISP or proxy. The user or client then requests a URL from a web server. The proxy intercepts the request, searches its cache for the requested information and returns the information to the client if the information is in the proxy's cache. If not in cache, the proxy communicates with the web server, retrieves the information, and forwards the information to the client. Since the ISP or proxy is utilized to conduct all internet access, when a user views a web page or completes any transactions on the internet, each and every user action is processed through the ISP or a proxy of the ISP. Consequently, the ISP has the ability to maintain statistics on the user and the user's internet viewing (referred to as user information or profile information) transparently to the user (without the user's knowledge). More specifically, the ISP has the ability maintain a user's profile consisting of demographic information such as the user's age, credit history, earnings, interests, purchases, the sites (URLs) the user has accessed, the amount of time spent on each and every web site (URL), other user accesses (such as emails, news readings /postings, etc.), and information when the user posts data or conducts searches (e.g., from queries /messages from a web server). Additionally, due to the off-line business relationship between the user and the ISP, privacy concerns may be addressed (compared to the lack of a business relationship with strangers). The collection and processing of user/client information is more fully described in co-pending patent application serial number 09/192,806, filed November 16, 1998 entitled "Method and Apparatus for Processing Client Information" which is hereby fully incorporated by reference. Profile Collection Profile information may be collected and maintained by a proxy in an Online Profile Management System. Figure 3 demonstrates the relationship of an Online Profile Management System 300 with a client 100, server 104, and proxy 102. As described above, all URL requests, text, and other information is transmitted from client 100 to proxy 102. Proxy 102 copies this information and stores it locally in a raw database 302. Thus, each time client 100 initiates a request for a URL, information regarding the request is stored in raw database 302. Additionally, when a user executes a search on an internet search engine, the text of the search may be stored in raw database 302. One unique element that only the proxy or ISP has access to, is the time that a user spends on a particular web site. Such time spent information may also be stored in raw database 302. Additionally, the proxy may use the time spent information and other information to filter out search engine robots that repetitively access links of a web page to add to the search engine's database. A profile 304 for each client is maintained in a Client Identification & Classification System. Profile 304 contains all information regarding a particular client or user including information collected off-line such as the user's name, residence, phone number, occupation, alternate email address, etc. The information from the raw database 302 is transferred and organized in the profile 304. Profile 304 may then be merged with other information databases such as mailing lists, direct marketing lists and subscriptions, a user's credit history, and shopping club information (e.g., if the user is a member of a market's shopping club, the information from the shopping club's database may be merged through an agreement between Proxy 102 and the market). The profile may also be time sensitive and created in real time so that when a user executes a search on an internet search engine, the search text is stored in the profile immediately. Additionally, if the user is at a non-payment based public terminal (e.g., at a library), the profile may be limited to the user's recent history and information about the terrninal and terminal location may be utilized. Further, if the user is at a payment-based public terminal, the client's address, credit card information, and recent history as the user browses the internet may be utilized. A profile is useful in determining the type of advertisement to display to a user. For example, if the profile indicates that client 100 executed a search for "flowers", the advertiser may desire to transmit a local flower shop advertisement to client 100. A profile may also be utilized to specifically target clients that utilize a competitor's goods or services. For example, if the profile maintains knowledge that the client accesses a Pizza Hut web site, the ISP can include advertisements for Round Table Pizza or Dominos Pizza on the user's next web access, even if this access is to a totally unrelated site. Further, if the profile indicates that the client has inquired about Burger King Jack in the Box, fast food, hamburgers, etc., the ISP can include advertisements for McDonalds or another competitor. Advertisement Insertion One or more embodiments of the invention provide for several schemes for placing or inserting an advertisement into a web page. Three of these schemes are demonstrated in Figures 4a-4c. In Figures 4a-4c, client 400 requests a URL from web server 404 which is intercepted by proxy 402. Proxy 402 requests the URL from web server 404 if the information is not in the cache of proxy 402. Referring to Figure 4a, if the advertisements are not included in the information provided by web server 404 to proxy 402, the information provided by web server 404 may include additional URL information specifying the advertisements for proxy 402 to fetch from the advertiser's web server 406. Consequently, proxy 402 retrieves the necessary advertisement from the advertiser's web server 406. Subsequently, proxy 402 forwards the information including the advertisements to client 400. Alternatively, an advertiser (or the advertiser's web server) 406 may specify the type of customer /client 400 it is interested in and the amount of money it is willing to pay for such information. For example, the advertiser (or advertiser's web server 406) may state that it is interested in client 400's age and credit rating. Specifically, advertiser's web server 406 may be interested in clients that are (a) in the 18-35 age group (e.g., code = al835); (b) live in or around Palo Alto, California (e.g., code=c35), and (c) have previously ordered food on-line (e.g., code = of) and is willing to pay 10 cents for every such client 400. When proxy 402 transmits the web request to web server 404, the advertiser's (or advertiser's web server 406) preferences may be forwarded to web server 404. For example, proxy 402 may add the following to the URL request: "&proxy:code=al835+c35+of:age=23+val2=AB" (or places the same information in appropriately defined HTTP options). When server 404 receives the URL request with the added information, server 404 may then use the added information to insert appropriate advertisements that it has stored, to verify the customer demographics information, to provide tailored content for the demographics, or for some other purpose. Thus, the ISP may receive payment based on the demographic information they provide. Referring to the scheme demonstrated in Figure 4b, client 400 requests a URL from web server 404 that is intercepted by proxy 402. Proxy 402 retrieves the relevant information excluding the advertisements from web server 404. In one or more embodiments, proxy 402 inserts advertisements and forwards the completed package to client 400. In such an embodiment, multiple advertisements may be stored by proxy 402 in a database or the cache of proxy 402. These stored advertisements may be retrieved (from advertiser's web server, for example) prior to the URL request from client 400 or may be retrieved when the client URL request is received by proxy 402. Further, the advertisements may be purchased from another ISP if desired. By storing advertisements prior to receiving a URL request, a response may be provided more quickly to client 400 (the step of retrieving an advertisement from advertiser's web server 406 is eliminated) resulting in effective caching. Alternatively, client 400 may be provided a web page with an empty slot due to an IMG directive (a directive (as specified in the HTML of the web page) to load an inline image stored on the server). An advertisement slot is the location and space in the web page where the advertisement will be or is placed. An advertisement slot may already contain an advertisement (referred to as an advertisement block) that may be replaced or may be an empty slot. When an empty slot is transmitted, client 400 attempts to retrieve information for the empty slot. The retrieval may be intercepted by proxy 402 who may then insert an advertisement. Referring to Figure 4c, client 400 transmits a URL request to proxy 402 which then retrieves the URL request excluding the advertisement block from web server 404. To insert an advertisement, proxy 402 transmits the advertisement slot characteristics and advertisement characteristics (as provided by web server 404), profile, cost, or other information (stored as described above) to the advertiser's web server 406. For example, proxy 402 may inform advertiser's web server 406 that the user that is requesting the URL has accessed numerous automobile sites or is shopping for an automobile. Alternatively, proxy 402 may inform advertiser's web server 406 that the cost for the advertisement is 10 cents. Advertiser's web server 406 determines the advertisement block to insert and informs proxy 402 (if proxy 402 has been provided multiple advertisements in advance for cache storage) or forwards the advertisement to proxy 402. Further, in one or more embodiments, multiple advertisements may fit within the advertisement slot provided When a checksum is utilized, any modification by the proxy such as the insertion of an advertisement will cause the transmission to fail. For example, the insertion of an advertisement may result in the transmission of additional or fewer bits. The change in the number of bits will cause the check digit to differ thereby resulting in a failed checksum. Additionally, if SSL is utilized to transmit the information, the proxy will be unable to read the information including the identifying advertisement information. One solution to enabling the proxy to insert advertisements requires the server to enable the proxy to decrypt all data before sending it back to the client. Such a solution defeats the purpose of using SSL (i.e., to provide a secure connection such that only the sender and receiver can read the information transmitted). One or more embodiments of the invention provide for the insertion of advertisements by a proxy regardless of whether checksum or SSL encryption is utilized. Referring to Figures 4a-4c, as described above, in non-SSL and non- checksum embodiments, web server 404 provides the requested response to client 400 (through proxy 402). In addition to the response, web server 404 may provide client 400 the URL for advertiser's web server 406. Upon receiving the URL for advertiser's web server 406, client 400 retrieves the relevant advertisement from advertiser's web server 406 through proxy 402. However, with local advertisement insertion, proxy 402 may insert an advertisement with the initial response from web server 404 (or may replace the URL information with a URL for an advertisement within proxy 402 or an advertiser for proxy 402). However, as demonstrated above, such insertions may fail if checksum or SSL encryption is utilized. To accommodate checksum and SSL encryption, one or more embodiments of the invention provide for local advertisement insertion by proxy 402 wherein proxy 402 does not modify the initial response provided by web server 404 to client 400. In such an embodiment, web server 404 provides proxy 402 information such that proxy 402 can intercept the next request from client 400 (where client 400 requests /fetches the advertisement text/ graphics at the specified URL) as well as the next HTTP request when client 400 selects /clicks on the advertised image. Such information may be transmitted such that it may only be viewed by proxy 402 (and is not passed on to client 400). Server 404 may provide the information to proxy 402 in several manners. In one or more embodiments, server 404 provides the information as a small header or trailer in a packet of data (that is separate from the packet containing the remaining response) during the same connection as the transmission of the remaining packets. In one or more embodiments, server 404 may provide the information in a packet of data during a different connection than the connection for the transmission of the remaining information. By providing the information in a separate packet (either within the same connection or in a separate connection) from the remaining information, a separate checksum may be utilized so that the original information that is communicated is still secure. For example web server 404 may inform proxy 402 of the URLs (for the advertisements) that are being sent to client 400. Such information may be intended solely for proxy 402 and may be provided in cleartext so that proxy 402 can read the information. Consequently, when client 400 issues the request for the advertisements (at the URLs specified), proxy 402 can intercept the request. Once intercepted, proxy 402 may substitute its own advertisement (e.g., an advertisement stored in cache) or may provide a new URL for another advertisement (e.g., an advertisement on advertiser's web server 406). Such an implementation also permits any negotiations for price and other information as provided above and below (e.g., web server 404 may inform proxy 402 (in the initial response) that if proxy 402 desires to insert an advertisement, it will cost 6 cents). Thus, proxy 402 does not need to read the substantive response (e.g., HTML) from web server 404 or modify the response from web server 404 to client 400 and thereby does not modify the checksum. For example, suppose client 400 requests a page from server 404 (e.g., by specifying the URL "www.bigbank.com") using SSL. When server 404 returns the requested page, server 404 may also provide an advertisement slot with the advertisement image set to a particular URL (e.g., www.CREDITCARD.com/NEW-AD.GIF) and the HREF (Hypertext REFerence used to specify the name or URL of the file that is loaded when the user selects/clicks the link) set to a particular URL (e.g., www.CREDITCARD.com/PROMOTION). Consequently, using the above example, the reply headers (which are in clear text) of the response sent by server 404 may include: AD-GIF: www.CREDITCARD.com/NEW-AD.GIF AD-URL: ww.CREDiTCARD.com/PROMOTION Proxy 402 reads the cleartext headers and passes the SSL-encrypted or checksum page to client 400 without any changes. However, when client 400 makes a request for www.CREDITCARD.com/NEW-AD.GIF (as specified in the AD-GIF URL), proxy 402 intercepts the request and inserts its own advertisement in the reply. For example, proxy 402 may reply with a new advertisement URL or a GIF image for an advertisement for a car (e.g., an advertisement stored in the cache of proxy 402 or retrieved from www.CARMANUFACTURER.com/truck.gif). Further, if client 400 clicks on the advertisement to obtain more information, proxy 402 again intercepts the request and replies with a web page fetched from the company placing the advertisement (e.g., HTML text from www.CARMANUFACTURER.com/car- deals.html). In one or more embodiments of the invention, web server 404 can create new, unique identifiers for the advertisements images /URLs to visit. For example, web server 404 may create a unique URL (that may or may not map to the same advertisement) on a proxy wide or client wide basis such that each URL differs based on the proxy or client that makes the URL request. By providing unique URLs, it is relatively simple for web server 404 to determine how often a particular URL is selected or clicked on. By examining the number of times a particular URL is selected, web server 404 can determine how many times a local advertisement was utilized instead of the advertisement specified by web server 404. For example, web server 404 can generate a URL such as "www.CREDITCARD.proxyl.com/NEW-AD.GIF", "www.CREDITCARD.proxy2.com/NEW-AD.GIF", etc. for each proxy (with each URL pointing to the same GIF file). A table may be utilized to store the various URLs available. If a particular URL is selected by proxy 402, then the advertisement specified by web server 404 is utilized. However, if the given URL is not selected, then web server 404 can assume that proxy 402 replaced the specified advertisement with another advertisement. Consequently, web server 404 can determine how often a proxy is replacing advertisements. In addition or in combination with the options illustrated in figures 4a, 4b, and 4c, proxy 400 may initiate the local advertising by expressing interest in inserting its own advertisement (that may or may not be stored in the proxy's cache) or inserting multiple advertisements to web server 404. For example, proxy 402 may indicate an interest in placing an advertisement to web server 404. In response, web server 404 returns an advertisement slot with a price to proxy 402 (in addition to the requested web page). In another embodiment, proxy 402 could indicate an interest in inserting an advertisement along with a price it is willing to pay. Negotiations for the price may then continue as described in detail below. The advertisement pricing may be based on a number of factors including the number of advertisement that the proxy has or can display, the number of negotiable advertisement spots, the current market history, and the history of previous price agreements with a particular party. One or more embodiments of the invention set the price equal to the most expensive advertisement price for the demographic. The price may then be adjusted by the opportunity cost that the advertisement cannot be shown (or shown as often) or by other factors such as the past history, for example. After obtaining the profile information and a set of potential advertisements that may be inserted, the proxy must determine which particular advertisement to insert for this particular user. In one or more embodiments, a database that maps users to their profiles /preferences is utilized to access the profile information. In one or more embodiments, a database contains a mapping of profiles or preferences to a set of advertisements. In one or more embodiments, a database of advertisements with their prices is maintained. Once desired databases are established, a policy for selecting the advertisement to insert may be utilized. For example, the proxy may implement a policy that displays the most expensive advertisements for a particular slot. In one or more embodiments, advertisements may be rotated for the same user so that the same user is not always displayed the same advertisement. In one or more embodiments, the advertisement may be selected based on the number of advertisements placed by an advertiser. For example, if a car manufacture ("MFG 1") has authorized 100 advertisement inserts and another car manufacture ("MFG 2") has authorized 100,000 advertisement inserts, the MFG 2 advertisements may be utilized more frequently to save the MFG 1 advertisements for when the MFG 2 advertisements cannot be used (based on the user's profile or other characteristic (e.g., limited browser capability)). In order to insert an advertisement, the size and characteristics of the advertisement and the advertisement slot must be known by proxy 402. Proxy 402 is able to determine the characteristics of the advertisement slot (e.g., dimensions of the advertisement slot) based on the information transmitted from web server 404. In one or more embodiments, the characteristics of the advertisement and advertisement slot are encoded as part of the URL itself or around the URL (but not encoded as part of the URL). In another embodiment, the characteristics of the advertisement and advertisement slot are specified in tags of the HTML. In another embodiment, the characteristics of the advertisement and the advertisement slot may be shipped as part of the HTTP headers (as described above). The specifics of such tags are discussed in detail below. Alternatively, the type of advertisement to be inserted may be specified by web server 404, the type of advertisement that cannot be inserted may be specified by web server 404, or the type of advertisement to be inserted may be left up to proxy 402. In one or more embodiments, the price information for the advertisement slot may consist of multiple values with each price dependent on the advertisement size and slot location (e.g., high on the web page v. the end of the page). Additionally, the price may vary depending on the number of advertisement slots that the proxy or web server purchases (e.g., a discount for volume advertisement placement) and on the number of other third party advertisements that may be present on the page. Figure 5 illustrates advertisement insertion according to one or more embodiments of the invention in connection with Figures 4a-4c. At step 500, client 400 requests a URL from web server 404. At step 502, ISP proxy 402 intercepts the URL request. At step 503, proxy 402 searches its cache for the specified web page. If the specified web page is not in cache, proxy 402 forwards the web page request to web server 404. At step 504, web server 404 transmits the specified web page to proxy 402. The transmission by web server 404 may include a determination regarding whether to insert a global advertisement or to transmit a blank advertisement slot for an advertisement insert by proxy 402. If a global advertisement is inserted, web server 404 may specify that the global advertisement cannot be stripped, removed, or replaced with a local advertisement by proxy 402. Further, the transmission of a blank slot may also include a specified price or restriction requirement for the advertisement insertion. Thus, the web page transmitted may include a global advertisement inserted by the web host (in such a situation, web server 404 may determine that it is more cost effective to insert a global advertisement than to rely on an advertisement insertion by proxy 402). Alternatively, the transmission by web server 404 may exclude a global advertisement or provide a replaceable advertisement block due to the lack of an advertising contract (with an advertiser), as a result of a previously agreed upon blank slot for the proxy to insert an advertisement, or as the result of a contract dynamically negotiated in real time between proxy 402 and web server 404. The dynamic negotiation between proxy 402 and web server 404 may be completed in a single message-exchange wherein the initiator names his/her price and the other party agrees /disagrees. For example, in one form of negotiation, ISP 402 may initiate the negotiation by offering web server 404 a certain sum of money if web server 404 returns a web page with an empty advertisement slot (this may be passed by ISP 402 to web server 404 in the initial HTTP request). In exchange, web server 404 either returns a page with an empty slot to accept the contract, or does not include any empty slots to decline the contract. In another form of negotiation, web server 404 initiates the negotiations by returning a page with an empty advertisement slot or a replaceable advertisement block and offering the ISP 402 the option of introducing a local advertisement at a certain price (the URL where proxy 402 must go to fetch the real advertisement if it does not want to insert a local advertisement at the listed price may also be provided by web server 404). In exchange, if ISP 402 does not accept the offer, ISP 402 may fetch the web site's advertising (the advertisement block) from web server 404 (or advertiser's web server 406 if the URL is provided to ISP 402). Alternatively, ISP 402 may specify the amount ISP 402 is willing to pay to web server 404 for use of the advertisement slot (in which case, web server 404 then responds to ISP 402 by accepting, declining, or providing an alternative amount). Additional iterations may then ensue until an amount for the advertisement is agreed upon, or the negotiation is terminated by one party (e.g., by sending a page without an empty advertising slot, or by removing the offer). Referring again to Figure 4, two of the options that may be implemented by one or more embodiments of the invention to complete the advertisement insertion process are described. Under Option A, proxy 402 determines whether to insert a local advertisement at step 506. This determination may include replacing the advertisement block (unless such replacement is restricted by web server 404) forwarded from the web server 404. Further, the deterrnination may be based on the demographic profile information stored by proxy 402. As described above, the specific advertisement or type of advertisement to be inserted or any advertisement restrictions may be specified by web server 404. Additionally, under Option A, upon receipt of a web page without advertisements, proxy 402 may negotiate (in real time) with web server 404 for the insertion of an advertisement. Such a negotiation may include proxy 402 specifying the amount it is willing to pay web server 404 for an advertisement insertion. Subsequently, proxy 402 may insert an advertisement that proxy 402 has stored in cache or may request the transmission of an advertisement block from the advertiser's web server 406. However, if an advertisement is to be inserted from cache, proxy 402 must determine whether such cached advertisement is valid. For example, proxy 402 may not be able to insert a cached advertisement based on a preexisting agreement that only allows advertisements to be inserted on a per request basis or the time limit for a particular advertisement may have expired. Whether a cached advertisement is valid may be specified in the tag fields discussed in detail below. At step 512, proxy 402 transmits the web page text and any associated advertisement to client 400. Under Option B, at step 508, proxy 402 forwards demographic information, costs, and other information to the advertiser's web server 406. At step 510, the advertiser's web server 406 determines the advertisement to insert. As described above, the determination may include an evaluation of the demographic material by advertiser's web server 406 so that a targeted advertisement may be inserted. Advertiser's web server 406 may also evaluate the associated costs for the advertisement. At step 510, advertiser's web server 406 forwards the selected advertisement, if any, to proxy 402. At step 512, proxy 402 inserts the advertisement and forwards the web page text and local advertisement to client 400. Alternatively, a URL transmission may pass through multiple proxies (e.g., four or five). In such a situation, is response to a URL request, web server 404 may reply (as described above) with an empty advertisement slot, and require a five cent payment if the slot is utilized (a URL from which the advertisement should be fetched if not inserted by proxy 402 may also be provided). The proxies on the path from server 404 to client 400 may elect to (a) pass the request to the next proxy, (b) perform a local insertion (accepting the specified price), or (c) increasing the price of the insertion and changing the URL that the advertisement is to be fetched from (if further proxies elect not to perform a local insertion). Thus, advertisements and advertisement slots may be sold by one proxy to another proxy or one entity to another entity. For example, the first proxy (on the path from server 404 to client 400) may determine that the slot is worth six cents and raise the price of the advertisement insertion (the first proxy may also replace the alternative advertisement URL). The second proxy may elect not to perform a local advertisement insertion because the price is too high. The third proxy may elect to increase the price to eight cents and again replaces the alternative advertisement URL. Remaining proxies may then decline local advertisement insertion. In such a situation, the local advertisement will be retrieved from the URL specified by the third proxy. Thus, the third proxy provides six cents to the first proxy, who pockets one cent (six cents minus five cents) and the first proxy pays the web site five cents. By evaluating demographic and profile information as described, direct marketing advertisers and one-on-one advertisers may more accurately target specific individuals. Further, the ISP 402 (and other proxies) benefits (by selling advertising space and utilizing its collected profile and other information), web server 404 benefits (by selling more advertising space regardless of whether web server 404 is small or large), the advertiser benefits by accurate targeting (resulting in an increased probability of a click-through), and client 400 benefits by receiving advertisements that the client may be particularly interested in. Additionally, if client 400 does not want its information released or collected, client 400 may enter into a contract with ISP 402 restricting the use, distribution, or collection of such information or utilize an ISP 402 that does not maintain demographic databases or user profiles. The above embodiments may or may not utilize the information stored in the proxy's cache. For example, the proxy may negotiate a price for a certain number of page uses or advertisement inserts. Thus, the proxy's cache can be utilized for the specific number of advertisements negotiated. Alternatively, an advertisement may be identified to be displayed to one end user. If another user requests the same page, the proxy can issue a conditional "get" request from the server. The server can then respond with a new price structure for the advertisement or with updated values for the various parameters. Using this approach, user-specific pricing is available without downloading the same advertisement or web page content repetitively. In one or more alternative embodiments, the proxy and server utilize a common user identification system to set advertisement selection and prices. For example, the server could identify a set of cookies or profile details for which it is willing to pay a specific price (e.g., 5 cents per display for a medium size slot). As a result, whenever the proxy intercepts a request from a user that matches the cookie or profile details, the proxy can elect whether or not to insert the advertisement for the server's set price. In one or more embodiments of the invention, the advertisement slot location is not provided to the proxy until after the proxy has agreed to the terms for inserting an advertisement (e.g., at an agreed upon price). Figure 6 demonstrates a method for inserting advertisements in accordance with one or more such embodiments. The method demonstrated in figure 6 is similar to and may operate in conjunction with one or more embodiments as described in figure 5. Referring to figure 4 and figure 6, at step 600, client 400 requests a URL from web server 404. At step 602, ISP proxy 402 intercepts the URL request. At step 604, proxy 402 searches its cache for the specified web page. If the specified web page is not in cache, proxy 402 forwards the web page request to web server 404. At step 604, web server 404 transmits the specified web page to proxy 402. The web page transmission at step 604 may include an empty advertisement slot and details of the slot (e.g., the size, restrictions on the type of advertisement, etc.). However, the web page transmission does not include the location of the advertisement slot on the web page. By excluding the location of the advertisement slot, proxy 402 cannot "cheat" and receive payment from an advertiser (or promote itself or a related company) by inserting and transmitting an advertisement without informing web server 404. Alternatively, instead of transmitting the web page to proxy 402, web server 404 may initiate a negotiation for the insertion of a web page. At step 608, a determination is made as to whether proxy 402 has agreed to the terms for inserting an advertisement. The agreement regarding the terms for inserting an advertisement may be negotiated between web server 404 and proxy 402 in various manners as described above and below. If proxy 402 and web server 404 cannot agree on pricing or other terms for the insertion of an advertisement, proxy 402 may inform web server 404 so that web server 404 can insert an advertisement (if not already in the advertisement slot) or proxy 402 may transmit the web page to client 400 in the form proxy 402 currently has at step 614. If web server 404 did not transmit any information to proxy 402, web server 404 may then transmit the web page and advertisement to proxy 402. If web server 404 and proxy 402 reached an agreement regarding the terms for advertisement insertion at step 608, web server 404 transmits the location of the advertisement slot to proxy 402 at step 610. If web server 404 has not yet transmitted the web page, the transmission of the location of the advertisement slot may include the web page. At step 612, proxy 402 may insert the local advertisement in the advertisement slot and transmit the web page and local advertisement to client 400. Thus, until proxy 402 has agreed to the terms for inserting an advertisement and has informed web server 404 of the agreement, proxy 402 does not know the location of the advertisement slot and cannot insert an advertisement. Such an approach inhibits proxy 402 from placing an advertisement on its own without compensating or mforming web server 404. Software Embodiment of Method and Apparatus for Local Advertising An embodiment of the invention includes a software apparatus configured to insert local advertisements. The software may be implemented as instances of object classes in accordance with known object-oriented programming practices. Further, such an embodiment may be implemented in the Java™ programming language. To provide a better understanding of such an embodiment, an overview of object-oriented programming and the Java programming language is provided below. Object-Oriented Programming Object-oriented programming is a method of creating computer programs by combining certain fundamental building blocks, and creating relationships among and between the building blocks. The building blocks in object-oriented prograrriming systems are called "objects." An object is a programming unit that groups together a data structure (one or more instance variables) and the operations (methods) that can use or affect that data. Thus, an object consists of data and one or more operations or procedures that can be performed on that data. The joining of data and operations into a unitary building block is called "encapsulation." An object can be instructed to perform one of its methods when it receives a "message." A message is a command or instruction sent to the object to execute a certain method. A message consists of a method selection (e.g., method name) and a plurality of arguments. A message tells the receiving object what operations to perform. One advantage of object-oriented programming is the way in which methods are invoked. When a message is sent to an object, it is not necessary for the message to instruct the object how to perform a certain method. It is only necessary to request that the object execute the method. This greatly simplifies program development. Object-oriented programming languages are predominantly based on a "class" scheme. The class-based object-oriented programming scheme is generally described in Lieberman, "Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems," OOPSLA 86 Proceedings, September 1986, pp. 214-223. A class defines a type of object that typically includes both variables and methods for the class. An object class is used to create a particular instance of an object. An instance of an object class includes the variables and methods defined for the class. Multiple instances of the same class can be created from an object class. Each instance that is created from the object class is said to be of the same type or class. To illustrate, an employee object class can include "name" and "salary" instance variables and a "set_salary" method. Instances of the employee object class can be created, or instantiated for each employee in an organization. Each object instance is said to be of type "employee." Each employee object instance includes "name" and "salary" instance variables and the "set_salary" method. The values associated with the "name" and "salary" variables in each employee object instance contain the name and salary of an employee in the organization. A message can be sent to an employee's employee object instance to invoke the "set_salary" method to modify the employee's salary (i.e., the value associated with the "salary" variable in the employee's employee object). A hierarchy of classes can be defined such that an object class definition has one or more subclasses. A subclass inherits its parent's (and grandparent's etc.) definition. Each subclass in the hierarchy may add to or modify the behavior specified by its parent class. Some object-oriented programming languages support multiple inheritance where a subclass may inherit a class definition from more than one parent class. Other prograrn ing languages support only single inheritance, where a subclass is limited to inheriting the class definition of only one parent class. The Java programming language also provides a mechanism known as an "interface" which comprises a set of constant and abstract method declarations. An object class can implement the abstract methods defined in an interface. Both single and multiple inheritance are available to an interface. That is, an interface can inherit an interface definition from more than one parent interface. An object is a generic term that is used in the object-oriented prograrrtming environment to refer to a module that contains related code and variables. A software application can be written using an object-oriented prograrmriing language whereby the program's functionality is implemented using objects. As previously discussed, the encapsulation provided by objects in an object-oriented programming environment may be extended to the notion of components under a component model definition. Implementation in the Java Programming Language Embodiments of the invention may be implemented in any type of programming language (object oriented or otherwise) including but not limited to programming languages such as FORTRAN, Pascal, Assembly Language, C, C++, Ada, LISP, Java or Visual Basic. The description, examples, and implementations described below may refer to or utilize the Java programming language, but the invention is not limited to use of the Java prograrrurring language or JavaBeans components and may be implemented in any type of programming language. The Java prograrmning language is an object-oriented programming language with each program comprising one or more object classes. Unlike many prograrmring languages, in which a program is compiled into machine- dependent, executable program code, Java classes are compiled into machine independent bytecode class files. Each class contains code and data in a platform- independent format called the class file format. The computer system acting as the execution vehicle supports the Java runtime environment. The runtime environment contains a program called a virtual machine, which is responsible for executing the code in Java classes. Applications may be designed as standalone Java applications, or as Java "applets" which are identified by an applet tag in an HTML document, and loaded by a browser application. The class files associated with an application or applet may be stored on the local computing system, or on a server accessible over a network. Each class is loaded into the Java runtime environment, as needed, by the "class loader." Java classes are loaded on demand from the network (stored on a server), or from a local file system, when first referenced during an application or applet's execution. The runtime environment locates and loads each class file, parses the class file format, allocates memory for the class's various components, and links the class with other already loaded classes. This process makes the code in the class readily executable by the virtual machine. Embodiments of the software apparatus may be implemented using any programming language including standard OOP object classes . For the purposes of the following description, references to components may refer to instances of OOP object classes. Advertisement Modules One or more embodiments of the invention provide for the use of advertisement modules that are downloaded and used by a proxy. One or more embodiments of the invention provide for a module in the form of an applet wherein code is downloaded and executed by the proxy. The module/applet may be loaded with detailed information regarding the advertisement slot. For example, the module may be loaded with the size of the advertisement, any restrictions regarding the type of advertisement that may be inserted, a price for the advertisement, or a price range. Further, the module may be configured with enough negotiation information to enable the module to negotiate with proxy 402 for a price for proxy 402 to insert an advertisement. To accommodate these various features, the module may be an object that includes a method that utilizes the price range data to negotiate a price. Once the module has negotiated a price and other terms with proxy 402, the module may release /inform proxy 402 of the advertisement slot location. In one or more embodiments, the module may not release the advertisement slot location prior to informing web server 404 of the price and receiving a confirmation/ authorization message from web server 404. Alternatively, web server 404 may not transmit the advertisement slot location information with the module and web server 404 may not transmit the slot location information until after the module has informed web server 404 that an agreement on the terms of advertisement insertion has been reached. Thus, depending on the implementation, the module may or may not be loaded with the advertisement slot location information. In one or more embodiments, the module may maintain the state of the proxy and retain information regarding the number and prices of the various advertisements inserted by proxy 402. Once a predetermined number of advertisement insertions have occurred, at a specific time, or when requested, the module may transmit the collected information to web server 404. Consequently, the module maintains the state of the various insertions and transmits the state and data all at once to web server 404. By collecting the information and transrmtting the information all at once, network traffic and processing time are reduced. Further, by downloading and executing the code on the proxy, transmissions and responses to client 400 are faster. Advertisement Tags To specify advertisement characteristics, advertisement tag(s) may be specified in the HTML. The server could specify a tag or tag combination (e.g., a <A> ... </ A> block that follows one of the tags described below. Alternatively, the proxy could make an educated guess regarding the statistics using a new tag or based on a <A> .. <IMG...> </A> tag combination (along with a database of substrings to match) for example. Different characteristics may be specified as part of one tag or multiple tags. An ADSIZE tag may specify one or more of the standard defined sizes (e.g., half size or full size) for banner advertisements or the dimensions of the "slot" for the advertising banner. An ADPOSITION/ ADLOCATION tag may specify the location for a particular advertisement on a web page (e.g., position 8 or 3 inches from top and 1 inch from left side of web page) and may be used in conjunction with an ADSIZE tag. An ADPRICE tag may specify the cost for placing the advertisement. The cost may be based on the size of the banner (e.g., half 5.2 full 3.4) or may be based on a prior relationship between the advertising agency and the proxy (e.g., based on a click through, referral commission, or the demographic information supplied by the proxy). Additionally, the ADPRICE tag may specify a particular currency, specify multiple alternative pricing schemes, or specify an additional cost if the advertiser desires to maintain exclusivity for the web site (e.g., if the advertiser desires only advertisements for a specific car brand (e.g., Toyota) to appear on a web site, a premium or additional cost may be assessed). Alternatively, the ADPRICE tag may be utilized by an advertiser to notify the proxy what it is willing to pay for a specific advertisement. An ADRESTRICT tag may specify the categories /types of advertisements to allow /deny. For example, a religious web site may desire to exclude any advertisements for pornographic web sites or to only allow advertisements for books. An ADDEMOGRAPHIC tag may specify demographic information about the user that the advertisement will be presented to. Such a tag may be utilized in connection with one or more embodiments described in connection with Figure 4c above. For example, the age, credit history, salary, interests, prior purchases, prior web sites accessed, web search conducted, shopping information, or time spent on a particular web site (which is only known by the ISP or proxy) may be specified. Alternatively, the ADDEMOGRAPHIC tag may be used in conjunction with the ADPRICE tag by the advertiser to inform the proxy what the advertiser is willing to pay for a specific advertisement displayed to a particular user with specified demographic information. For example, the advertiser may specify that he/she will pay 10 cents for a mortgage advertisement displayed to a first time home buyer and 5 cents for a mortgage advertisement displayed to an existing home owner. In addition to the above tags or in conjunction with the above tags, an additional LOCALAD_NEGOTIATION tag or bits may be used to identify the negotiation process. For example, one part of the LOCAL AD_NEGOTIATION tag may specify that web server 404 is open to negotiations to determine the cost for a local advertisement insertion. Another part of the LOCALAD_NEGOTIATION tag may specify the maximum negotiation that is permissible (to limit the web page transmission time to a waiting client 400). For example, the maximum negotiation may be a unit of time such as 10 seconds or a number of transmissions that occur between proxy 402 and web server 404, e.g., 4 transmissions. An IMG directive may also be utilized to specify information about the image to be displayed (that may contain the advertisement) along with the advertisement slot characteristics. For example, the tag <IMG SRC=ad-image.gif WIDTH=40 HEIGHT=60 PRICE=34> provides for an image named ad-image.gif with a width of 40, a height of 60 and an added advertisement price field with a value of 34. Alternatively, instead of specifying the above information in the form of an HTML tag, the information may be specified as part of the URL request that is provided to the advertiser or as part of the data stream. For example, the server may specify that the advertisement slot in the HTML is transmitted as characters or bytes 55 to 75 of the data stream. Auditing and Cross Verification System Once advertisements have been displayed to a user, the advertiser will pay the agreed upon amount to the advertising agency, proxy, or web host. Since hit count numbers and click-through numbers may be inflated, a system for auditing and verifying that an advertisement was actually displayed to a user is desirable. Additionally, in a situation where the ISP maintains a contract directly with the advertiser (i.e., the ISP pays the web host (with money received from the advertiser) for advertisement space), the web host may desire to verify the amount paid by the advertiser to the ISP. Such verification may be performed by a third party such as an independent auditor. Referring to Figures 4a-4c, logs containing information regarding all transmissions are maintained by proxy 402, web server 404, and advertiser's web server 406. Such logs may have to be maintained at the request of the advertiser. For example, the logs may maintain a unique connection identifier such as the time, the advertisement inserted (if any), and the 4-tuple (src IP address (source IP address), src port (port number of the source), dest IP address (destination IP address), dest port (port number of the destination). Consequently, web server 404 maintains information regarding the number, type, and timing of URL requests that it receives and transmits to proxy 402. Similarly, proxy 402 maintains information regarding the number, type, and timing of advertisements it transmits to client 400. Client 400 may be uniquely identified from other clients at any one point in time using various methods. For example, the IP address or port number may be a unique number assigned to client 400. However, since multiple family members may use the same computer with the same IP address or port number, a user's login name, or the user's login name concatenated with the IP address or port number may be utilized to unique identify a client 400 from other clients and to differentiate between family members (the assigned IP address may also be mapped to a unique user identifier). The user can also be identified by the cookies that the user transmits to web sites. Alternatively, a group of users may be identifiable. For example, the ISP may assign a block of users to use the same proxy which may then be utilized to identify the aggregate of users. Consequently, based on the information, the advertiser may restrict the proxy to only insert advertisements on pages from chosen web sites, if desired. To verify the number of advertisements actually displayed to client 400, the URL request from a particular client 400 at a particular time (and the resulting transmission) stored in the log of web server 404 may be cross-checked with the transmission of the advertisement (and the web page from web server 404) to a particular client at a particular time stored in the log of proxy 402. By cross checking and comparing the information from the log of web server 404 and from the log of proxy 402, the advertiser may determine whether an advertisement was actually displayed and the web host 404 may calculate the amount of money it expects to receive. The advertiser may also limit the cross checking to the larger web sites to attempt to determine how many transmissions occur with a particular ISP (to determine if the number of paid advertisements matches the number of transmissions). Additionally, the advertiser may confirm and cross check the amount of money that the web server receives from advertising. Additionally, the advertiser can obtain the hit-count information from different sets of content-providers (web servers) as well as different sets of proxies (with each hit equaling a content-provider providing a page to one proxy that substitutes the advertisement). Cross-referencing may then be performed to check whether each proxy is behaving within the industry norm for all proxies for that particular advertisement being served (from that particular server or in general from all servers). This industry norm can be more accurately determined using a sampling auditing scheme. In a sampling scheme, the proxy may be informed that no advertisements are available or that the pages are non-cacheable (for a subset of page views). The advertisement hit-rate (and repeat rate) is then obtained. The proxy's claims regarding the hit-rate and repeat-rate are then statistically examined to determine if the rates are likely or not. The cross-checking as indicated above may. also be placed into a spreadsheet or database that maintains the information regarding the number of mismatches. Based on the number or percentage of mismatches, additional action by web server 404 or the advertiser may be taken (e.g., canceling a contract or purύshing the relevant party). For example, if web server 404 learns that it is only receiving payment for 10% of the advertisements being displayed, web server 404 may cancel the contract with the ISP 402 inserting the advertisements or cancel the contract with the advertiser. Alternatively, web server 404 may punish ISP 402 by increasing the advertisement cost by 10% for any advertisements inserted by ISP 402. Similarly, if the advertiser learns that there are 5% mismatches, the advertiser may pay 5% less to ISP 402 or web server 404. As a result of the ability to cross check the information maintained by the various entities (e.g., client 400, ISP 402, and web server 404), two or more parties would have to conspire together to defraud a third party of profits. In the prior art, such collusion was not necessary (i.e., one party alone could defraud another of profits because no cross verification system was available). Verification is also needed to determine if the demographics supplied by the ISP are accurate. Such verification is particularly useful when the cost of the advertisement is dependent on the demographics (e.g., a Mercedes or Jaguar advertiser may pay more if the client lives in a wealthy area). This verification may be performed by independent auditors that examine, test, and evaluate the demographic system (i.e., the computer software used to implement the Online Profile Management System 300 of Figure 3) and the profile maintained by the ISP to determine. The independent auditors evaluate and test the software to determine if the method for obtaining and determining the information, and inserting a particular advertisement is reliable. Thus, a method and apparatus for local advertising on the internet is described in conjunction with one or more specific embodiments. The invention is defined by the claims and their full scope of equivalents.

Claims: CLAIMS 1. A method of advertising comprising: determining if a proxy agrees to terms for inserting one or more advertisements; if said proxy does not agree to terms for inserting one or more advertisements, transmitting information to be displayed while withholding a location of one or more advertisement slots to said proxy ; if said proxy agrees to terms for inserting one or more advertisements: transmitting a location of one or more advertisement slots to said proxy; said proxy transrrdtting one or more advertisements in said one or more advertisement slots and said information to be displayed to a client. 2. The method of claim 1 further comprising transmitting information to be displayed to said proxy while withholding said location of said advertisement slot prior to determining if said proxy agrees to terms for inserting said one or more advertisements. 3. The method of claim 1 further comprising negotiating a price for said proxy to insert one or more advertisements. 4. The method of claim 1 further comprising: said proxy obtaining profile information relating to a client; and said proxy inserting said one or more advertisements based on said profile information. 5. A method of advertising comprising: transmitting an advertising module to a proxy; said advertising module deterrnining if a proxy agrees to terms for inserting one or more advertisements; and said advertising module informing said proxy of a location of one or more advertisement slots if said proxy agrees to terms for inserting said one or more advertisements. 6. The method of claim 5 wherein said module is an applet. 7. The method of claim 5 further comprising said module negotiating with said proxy for a price for inserting said one or more advertisements. 8. The method of claim 5 further comprising: said module collecting advertisement insertion information; said module transmitting said collected information to a server in a batch. 9. A system comprising a client; a server, said server configured to: determine if a proxy agrees to terms for inserting one or more advertisements; if said proxy does not agree to terms for inserting one or more advertisements, transmitting information to be displayed while withholding a location of one or more advertisement slots to said proxy; if said proxy agrees to terms for inserting one or more advertisements, transmitting a location of one or more advertisement slots to said proxy; said proxy configured to: negotiate for inserting one or more advertisements; and transmit one or more advertisements in said one or more advertisement slots and said information to be displayed to said client. 10. The system of claim 9 wherein said server is further configured to transmit information to be displayed to said proxy while withholding said location of said one or more advertisement slots prior to determining if said proxy agrees to terms for inserting said one or more advertisements. 11. A system comprising: a proxy, said proxy configured to negotiate for inserting one or more advertisements; an advertising module, said advertising module configured to: determine if said proxy agrees to terms for inserting one or more advertisements; informing said proxy of a location of one or more advertisement slots if said proxy agrees to terms for inserting said one or more advertisements; and a server, said server configured to transmit said advertising module to a proxy. 12. The system of claim 11 wherein said advertising module is an applet. 13. The system of claim 11 wherein said advertising module is further configured to: collect advertisement insertion information; transmit said collected information to a server in a batch. 14. A computer program product comprising a computer usable medium having computer readable program code embodied therein configured to advertise, said computer program product comprising: computer readable code configured to cause a computer to determine if a proxy agrees to terms for inserting one or more advertisements; if said proxy does not agree to terms for inserting one or more advertisements, computer readable program code configured to cause a computer to transmit information to be displayed while withholding a location of one or more advertisement slots to said proxy; if said proxy agrees to terms for inserting one or more advertisements, computer readable program code configured to cause a computer to: transmit a location of one or more advertisement slots to said proxy; said proxy transmitting one or more advertisements in said one or more advertisement slots and said information to be displayed to a client. 15. The computer program product of claim 14 further comprising computer readable program code configured to cause a computer to transmit information to be displayed to said proxy while withholding said location of said one or more advertisement slots prior to determining if said proxy agrees to terms for inserting said one or more advertisements. 16. The computer program product of claim 14 further comprising computer readable program code configured to cause a computer to negotiate a price for said proxy to insert one or more advertisements. 17. The computer program product of claim 14 further comprising: computer readable program code configured to cause said proxy to obtain profile information relating to a client; and computer readable program code configured to cause said proxy to insert said one or more advertisements based on said profile information. 18. A computer program product comprising a computer usable medium having computer readable program code embodied therein configured to advertise, said computer program product comprising: computer readable code configured to cause a computer to transmit an advertising module to a proxy; computer readable code configured to cause said advertising module to determine if a proxy agrees to terms for inserting one or more advertisements; and computer readable code configured to cause said advertising module to inform said proxy of a location of one or more advertisement slots if said proxy agrees to terms for inserting said one or more advertisements. 19. The computer program product of claim 18 wherein said module is an applet. 20. The computer program product of claim 18 further comprising computer readable code configured to cause said advertising module to negotiate with said proxy for a price for inserting said one or more advertisements. 21. The computer program product of claim 18 further comprising: computer readable code configured to cause said advertising module to collect advertisement insertion information; and computer readable code configured to cause said advertising module to transmit said collected information to a server in a batch.

Inventors: BAEHR GEOFFREY, GUPTA AMIT, BAEHR, GEOFFREY, GUPTA, AMIT
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 1999
Main classification: G06F17
IPC codes: G06F13, G06F17, G06Q10, G06Q30, G09F19