Patent ID: 11870837
Assignee: nan
Field: Computer technology (Electrical engineering)
Classification: CPC G  H | IPC G  H

Claim 15:
16. A computer-implemented method for establishing a dynamically enhanced browsing session with an arbitrary web application and transparently proxying said arbitrary web application to one or many users, the steps of the method comprising:
establishing a communication session between: (a) a proxy server and (b) a web application served at a URL resolving to an origin server;
generating one or more unique URLs which resolve to the proxy server and serve a wrapped web application with dynamically added functionality in addition to those provided by the origin server;
distributing the generated unique URLs among one or more participating user agents, of which one user agent serves as a “leader” and other as “followers”;
injecting intercepting hooks into client-side code of the arbitrary web application, including event handlers, recurrent tasks, DOM construction logic and/or any other functionality configured by the user;
executing the modified client-side code in the leader user agent;
capturing DOM content and its mutations and propagating them from the leader to the followers of the co-browsing session;
capturing user interaction events (such as input or page scrolling) in follower user agents and propagating them to the leader user agent for processing (“control switching” functionality);
achieving symmetrical user experience for multiple co-browsing users through the composition of co-browsing sessions, allowing each user agent act as a leader inside a corresponding browsing context;
embedding aforementioned co-browsing contexts in nested iframes within a custom UI application, that orchestrates them by the means of standard browser APIs such as postMessage and MessageChannel;
running a set of server-side components that store and manage the state of the browsing sessions and allow for successful session restoration in the event of lost network connection with one or more user agents;
providing, by a pluggable framework, a full virtualization of a third-party web application using a combination of:
a content-aware network proxy able to intercept and rewrite traffic up to the application layer, including HTTP requests and responses, WebSocket traffic and other commonly used web communication protocols;
a Javascript sandboxing engine able to intercept and redefine expressions in Javascript source code such as function calls, property descriptors (getters/setters) and metaprogramming features such as ‘eval( )’ and Reflect API, The sandbox transformations can be applied during the network traffic processing as well as on the client side, by the user agent (web browser);

HTML and CSS rewrite engines capable of changing certain values in the corresponding source code (such as URLs and attribute values), for ensuring a transparent browsing experience and/or intentional changes, e.g. by providing security and privacy functionality;
a set of application programming interfaces (APIs) allowing a user to configure the behaviour of intercepting handlers of the virtualization framework, and/or provide custom implementations of those handlers.