systems and methods for extending or modifying the behavior of mobile (downloadable) software, such as JavaScript, HTML, and/or data that can be downloaded to a client device. One or more morphing agents are provided for translating and modifying code and data from a software source, such as a remote server. Each morphing agent translates and modifies one or more particular types of code. For example, one morphing agent may be provided for processing JavaScript code and another may be provided for processing HTML code and data. Each morphing agent typically includes a tokenizer module, a parser module and a translation module, each of which follows specific rule sets. Original software content is first tokenized according to a set of tokenizer rules, and subsequently parsed according to a set of parser rules. The parsed code is then translated according to the set of translator rules to produce the desired modified software content. An exception handler module is also provided for implementing exception rules when an exception occurs.
|
35. A computer implemented method, comprising:
receiving a code segment over a network connection, the code segment including a first reference to information stored at a remote site, wherein usage of the first reference would cause a message to be sent to the remote site; and
modifying the code segment to be compatible with a runtime library, including translating the first reference to a second reference that is directed to a proxy server, wherein the compatibility for the modified code segment with the runtime library is arranged in accordance with tokenized relationships for the modified code segment and wherein usage of the second reference in a client device causes a message that identifies the information stored at the remote site to be sent to the proxy server instead of the remote site, and wherein the proxy sends a request for the identified information to the remote site for the client device.
28. A computer-implemented method of modifying code to be compatible with a runtime library resident on a client device, the method comprising:
receiving a code segment by the client device from a proxy server, wherein the proxy server retrieved the code segment from a remote source in response to a first request from the client device for information stored at the remote source;
tokenizing the code segment into a plurality of tokens;
parsing the plurality of tokens so as to determine one or more relationships between the plurality of tokens;
translating the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library, wherein subsequent usage of the modified code segment at the client device causes a second request identifying information stored at the remote source to be sent to the proxy server that requests the identified information from the remote source for the client device; and
wherein tokenizing, parsing and translating are performed by the client device.
15. A computer readable medium containing instructions for controlling a computer system to modify a code segment received from a remote source to be compatible with a runtime library, by:
tokenizing the code segment into a plurality of tokens, wherein the code segment includes a first reference that identifies information stored at the remote source;
parsing the plurality of tokens so as to determine relationships between the plurality of tokens;
translating the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library, including translating the first reference to a second reference that is
directed to a proxy server such that the modified code segment includes the second reference directed to the proxy server,
wherein usage of the second reference in a client device causes a request identifying the information stored at the remote source to be sent to the proxy server rather than the remote source, and wherein the proxy server requests the identified information from the remote source.
1. A computer implemented method of modifying code to be compatible with a runtime library, wherein the code is received from a remote source, the method comprising the steps of:
receiving a code segment from the remote source, wherein the code segment
includes a first reference that identifies information stored at the remote source; tokenizing the code segment into a plurality of tokens;
parsing the plurality of tokens so as to determine relationships between the plurality of tokens;
translating the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library, including translating the first reference to a second reference that is directed to a proxy server such that the modified code segment includes the second reference directed to the proxy server,
wherein usage of the second reference in a client device causes a request identifying the information stored at the remote source to be sent to the proxy server rather than the remote source, and wherein the proxy server requests the identified information from the remote source.
32. A computer-implemented method of modifying code to be compatible with a runtime library resident on a client device, the method comprising:
receiving a code segment by a proxy server, wherein the proxy server retrieved the code segment from a remote source in response to a first request from the client device identifying information stored at the remote source;
tokenizing the code segment into a plurality of tokens;
parsing the plurality of tokens so as to determine one or more relationships between the plurality of tokens; and
translating the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library, wherein usage of the modified code segment at the client device causes a second request identifying information stored at the remote source to be sent to the proxy server that subsequently requests the identified information from the remote source for the client device; and
wherein one or more of the steps of tokenizing, parsing and translating are performed by the client device, and wherein all other steps are performed by the proxy server.
40. A computer implemented method of establishing a persistent communication session between a client system and a proxy server wherein the client system is able to interact with a plurality of remote sites via the same proxy server across multiple network requests, the method comprising:
establishing a communication session between the client system and a proxy server;
receiving at the proxy server a plurality of first code segments from a corresponding plurality of remote sites, each first code segment including a first reference to information stored at the corresponding remote site, wherein usage of the first reference in each first code segment would cause a network request to be sent to the corresponding remote site;
translating the first reference of each first code segment to a second reference that modifies each first code segment and identifies the corresponding remote site but is directed to the proxy server, wherein usage of each modified first code segment's second reference in the client system causes a network request to be sent to the proxy server rather than the corresponding remote site, and wherein a compatibility for the modified first code segment with a runtime library is arranged in accordance with tokenized relationships for each modified first code segment; and
using, in the client system, one or more of the second references of each modified first code segment such that one or more corresponding network requests for information stored by the remote sites are sent to the proxy server, and wherein the proxy server sends requests originated by the client system for the identified information to the remote sites.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
wherein the code segment includes one or more first elements selected from the group consisting of:
digits, characters, keywords, literals, identifiers, operators, expressions, statements, variables, regular expressions, functions, arguments and programs;
wherein the modified code segment includes one or more second elements selected from the group consisting of:
digits, characters, keywords, literals, identifiers, operators, expressions, statements, variables, regular expressions, functions, arguments and programs; and wherein the second elements are compatible with the runtime library.
16. The computer readable medium of
17. The computer readable medium of
18. The computer readable medium of
19. The computer readable medium of
20. The computer readable medium of
21. The computer readable medium of
22. The computer readable medium of
23. The computer readable medium of
wherein the code segment includes one or more first elements selected from the group consisting of:
digits, characters, keywords, literals, identifiers, operators, expressions, statements, variables, regular expressions, functions, arguments and programs;
wherein the modified code segment includes one or more second elements selected from the group consisting of:
digits, characters, keywords, literals, identifiers, operators, expressions, statements, variables, regular expressions, functions, arguments and programs; and wherein the second elements are compatible with the runtime library.
24. The computer-implemented method of
25. The computer-implemented method of
26. The computer readable medium of
27. The computer readable medium of
29. The method of
31. The method of
translating a first function call to a second function call compatible with the runtime library;
translating a function call to variable compatible with the runtime library; and
translating a first variable to a second variable compatible with the runtime library; and
translating a variable to a function call compatible with the runtime library.
33. The method of
34. The method of
translating a first function call to a second function call compatible with the runtime library;
translating a function call to variable compatible with the runtime library; and translating a first variable to a second variable compatible with the runtime
library; and
translating a variable to a function call compatible with the runtime library.
36. The method of
37. The method of
38. The method of
39. The method of
41. The method of
42. The method of
43. The method of
44. The method of
|
This application is related to U.S. Provisional Patent Application Ser. No. 60/212,060, filed Jun. 16, 2000, entitled “Mobile Software Morphing Agent,” the disclosure of which is hereby incorporated by reference in its entirety.
A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
A computer program listing appendix, submitted on a compact disc, includes Appendices A, B1, B2, B3 and C as referred to herein. The computer program listing appendix is hereby incorporated by reference herein.
The present invention relates generally to modifying and translating information received from a remote source, and more particularly to modifying and translating executable code and data received from a web site.
The World Wide Web (WWW), or “the Web”, is now the premier outlet to publish information of all types and forms. Documents published on the web, commonly called Web pages, are typically published using a markup language such as HTML (or Hyper Text Markup Language), which sets standards for the formatting of documents. Additionally, These standards make it possible for people to read and understand documents no matter which program they use for that purpose. Often included in an HTML formatted web page are software code segments attached as part of the page. Examples of such software include JavaScript, Java and ActiveX commands. If a user's browser is enabled to process the software code, the code will typically be processed to provide additional windows, e.g., pop-up windows, forms and other content for presentation to the user.
Typically, a user accesses pages on the Web through a web portal. One common portal is Yahoo located at URL: http://www.yahoo.com/. When a user selects a reference such as a URL presented on a page provided by the portal, the users browser will access another page associated with the URL at a remote site. From then on, the user will be connected to the remote server unless the browser is instructed to return to the portal (e.g., via a “back” button or a “home” button displayed on the browser). In the commerce context, for example, a user may access a remote commerce site and conduct transactions, e.g., to purchase a product. In this case, the portal is completely unaware of any transactions or information exchange between the user and the remote site.
It is therefore desirable for a web portal to provide a page from a remote site, such as a remote commerce site, via a special proxy server to a user and to keep the user connected to the proxy so that information exchange between the user and remote server can be monitored by the proxy. However, it may be necessary to modify HTML formatting, HTML links and JavaScript code associated with a page provided by a remote site so that information exchange activity is directed to the proxy. For example, it is desirable to translate a link directed to a particular site into a link directed to the proxy so that the proxy handles access to the desired page from the particular site.
Accordingly, it is desirable to provide a configurable system to parse and translate downloadable software and/or content without additional development efforts from the original software and content provider. Additionally, it is desirable to provide an adaptive system to serve a corresponding software morphing agent to handle the original software and content.
The present invention provides systems and methods for extending or modifying the behavior of executable code and/or data that can be downloaded to a client device (e.g., a PC, laptop, PalmPilot, PDA or other hand-held communication device, etc.) implementing a browser program (e.g., Microsoft Internet Explorer, Netscape Navigator, a microbrowser such as a WAP enabled browser, etc.). The present invention is particularly useful for modifying web content, such as a web page received from a web site, including JavaScript code and/or HTML data.
According to the invention, one or more morphing agents are provided for translating and modifying code and data from a software source, such as a remote server. Each morphing agent translates and modifies a particular type of code. For example, one morphing agent may be provided for processing JavaScript code and another may be provided for processing HTML code and data. It will be appreciated that one morphing agent may be provided for processing multiple types of code, for example, one morphing agent for processing JavaScript and HTML code. Each morphing agent typically includes a tokenizer module, a parser module and a translation module, each of which implements specific rule sets. Original software content is first tokenized according to a set of tokenizer rules, and subsequently parsed according to a set of parser rules to determine relationships between the tokens. The parsed code is then translated according to the set of translator rules to produce the desired modified software content. An exception handler module is also provided for implementing exception rules when an exception occurs.
In operation, a user establishes a connection with a proxy server using the browser program on the client device, and the proxy server establishes a connection with the software source. The original software content is downloaded by the proxy server. All modules of a particular morphing agent can be located either on the client device or on the proxy server, or they may be spread between the client device and proxy server. Thus, if all modules reside on the proxy server, the morphing agent modifies the original software content and the modified content is downloaded to the client device. Similarly, if all modules reside on the client device, the original content is downloaded to the client device for processing by the morphing agent at the client device. If some of the modules reside on the proxy server, those module process the original content and the partially processed code is downloaded to the client device for processing by the remaining modules.
According to an aspect of the present invention, a computer implemented method is provided for modifying code to be compatible with a runtime library, wherein the code is received from a remote source. The method typically comprises the steps of receiving the code segment from the remote source, tokenizing the code segment into a plurality of tokens, and parsing the plurality of tokens so as to determine relationships between the plurality of tokens. The method also typically includes the step of translating the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library.
According to another aspect of the present invention, a computer readable medium containing instructions for controlling a computer system to modify a code segment received from a remote source to be compatible with a runtime library is provided. The instructions typically include instructions to tokenize the code segment into a plurality of tokens, and parse the plurality of tokens so as to determine relationships between the plurality of tokens. The instructions also typically include instructions to translate the code segment into a modified code segment based on the determined relationships between the tokens such that the modified code segment is compatible with the runtime library.
Reference to the remaining portions of the specification, including the drawings and claims, will realize other features and advantages of the present invention. Further features and advantages of the present invention, as well as the structure and operation of various embodiments of the present invention, are described in detail below with respect to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.
Several elements in the system shown in
According to one embodiment as will be described in more detail below, proxy server 20 and/or clients 30, and all of their related components are operator configurable using an application including computer code run using a central processing unit such as an Intel Pentium processor or the like. Computer code for operating and configuring proxy server 20 and/or clients 30 as described herein is preferably stored on a hard disk, but the entire program code, or portions thereof, may also be stored in any other memory device such as a ROM or RAM, or provided on any media capable of storing program code, such as a compact disk medium, a DVD, a floppy disk, or the like. Additionally, the entire program code, or portions thereof may be downloaded to clients 30 or otherwise transmitted as is well known, e.g., from proxy server 20 over the Internet, or through any other conventional network connection as is well known, e.g., extranet, VPN, LAN, etc., using any communication protocol as is well known.
In general, a user accesses and queries proxy server 20, servers 501 to 50N, and other servers through a client 30 to view and download content such as news stories, advertising content, search query results including links to various websites and so on. Such content can also include other media objects such as video and audio clips, URL links, graphic and text objects such as icons and links, and the like. Additionally, such content is typically presented to the user as a web page formatted according to downloaded JavaScript code and HTML code and data as is well known. It will be appreciated that the techniques of the present invention are equally applicable to processing other types of code such as Java code and ActiveX code, and any markup language, including any instance of SGML, such as XML, WML, HTML, DHTML and HDML.
According to one embodiment of the invention, a user preferably accesses servers 501 to 50N through proxy server 20. In the context of electronic commerce, for example, a user may access a local commerce site that provides access (via URL or other selectable links or references) to remote commerce sites, such as individual commerce web sites. One such system is described in U.S. patent application Ser. No. 09/372,350, entitled “Electronic Commerce System for Referencing Remote Commerce Sites at a Local Commerce Site,” filed Aug. 11, 1999, the contents of which are hereby incorporated by reference in their entirety for all purposes. As described therein, a Remote Merchant Integration Server (RMIS) provides an interface to multiple merchant web sites. A user that accesses a remote commerce site through the RMI proxy is presented with a slightly modified version of the commerce site by the RMI server. Any requests from the user to a remote commerce site is managed by the RMI server and any responses by the remote commerce site are also managed by the RMI server transparently to both the user and the remote commerce site. One advantage of such a system includes the ability to provide, in the commerce context, a single shopping basket to a user who desires to shop at multiple remote commerce sites. Another advantage is the ability to track transactional information associated with users' purchases at the various merchant sites. An example of such a system can be located on the Internet at the Yahoo! Shopping site (URL: http://shopping.yahoo.com/). In this example, it is desirable to modify JavaScript code and HTML code and data received from the remote commerce sites using the techniques of the present invention to facilitate integration of the RMI system and to maintain user connection to the RMI system during transactions with the remote commerce sites.
According to an embodiment of the present invention, a set of different software morphing agents are provided for handling different kinds of software technologies. For example, one morphing agent (MA) is provided for handling JavaScript and another MA is provided for handling HTML. The MA for each type of the original third-party software technology is delivered to the appropriate device(s), e.g., proxy server 20 and/or a client device 30.
In general, if the code to be modified includes portions that are dynamically assembled, it is preferred that all components for the MA be downloaded to the client device (configuration a). One example of dynamically assembled code in JavaScript could be represented as x+y+“s”, where the portion “s” is dynamically assembled or generated by the browser application resident on the client device. Thus, it is preferred that all components of a JavaScript MA be installed on the client side, e.g., at client device 130 to parse and translate dynamically assembled code such as portion “s.”
In operation, before the original software content 260 is processed or executed, all necessary MA components for modifying that particular software type must be installed at the client device 130 (via downloading) and/or at a proxy server 120. The MA then “morphs” (e.g., tokenizes, parses and translates) the original software content 260 into the desired software content 270. Optionally provided exception handler 240 handles any errors that occur during the morphing process. In one embodiment, if an exception, or error, occurs during the morphing process, the exception handler causes the process to be bypassed. The tokenizer 210, parser 220, translator 230, and exception handler 240 are all configurable via their respective rule sets (i.e. 215, 225, 235, 245). The desired output 270 can then work together with the client-side runtime library 250 (via downloading) in a user's browser.
Once the original software content is received, tokenizer module 210 analyzes the string of characters representing a code segment and maps the characters to various token types according to the tokenizer rule set 215. Typical JavaScript token types include string, integer, keyword, identifier, etc. Parser 220 then parses the resulting set of tokens according to the parser rule set 225 to determine relationships between the token types associated with the code segment being analyzed. In one embodiment, a hierarchical tree structure relating the various tokens is created. One example of tokenizer and parser code useful for tokenizing and parsing JavaScript is the NGS JavaScript Interpreter which can be located and downloaded from the Internet at URL: http://www.ngs.fi/js/, the contents of which are hereby incorporated for reference for all purposes. Translator module 230 then transforms the code segment into the desired software content 270 based on the specific translator rule set 235, the token types, and the relationships between the tokens determined by parser 220.
It may be necessary to modify the above NGS JavaScript Interpreter (tokenizer and parser, in particular) to run more efficiently when integrated with a browser application such as Microsoft Internet Explorer or Netscape Navigator. Appendix B includes examples of a modified tokenizer and parser from NGS JavaScript Interpreter, translator code and code for integrating the modified tokenizer and parser with a Browser, according to one embodiment of the present invention.
A typical translator module (230+235) of an MA for transforming JavaScript transforms function calls and variables to new function calls and variables to be used together with a client-side runtime library 250 in a user's browser. For example, a function call “open( )” is translated according to one embodiment as follows:
“open (URL, TARGET, OPT)” is translated to
“new_function1(URL, TARGET, OPT)”, where the function “new_function1( )” is implemented in the client-side runtime library.
Similarly, a variable assignment expression is translated according to one embodiment as follows:
“OBJ.location=URL” is translated to
“OBJ.location=new_function2(URL)”, where the function “new_function2” is implemented in the client-side runtime library.
Appendix C illustrates examples of translation rules (e.g., 235) for translating function calls and variables according to one embodiment of the present invention.
While the invention has been described by way of example and in terms of the specific embodiments, it is to be understood that the invention is not limited to the disclosed embodiments. To the contrary, it is intended to cover various modifications and similar arrangements as would be apparent to those skilled in the art. Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
Stesin, Lev, Mukherjee, Arup, Chiou, Greg I.
Patent | Priority | Assignee | Title |
10013691, | Nov 10 2010 | Amazon Technologies, Inc. | Separating control of network sites |
10129289, | Mar 11 2016 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Mitigating attacks on server computers by enforcing platform policies on client computers |
10187408, | Apr 17 2014 | SHAPE SECURITY, INC. | Detecting attacks against a server computer based on characterizing user interactions with the client computing device |
10212130, | Nov 16 2015 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Browser extension firewall |
10212137, | Jan 21 2014 | SHAPE SECURITY, INC | Blind hash compression |
10212173, | Mar 03 2016 | SHAPE SECURITY, INC. | Deterministic reproduction of client/server computer state or output sent to one or more client computers |
10216488, | Mar 14 2016 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Intercepting and injecting calls into operations and objects |
10230718, | Jul 07 2015 | SHAPE SECURITY, INC. | Split serving of computer code |
10298599, | Sep 19 2014 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Systems for detecting a headless browser executing on a client computer |
10367903, | May 21 2015 | SHAPE SECURITY, INC. | Security systems for mitigating attacks from a headless browser executing on a client computer |
10375026, | Oct 28 2015 | SHAPE SECURITY, INC. | Web transaction status tracking |
10447726, | Mar 11 2016 | SHAPE SECURITY, INC. | Mitigating attacks on server computers by enforcing platform policies on client computers |
10567363, | Mar 03 2016 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Deterministic reproduction of system state using seeded pseudo-random number generators |
10567386, | Jul 07 2015 | SHAPE SECURITY, INC. | Split serving of computer code |
10567419, | Jul 06 2015 | SHAPE SECURITY, INC | Asymmetrical challenges for web security |
10699090, | Dec 02 2016 | Koupon Media, Inc. | Using dynamic occlusion to protect against capturing barcodes for fraudulent use on mobile devices |
10798202, | May 21 2015 | SHAPE SECURITY, INC. | Security systems for mitigating attacks from a headless browser executing on a client computer |
10826872, | Nov 16 2015 | SHAPE SECURITY, INC. | Security policy for browser extensions |
10868819, | Sep 19 2014 | SHAPE SECURITY, INC. | Systems for detecting a headless browser executing on a client computer |
10880254, | Oct 31 2016 | ACTIANCE, INC | Techniques for supervising communications from multiple communication modalities |
11171925, | Oct 28 2015 | SHAPE SECURITY, INC. | Evaluating and modifying countermeasures based on aggregate transaction status |
11250492, | Mar 22 2016 | PAYPAL, INC. | Automatic population of data on an internet web page via a browser plugin |
11336604, | Oct 31 2016 | ACTIANCE, INC. | Techniques for supervising communications from multiple communication modalities |
11481409, | Aug 01 2013 | ACTIANCE, INC. | Unified context-aware content archive system |
11880389, | Aug 01 2013 | ACTIANCE, INC. | Unified context-aware content archive system |
7333990, | Jun 22 2004 | Oracle America, Inc | Dynamic reverse proxy |
7428573, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communication systems |
7698694, | Jun 08 2005 | Cisco Technology, Inc. | Methods and systems for transforming an AND/OR command tree into a command data model |
7779398, | Jun 08 2005 | Cisco Technology, Inc. | Methods and systems for extracting information from computer code |
7784036, | Jun 08 2005 | Cisco Technology, Inc. | Methods and systems for transforming a parse graph into an and/or command tree |
7849134, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
7861242, | Oct 16 2002 | Aramira Corporation | Mobile application morphing system and method |
7873707, | Oct 27 2004 | Oracle America, Inc | Client-side URL rewriter |
7908594, | Jul 29 2005 | Cisco Systems, Inc | External programmatic interface for IOS CLI compliant routers |
7953886, | Jul 08 2005 | Cisco Systems, Inc | Method and system of receiving and translating CLI command data within a routing system |
8150814, | Apr 07 2009 | Business Objects Software Ltd.; Business Objects Software Ltd | System and method of data cleansing using rule based formatting |
8176186, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
8271688, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
8312101, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
8321580, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communication systems |
8386637, | Mar 18 2005 | RIVERBED TECHNOLOGY LLC | Connection forwarding |
8402085, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
8666828, | Nov 10 2010 | Amazon Technologies, Inc | Separating control of network sites |
8762455, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction accelerator for client-server communications systems |
8793341, | Nov 06 2000 | CRFD RESEARCH, INC | Web page content translator |
8856222, | Oct 30 2002 | RIVERBED TECHNOLOGY LLC | Transaction acceleration for client-server communication systems |
8862503, | Apr 28 2011 | Criteo Technology SAS | Method of tracking software application internet downloads |
9063765, | Apr 28 2008 | Kaazing Corporation | System and methods for distributed execution of computer executable programs utilizing asymmetric translation |
9106606, | Feb 05 2007 | F5 Networks, Inc | Method, intermediate device and computer program code for maintaining persistency |
9313187, | Nov 10 2010 | Amazon Technologies, Inc | Network site customization using proxies |
9405910, | Jun 02 2014 | SHAPE SECURITY, INC. | Automatic library detection |
9413776, | Feb 17 2012 | SHAPE SECURITY, INC. | System for finding code in a data flow |
9479526, | Nov 13 2014 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Dynamic comparative analysis method and apparatus for detecting and preventing code injection and other network attacks |
9609006, | Mar 15 2013 | SHAPE SECURITY, INC | Detecting the introduction of alien content |
9800602, | Sep 30 2014 | SHAPE SECURITY, INC | Automated hardening of web page content |
9917850, | Mar 03 2016 | SHAPE SECURITY, INC.; SHAPE SECURITY, INC | Deterministic reproduction of client/server computer state or output sent to one or more client computers |
9954893, | Sep 23 2014 | SHAPE SECURITY, INC | Techniques for combating man-in-the-browser attacks |
9967331, | Feb 05 2007 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
9973519, | Mar 15 2013 | SHAPE SECURITY, INC | Protecting a server computer by detecting the identity of a browser on a client computer |
9986058, | May 21 2015 | SHAPE SECURITY, INC. | Security systems for mitigating attacks from a headless browser executing on a client computer |
Patent | Priority | Assignee | Title |
5787431, | Dec 16 1996 | CODEGEAR LLC | Database development system with methods for java-string reference lookups of column names |
5884083, | Sep 20 1996 | Open Invention Network, LLC | Computer system to compile non-incremental computer source code to execute within an incremental type computer system |
5890171, | Aug 06 1996 | Microsoft Technology Licensing, LLC | Computer system and computer-implemented method for interpreting hypertext links in a document when including the document within another document |
5895454, | Apr 17 1997 | HANGER SOLUTIONS, LLC | Integrated interface for vendor/product oriented internet websites |
5987256, | Sep 03 1997 | HANGER SOLUTIONS, LLC | System and process for object rendering on thin client platforms |
6038573, | Apr 04 1997 | CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT | News story markup language and system and process for editing and processing documents |
6128644, | Mar 04 1998 | Fujitsu Limited | Load distribution system for distributing load among plurality of servers on www system |
6286029, | Apr 28 1997 | SABRE GLBL INC | Kiosk controller that retrieves content from servers and then pushes the retrieved content to a kiosk in the order specified in a run list |
6286138, | Dec 31 1998 | International Business Machines Corporation | Technique for creating remotely updatable programs for use in a client/server environment |
6292936, | Nov 12 1998 | International Business Machines Corporation | Enabling multiple runtime processors in an interpreter-based embedded scripting system |
6305008, | Nov 13 1998 | Microsoft Technology Licensing, LLC | Automatic statement completion |
6393389, | Sep 23 1999 | Xerox Corporation | Using ranked translation choices to obtain sequences indicating meaning of multi-token expressions |
6434742, | May 10 1999 | Alcatel Lucent | Symbol for automatically renaming symbols in files during the compiling of the files |
6499052, | Aug 11 1999 | OATH INC | Electronic commerce system for referencing remote commerce sites at a local commerce site |
6523171, | Dec 29 1998 | International Business Machines Corporation | Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL) |
6556218, | Dec 10 1998 | International Business Machines Corporation | Method and apparatus for generating dips for use with Java beans |
6718390, | Jan 05 1999 | Cisco Technology, Inc | Selectively forced redirection of network traffic |
6763496, | Mar 31 1999 | Microsoft Technology Licensing, LLC | Method for promoting contextual information to display pages containing hyperlinks |
6865735, | Oct 07 1997 | University of Washington | Process for rewriting executable content on a network server or desktop machine in order to enforce site specific properties |
6925445, | Dec 20 1999 | CATHAS ADVANCED TECHNOLOGIES, LLC | Web-based design of software for keep-alive boards |
20010016878, | |||
20010034743, | |||
20050021862, | |||
WO111485, |
Date | Maintenance Fee Events |
Nov 04 2009 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Nov 06 2013 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 23 2017 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jun 06 2009 | 4 years fee payment window open |
Dec 06 2009 | 6 months grace period start (w surcharge) |
Jun 06 2010 | patent expiry (for year 4) |
Jun 06 2012 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 06 2013 | 8 years fee payment window open |
Dec 06 2013 | 6 months grace period start (w surcharge) |
Jun 06 2014 | patent expiry (for year 8) |
Jun 06 2016 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 06 2017 | 12 years fee payment window open |
Dec 06 2017 | 6 months grace period start (w surcharge) |
Jun 06 2018 | patent expiry (for year 12) |
Jun 06 2020 | 2 years to revive unintentionally abandoned end. (for year 12) |